Существует несколько частей к поисковой системе. Вообще говоря, безнадежно общим способом (люди, не стесняются редактировать , если Вы чувствуете, можно добавить лучшие описания, ссылки, и т.д.):
поисковый робот . Это - часть, которая проходит сеть, захватывает страницы и хранит информацию о них в некоторое центральное хранилище данных. В дополнение к самому тексту Вы захотите вещи как время, Вы получили доступ к нему и т.д. Поисковый робот должен быть достаточно умным для знания, как часто поразить определенные домены, для повиновения соглашению robots.txt, и т.д.
синтаксический анализатор . Это считывает данные, выбранные поисковым роботом, синтаксические анализы это, сохраняет любые метаданные, это должно, выбрасывает спам, и возможно делает предложения к поисковому роботу на том, что выбрать в следующий раз вокруг.
индексатор . Читает материал синтаксический анализатор, проанализированный, и создает инвертированные индексы в условия, найденные на веб-страницах. Это может быть столь умно, как Вы хотите, чтобы он был - применяют методы обработки естественного языка, чтобы сделать индексы понятий, вещей перекрестной ссылки, добавить синонимы, и т.д.
занимающий место механизм . Учитывая несколько тысяч URL, соответствующих "яблоку", как Вы решаете, какой результат является лучшим? Выступ индекс не дает Вам ту информацию. Необходимо проанализировать текст, связывающуюся структуру, и безотносительно других частей, Вы хотите посмотреть на и создать некоторые очки. Это может быть сделано полностью на лету (это действительно твердо), или на основе некоторых предварительно вычисленных понятий "экспертов" (см. PageRank, и т.д.).
фронтэнд . Что-то должно получить пользовательские запросы, поразить центральный механизм и ответить; это что-то должно быть умным о кэшировании результатов, возможно смешивании в результатах других источников, и т.д. Это имеет свой собственный набор проблем.
Мой совет - выбирает, который из этих интересов Вы больше всего, загрузите Lucene или Xapian или любой другой проект с открытым исходным кодом там, вытащите бит, который делает одну из вышеупомянутых задач и пытается заменить ее. Хотелось бы надеяться, с чем-то лучше:-).
Некоторые ссылки, которые могут оказаться полезными: "Гибкий поисковый робот" , статья из Эстонии (на английском языке) Поисковая система Сфинкса , индексация и поисковый API. Разработанный для большого DBS, но модульный и открытый. "Информационный поиск , учебник о IR от Manning и др. Хороший обзор того, как индексы создаются, различные проблемы, которые подходят, а также некоторое обсуждение проверки, и т.д. Бесплатная онлайн версия (на данный момент)!
Только что наткнулся на другую альтернативу, использующую задачу записывающего устройства. Ближе, так как вам не нужно вводить новые цели.
<compile >
<record name="log.txt" action="start"/>
<javac ...
<record name="log.txt" action="stop"/>
<compile/>
вы можете использовать tee для любого процесса в командной строке для вывода на консоль и в файл:
>myprocess.sh | tee myprocess.log
выведет вывод myprocess.sh как на консоль, так и на myprocess.log.
используйте задачу ant с атрибутом вывода для вызова цели, которая имеет задачу javac.
например,
<target name="javac" depends="libs" description="Compile java source">
<mkdir dir="${classes.dir}" />
<ant target="actual-javac" output="javac.log"/>
</target>
<target name="actual-javac">
<javac .../>
</javac>
</target>