FAIND - утилита для поиска текста и поисковый движок

Способы использования
Краткое описание
Название
Словари
Встроенная справка
Установка и использование
Настройка в ini-файле
Кэш распакованных файлов
Компиляция утилиты
Плагины
Примеры

Все опции
Режимы исполнения команд
Область поиска
Паттерн запроса
Ход поиска
Результаты поиска
Индексатор
Кодовые страницы и языки
Авторубрикатор

Поисковый сервер     

 

Способы использования

Скачайте и запустите инсталлятор поисковой системы.

Обычно программа устанавливается в каталог c:\program files\Integra. Запустите файл faind.exe с ключом -console. Обычно инсталлятор создает на рабочем столе ссылку для запуска faind с ключом -console.

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

-whereis integra

Она выполняет поиск строки 'integra' в именах файлов на всех жестких дисках. В случае успешного поиска имя найденного файла будет напечатано.

Создайте индекс для содержимого диска d:\ командами:

-index create_domain disk_d

-index domain=disk_d -dir d:\ -store_all_files=true

Распечатайте техническую информацию о созданном индексе:

-index domain=disk_d -index info

Создайте резервную копию файлов индексной базы для всех индексов двумя командами

-index backup e:\backups

-index domain=* -index backup e:\backups

Восстановите файлы индекса disk_d из резервной копии:

-index domain=disk_d -index restore e:\backups

Выполните поиск ключевого слова integra по индексу disk_d:

-index domain=disk_d -sample integra

Выполните поиск ключевого слова без явного указания области поиска:

-locate integra

Закройте сеанс работы с поисковым движком:

exit

Количество различных команд для поискового движка намного больше, чем приведено в этом примере, ознакомиться с ними можно на справочной странице.

Краткое описание возможностей поискового движка

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

В первую очередь этот поисковик предназначен для использования достаточно опытными пользователями, которые уверенно работают в консоли (командной строке). Для большинства пользователей лучшим выбором будет оконная версия поисковой системы Integra, которая при практически тех же функциональных возможностях (плюс функции каталогизирования CD/DVD) позволяет не запоминать многочисленные команды движка, а мышкой формировать запросы в комфортной среде окон и пользоваться многочисленными предустановленными сценариями индексирования и поиска.

Ряд особенностей делают именно консольную поисковую утилиту уникальной и выделяют среди других локальных поисковых систем.

Есть также черты, которые выделяют поисковую систему φaind во всех ее инкарнациях - включая .NET компонент, DLL и GUI-версию поисковика.

В какой-то степени FAIND объединяет функции двух стандартных *nix - утилит find и grep. На первый взгляд может показаться, что такое объединение нарушает идеологию построения *nix-систем - отдельные маленькие утилиты для выполнения отдельных задач. Почему бы не оставить поиск файлов на откуп стандартной find, заменив grep на более интеллектуальный механизм? Ответ - это нерационально из-за необходимости загрузки огромного словаря (почти 30 Мб для версии 0.60) для морфологического анализа. Если словарь будет грузиться для каждого файла, то просмотр большого каталога превратится в нетривиальную для запасов кофе у пользователя задачу. Кроме того, обработка упакованных архивов в этом случае потребует распаковки файлов из архива во временный каталог, что иногда может быть просто невозможно.

Не следует думать, что утилита FAIND вообще выпадает из упомянутой *nix-парадигмы для утилит. Не составляет труда использовать FAIND для просмотра файлов, список которых готовит внешняя утилита (хотя бы та же find). Результаты работы утилиты FAIND могут быть использованы другими программами. Подробнее об этом рассказано здесь.

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

1. Отбор файлов - сканирование области поиска (search domain), с рекурсивным просмотром подкаталогов и обходом гиперссылок, отбор по маске имени или другим параметрам файлов, просмотр содержимого архивов (в библиотеке LEM этой работой занимается класс сканера файлов, который Вы можете использовать в своих программах отдельно).

2. Лексер файлов разных форматов - выделяет из найденных файлов текст и разбивает его на слова. Это целый набор классов, специализирующихся на отдельных форматах файлов (например, для MS Word или utf8 HTML).

3. Поиск запроса в файле, точнее - в полученном после лексера массиве текста - этим занимается класс расширенных регулярных выражений в библиотеке LEM, который можно использовать отдельно.

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

5. Индексатор - обрабатывает документы и сохраняет сведения о них в специальной базе данных.

6. Средства интеллектуальной обработки документов - автореферирование и автоклассификация.

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

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

Название

Мы назвали утилиту (и вообще поисковый движок) именно fAind, чтобы подчеркнуть с одной стороны, что она выполняет многие функции стандартной *nix-утилиты find, а с другой стороны использует при поиске алгоритмы, обычно ассоциируемые с областью искусственного интеллекта (Artificial Intelligence - ai).

Есть и еще один нюанс, скорее забавный, в таком названии - оно подчеркивает способность поисковой машины искать искаженный текст (см. о нечетком поиске). Если Вы сделаете глобальный поиск по слову faind, то увидите достаточно много сайтов, где в силу недостаточного знания английского языка глагол to find записан по принципу 'как слышится' - to faind.

Словари для морфологического анализа

Словарная морфология и стеммер

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

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

повесить - повешенный (неправильный стем пове, ср. повесть).

сделавший - деланный (стеммер должен отсекать префикс для образования несовершенного вида из совершенного)

отметить - отмечать (чередование т-ч, неправильный стем отме, ср. отмена).

отразить - отражать (чередование з-ж, неправльный стем отра, ср. отрава)

сплотить - сплачивать - сплочённый (неправильный стем спл, ср. сплайн).

подбодрить - подбадривать (неправильный стем подб, ср. подбитый)

откушенный - откусить (чередование с-ш, неправильный стем отку, ср. откуда)

отраженный - отразивший (чередование ж-з, неправильный стем отра, ср. отрава)

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

Подробнее о морфологии русского языка можно почитать на странице с описанием Грамматического Словаря Русского Языка.

В консольной версии поисковика

Входящий в состав поисковой системы грамматический движок загружает словарь только в том случае, если индексация или поиск требуют включения морфологического анализа (см. команды -wordforms и -index wordforms). Если словарь не входит в состав дистрибутива (характеристики установленного словаря можно командой -help=6), то Вы можете скачать и установить один из бесплатных словарей. Для расширенных версий Pro словари включают в себя дополнительную языковую информацию - тезаурус, позволяющую выполнять некоторые специфические операции  над текстами (см. о версиях словарей).

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

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

В оконной версии поисковика

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

Смена словаря

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

1. При индексировании документов отключать морфологический анализатор (то есть, не использовать команды -index wordforms или -index dynforms в консольной версии поисковика, или сбрасывать флажок "использовать словарь" в диалоговом окне задания параметров индексирования в оконной версии поисковика).

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

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

Список всех опций командной строки

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

Синтаксис поисковых запросов

Синтаксис определения области поиска

Настольная поисковая система

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

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

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