Поисковый движок FAIND: результаты поиска

Отображение результатов поиска

Формирование файла результатов - опция -listfiles

Составление удобного отчета о поиске опцией -listfiles:html

Выполнение действий для каждого найденного файла

Исполнение AWK-подобных скриптов

Поиск файлов и извлечение данных - опция -onceperfile

Отображаемый контекст

Ограничение числа найденных контекстов

Статистическая обработка данных

       поиск битых ссылок на сайте

Сортировка результатов

Автозамена сетевых путей

Результаты поиска

В ходе поиска поисковая машина формирует список просмотренных документов, удовлетворяющих заданным в запросе требованиям. Список результатов может иметь разный формат (простой текст, HTML, XML). Элементы этого списка обычно содержат имя файла (в некоторых случаях вместе с именем архива), параметры файла (размер, дата, формат), фрагмент текста с выделенными ключевыми словами запроса, и в случае включения алгоритмов интеллектуальной обработки - дополнительную информацию, например рубрики или реферат.

Кроме пассивного отображения результатов поиска, поисковый движок может исполнять простые AWK-подобные программы, выполняя более сложную обработку первичных результатов или формируя новый формат результатов.

Отображение результатов поиска

Алгоритм поиска по умолчанию (см. опцию -onceperfile) ищет только первый участок в тексте, удовлетворяющий условиям запроса. Соответствующий фрагмент (контекст фиксации) распечатывается (по умолчанию, если в ini-файле это не переопределено) на консоли:

результаты поиска в консоли

Чтобы не распечатывать найденный контекст фиксации, используйте опцию -showcontext=off, тогда на экране будут только имена подходящих файлов с информацией о формате файлов (MIME тип).

Чтобы печатать только имена подходящих файлов, используется опция -printfn. Формируемый таким образом список файлов можно направить на вход другой команды обычным способом:

faind ... -printfn > my_files.txt

Приведенный пример показывает, как сформировать список найденных файлов и записать его в простой текстовый файл (не XML, в отличие от результата опции -listfiles).

 

Формирование файла результатов поиска - опция -listfiles

Результат поиска можно сохранить в нескольких форматах в текстовые файлы: TXT (только имена файлов), HTML, XML и SQL скрипт.

 

Для сохранения в формате TXT используется опция

-listfiles:txt имя_файла

Файл будет иметь кодировку utf-8, чтобы не было проблем с национальными символами. Результирующий файл будет содержать только имена файлов (см. пример). Чтобы получить более информативную выдачу, используется конструкция

-tune txtres_rich -listfiles:txt имя_файла

Получаемый текстовый файл имеет такой вид (Ваш браузер может некорректно отображать utf-8 текст).

 

Опция -listfiles записывает результаты сканирования (список подходящих файлов) в указанный файл в формате XML. Например:

-faind c:\ -name *.txt -listfiles my_files.xml ...

Формат файла my_files - стандартный XML. Можно явно указать, что требуется XML результат: -listfiles:xml.

Пример получающегося XML файла можно посмотреть здесь.

 

Для сохранения в формате простого HTML используется опция -listfiles:html имя_файла (подробнее см. здесь).

 

С помощью опции -listfiles:sql имя_файла можно сформировать текстовый файл, содержащий SQL-команды INSERT для добавления результатов поиска в реляционную базу данных. Схема базы подробно описана здесь. Результат работы этой команды можно увидеть здесь.

Вместо формирования SQL-скрипта в виде файла можно направить результаты напрямую в базу данных через интерфейс ODBC с помощью опции -listfiles:odbc login/psw@alias. Предполагается, что таблицы в базе данных уже сформированы (см. их описание).

 

Формирование удобного отчета о поиске опцией -listfiles:html

Удобный для просмотра отчет о поиске получается с помощью опции -listfiles:html имя_файла. Создаваемый при этом файл имеет формат HTML и может быть просмотрен любым веб-браузером (поддерживающим utf-8 для отображения национальных символов, например - кириллицы). Использование юникода в странице результатов поиска позволяет избежать проблем при поиске в смеси многоязычных документов (см. примеры).

Пример такого файла результатов можно посмотреть здесь.

Возможно создание отчета в другом HTML-формате. Этот формат включается опцией

-tune htmlres_2 -listfiles:html имя_файла

Получаемый при этом результат немного более нагляден - см. пример.

Как видно, результаты представлены в виде, максимально приближенном к выдаче интернет-поисковиков типа Google. Гиперссылки на файлы, которые содержат интересующий текст (в приведенном примере они, конечно, не работают, так как ведут на файлы на локальном жестком диске компьютера, где была запущена утилита), позволяют быстро посмотреть содержимое найденных файлов. Обращаем Ваше внимание на то, что файлы, извлеченные из архивов, сохраняются в специальном временном каталоге (кэше распакованных файлов), поэтому ссылки на них также работоспособны без распаковки архивов.

 

Выполнение действий для каждого найденного файла

Можно выполнять системную команду или произвольную внешнюю программу для каждого найденного файла с помощью опции -exec (или -ok). Формат:

-exec ls '{}' ';'

Символы {} будут заменены на имя подходящего файла, символ ; ограничивает перечисление частей команды в командной строке. В вышеприведенном примере для ОС Linux или FreeBSD для каждого найденного файла будет выведена краткая информация о нем (этим займется стандартная команда ls).

Опция -ok отличается от -exec тем, что запрашивает с консоли подтверждение перед выполнением команды. Заметим, что опции -exec и -ok сделаны максимально похожими на одноименные опции в стандартной утилите find.

Выполняемая операция может быть именем скрипта (batch-файла), что позволяет делать достаточно сложную обработку файлов.

Синтаксис опций -ok и -exec взят из стандартной GNU/Linux утилиты find. При использовании опций надо учитывать, что поисковый движок faind умеет распаковывать архивы и обрабатывать файлы в архивах. Поэтому символы {} в действительности будут заменяться либо на имя обработанного файла, либо на имя файла в кэше распакованных/скачанных файлов (см. подробнее об этом кэше здесь). В любом случае это будет имя файла, содержимое которого соответствует содержимому обработанного файла.

Примеры использования этих опций мы выложили здесь.

Другая возможность пользовательской обработки результатов поиска основывается на использовании AWK-подобного языка программирования.

Поиск файлов и извлечение данных - опция -onceperfile

По умолчанию поисковая машина ищет первое соответствие паттерна запроса и участка текста в каждом документе. Такой режим работы соответствует поиску файлов. Если же нас интересует извлечение данных, то есть необходимо найти все участки текста в каждом файле (см. подходящий пример - сбор веб-адресов на HTML страничке), то применяется опция

-onceperfile=false

 

Отображаемый контекст при успешном поиске

По умолчанию в отображаемый контекст включается 8 лексем до первой и 8 лексем после последней зафиксированной лексемы. Это значение указывается в ini-файле. Для переопределения этого значения в конкретном запросе применяется опция

-lexems_margin=N

 

Ограничение числа найденных контекстов

По умолчанию, которое можно изменить в конфигурационном файле, поисковая машина находит при поиске все контексты, даже если их будет очень много. В некоторых ситуациях следует ограничивать количество результатов с помощью команды:

-maxhitcount=N

 

Статистическая обработка данных при поиске

Опция -report включает дополнительные возможности обработки просматриваемой области поиска. Ее синтаксис:

-report[:формат_результата] имя_отчета имя_файла_результата

Имя отчета - это условное наименование типа отчета, одно из предусмотренных поисковой машиной. В текущей версии доступны отчеты:

broken_href - битые ссылки в html-страницах

Имя файла отчета указывает, куда записывать сам отчет (например - список найденных битых ссылок).

Формат результата задает формат файла, например html (по умолчанию).

Поиск "битых" ссылок на сайте

Штатный паук (crawler) поискового движка умеет просматривать содержимое сайта, начиная с некоторой стартовой страницы, и искать некорректные ссылки. Это помогает поддерживать сайты с большим объемом текстового содержимого. Для выполнения работы лучше всего установить на компьютере, где выполняется разработка сайта, веб-сервер (Apache, конечно - для него есть специальные дистрибутивы). После запуска веб-сервера содержимое сайта становится доступным по локальному ip-адресу, обычно http://127.0.0.1 или  http://127.0.0.1:8080. Так как функции работы с Интернетом есть только в .NET версии поискового движка, то необходимо иметь файл faind.net.exe (см. страницу загрузки).

Командная строка:

faind.exe -uri http://127.0.0.1:8080 -href=true -same_domain=true -maxdepth=100 -unpack=false -index off -listfiles:html res.html -report broken_href broken.html

В результате будет создан файл broken.html, в который будет записана информация о битых ссылках - на какой странице ссылка находится и куда ведет.

 

Сортировка результатов

Если поиск сопровождается ранжированием документов (то есть используется одна из опций вычисления релевантности - см. к примеру -index calc_freq_rank), то формируемый список (в формате TXT, HTML или XML - см. опцию -listfiles) можно отсортировать, чтобы в начале списка отображались наиболее релевантные результаты поиска. Для этого используется команда -sort с дополнительным параметром - критерием сортировки. В версии 0.83 допускается единственный вариант сортировки - по частотной оценке релевантности:

-sort freq_rank

Полностью команда, которая выводит отсортированный по релевантности список найденных документов, может выглядеть примерно так:

faind -index domain=Мошков1 -index calc_freq_rank -sort freq_rank -listfiles:html res.html -sample "кошка"

Цветом выделена логически связанная группа опций, выполняющая вычисление релевантности и вывод результатов с сортировкой.

Область поиска должна быть проиндексирована с командой сбора статистики -index frequency.

Страница результатов поиска будет содержать информацию об оценке релевантности для каждого подходящего документа:

Результат поиска с ранжированием по релевантности

В версиях старше 1.00 доступны также следующие варианты сортировки:

-sort filename

сортировка по имени файлов (лексикографическая),

-sort size

сортировка по размеру файлов,

-sort cdate

сортировка по времени создания файлов,

-sort mdate

сортировка по времени последней модификации файлов.

Кроме того, появилась возможность явно задавать порядок сортировки - по убыванию (режим по умолчанию) или по возрастанию:

-sort asc

сортировка по возрастанию (например, сначала более старые файлы)

-sort desc

сортировка по убыванию (например, сначала самые крупные файлы). Две последние команды можно размещать в командной строке в произвольном месте.

Автозамена сетевых путей

Команда -subst_shares заменяет в файловых путях результатов локальные пути на сетевые, если для соответствующих папок настроен сетевой доступ.

Пусть, например, результаты поиска находятся в папке e:\common, которая "расшарена" с именем Common, а имя хоста - Host1. Тогда в результатах команды -listfiles вместо e:\common\File1.txt будет \\Host1\Common\File1.txt.

Данная команда используется для организации распределенного поиска - когда один поисковый движок запрашивает удаленный движок для поиска и просит привести имена файлов к виду, допускающему сетевой доступ.

Дополнительные материалы

Процедурный API поисковой системы

Где скачать поисковую систему и SDK

Скачать SDK поисковой системы с примерами и другие компоненты можно здесь поисковая система

  © Mental Computing 2010
изменено 01-Jun-10