Скачайте и запустите инсталлятор поисковой системы.
Обычно программа устанавливается в каталог 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) позволяет не запоминать многочисленные команды движка, а мышкой формировать запросы в комфортной среде окон и пользоваться многочисленными предустановленными сценариями индексирования и поиска.
Ряд особенностей делают именно консольную поисковую утилиту уникальной и выделяют среди других локальных поисковых систем.
Во-первых, она хорошо работает в пакетных файлах в цепочке с другими командами и консольными программами. Благодаря этому Вы можете организовывать весьма сложные алгоритмы поиска и модификации данных, особенно в *nix системах типа Linux или FreeBSD, хотя и для MS Windows портировано немало консольных утилит GNU/Linux.
Во-вторых, отсутствие визуальных средств (конструктора запросов, конструктора области поиска) делают консольную утилиту менее требовательной к ресурсам.
В-третьих, она фактически не требует инсталляции. Все необходимые параметры конфигурации берутся из ini файла.
В-четвертых, будучи полнофункциональной поисковой системой для персонального компьютера (плюс возможности для поиска в локальной сети и интернете) она позволяет очень тонко управлять поиском с помощью богатого набора опций.
Наличие средств интеллектуальной обработки документов, в частности авторубрикатора и системы автореферирования.
Есть также черты, которые выделяют поисковую систему φaind во всех ее инкарнациях - включая .NET компонент, DLL и GUI-версию поисковика.
Многоязычность. Алгоритмы анализа текста, поиска паттернов и извлечения знаний в полной мере учитывают синтаксис и морфологию русского, английского, французского, испанского языков. Кроме того, есть простой встроенный переводчик, позволяющий искать текст вне зависимости от языка документа. В принципе весь движок работает с текстом только в UNICODE, поэтому мы не видим особых проблем с включением нескольких других языков - см. примеры работы с юникодом, а также скриншоты.
Особые возможности, возникающие из использования развитого словаря и тезауруса, включая: автоматический перевод слов, подбор синонимов, грамматически и семантически связанных слов. Использование тезауруса позволяет реализовать, к примеру, "сильные" алгоритмы авторубрикации и реферирования, более аккуратные с точки зрения устранения "морфологического слоя" в обрабатываемых текстах, чем основанные на системе аффиксов/префиксов (как в ispell). Грамматический движок позволяет использовать после некоторой переработки правила образования словоформ из словарей ispell, но эта возможность введена как вспомогательная.
Способность работать без индексирования файлов. Это очень важный момент, так как в ряде случаев индексация невозможна либо обременительна (например, однократный поиск на компакт-диске). Конечно, предварительное индексирование документов позволяет кардинально ускорить поиск, поэтому в поисковом движке реализован индексатор документов, который работает даже в консольной версии утилиты без предварительной инсталляц?и каких-либо фоновых программ (см. опции управления индексатором).
Возможность использовать сервис поисковой машины в своих проектах для сторонних разработчиков благодаря тому, что мы подготовили два варианта поискового движка в виде .NET компоненты и обычной DLL Windows. При этом API поисковой системы предельно прост - в движок передается текстовая строка в том же виде, как она задается в консольной команде φaind, и возвращается текстовый файл в одном из форматов (XML или HTML).
Поиск в архивах без распаковки на диск (обрабатываются все популярные форматы - см. полный список).
Четкое разделение двух режимов поиска: поиск файлов (где указанный паттерн встречается хоть один раз), и поиск данных (когда в каждом файле отыскивается каждое вхождение образца текста). Подробнее об этом сказано здесь.
Максимальное использование алгоритмов и подходов из области искусственного интеллекта (Artificial intelligence). Вообще говоря, сам Solarix Intellectronix изначально был научно-исследовательским проектом в области распознавания устной речи и работы с вербальной информацией. Многие наработанные методики и подходы оказались крайне востребованными в разрабатываемых поисковиках (к примеру, весь синтаксический движок - а это почти 80 % кода - был сделан для системы синтеза и анализа речи). ?ы, кстати, не отказываемся от своих давних планов в этой области (учитывая, что никому не удалось решить эту задачу в полной мере).
Паттерны (искомые образцы текстов) могут быть как обычными регулярными выражениями, так и расширенными регулярными выражениями, позволяющими обходить морфологические и синтаксические нюансы естественного языка при поиске. Кроме того, есть возможность использования сложных логических конструкций в паттернах запросов.
Результаты поиска представляются в нескольких форматах: XML (описан здесь), HTML (в двух разновидностях), простой текст (utf-8) и SQL скрипт (для добавления результатов поиска в реляционную базу данных - см. подробное описание).
В какой-то степени 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 поисковой системы с примерами и другие компоненты можно здесь 
© Mental Computing 2010
|
|
изменено 01-Jun-10 |