Особенности национального поиска

16 апрель, 2002 - 23:00Игорь Дериев
Даже после поверхностного знакомства с Indexing Service ("Компьютерное Обозрение", # 14, 2002) обычно возникает определенное сомнение в целесообразности альтернативных разработок. Действительно, состязаться с Microsoft -- и в техническом, и в маркетинговом плане -- непросто.

Мы ищем не вещи, но поиск вещей.
Б. Паскаль

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


Прямой поиск

Особенности национального поиска
SSScanner -- пожалуй, лучшая программа прямого поиска

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

Поисковик SSScanner, попавший в поле нашего зрения еще три года назад ("Компьютерное Обозрение", # 40, 1999), не только существует по сей день, но и продолжает развиваться. Программа научилась работать с документами Word, WordPerfect и даже PDF и HLP (что, кстати, большая редкость), а также с несколькими десятками языков и кодировок (KOI-8 -- не исключение). При этом скорость работы весьма высока. Возможен нечеткий поиск (т. е. по контексту) с оценкой релевантности и формальный. Результаты отображаются в отдельном окне с выдержками из оригинальных документов. Правда, стоит SSScanner почти $30, а условно-бесплатная версия имеет ряд ограничений. Однако это не мешает разработчикам свободно распространять утилиту, способную извлекать текст из документов всех поддерживаемых форматов.

Компактная программа AVSearch предлагается совершенно бесплатно и наверняка придется по душе именно русскоязычным пользователям. Она умеет работать только с текстовыми файлами и RTF, хотя во всех мыслимых кодировках от CP866 до Unicode, что, в частности, обеспечивает "поддержку" и формата DOC -- документы Microsoft Word просто исследуются как обычный текст. Естественно, при этом в них появляется много "мусора", однако в большинстве случаев результат получается вполне адекватным. Программа также осуществляет поиск во всех популярных архивах без использования внешних модулей, что в диковинку даже для коммерческих продуктов. Интерфейс достаточно прост, но удобен и даже не лишен некоторых изюминок -- к примеру, при вводе следующего запроса для уточнения результатов предыдущего слова сразу же подсвечиваются в окне просмотра (если они, конечно, там есть).

Особенности национального поиска
Новый интерфейс плюс широкая поддержка форматов документов -- чего же боле?
Особенности национального поиска

Тем не менее программы прямого поиска сегодня явно уходят на второй план -- если речь идет об универсальных средствах. Какие недостатки принято было выделять у систем полнотекстовой индексации? Продолжительность операции первичного создания индекса и дополнительный расход дискового пространства. Для относительно современных компьютеров это -- сущие мелочи. Все описанные ниже программы коммерческого уровня и качества обрабатывали мою библиотеку (100 MB в 1000 файлов) менее 5 мин, при этом индекс обычно составлял около 15--20 MB (вполне в рамках "теории"). Некоторое неудобство по-прежнему связано с необходимостью его регулярного обновления, однако для персонального архива это в любом случае не проблема.


Поиск с индексированием

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

На первый взгляд программа Advanced Document Server кажется заманчивым выбором. Небольшая, бесплатная, с массой возможностей: поддержка документов Microsoft Office, PDF, некоторых баз данных; поиск в архивных файлах; встроенный Web-сервер для удаленного доступа. Однако имеется одно "но": для работы почти с каждым "серьезным" форматом необходимо "родное" ПО. Для DOC -- Microsoft Word, для XLS -- Excel, для PDF -- полноценный Adobe Acrobat, а также Internet Explorer, архиваторы и пр.

Особенности национального поиска
Знание русского языка -- на отлично

Можно, конечно, с большой долей вероятности рассчитывать, что тот, кто читает документы Word, пользуется и самим приложением (хотя у Microsoft есть и специальная программа просмотра), однако для PDF этот принцип уже неприемлем. Кроме того, применение средств автоматизации OLE в данном случае крайне негативно сказывается на производительности. Если же вдруг в документах используются макросы, выполняющиеся при открытии/закрытии, то вообще может потребоваться вмешательство пользователя. Одним словом -- подход удачным не назовешь (при всей его "универсальности"), хотя в некоторых случаях им не гнушаются и более серьезные разработчики.

Greenstone -- проект, безусловно, интересный. Это ПО для создания "цифровых библиотек", что подразумевает нечто большее, чем просто поиск с предварительным индексированием по документам DOC, PDF и пр. Программное обеспечение создает каталог документов, конвертирует их в HTML-формат, обеспечивает к библиотеке удаленный доступ посредством броузера. Распространяется бесплатно, с исходными текстами.

Происходя из Unix-мира, Greenstone демонстрирует типичный подход Open Source -- собрать разрозненные куски кода и попытаться получить что-нибудь стоящее. В целом, схема действий системы примерно такова: пользователь описывает "библиотеку" -- файлы, папки, Web- или FTP-узлы; документы загружаются, извлекаются из zip-подобных архивов; известные форматы преобразуются в HTML, который затем и индексируется. Естественно, все вместе работает довольно медленно.

Для большинства операций привлекаются сторонние утилиты и программы: макросы на Perl, PDF обрабатывается с помощью PDFTOHTML, DOC -- посредством wvWare и т. д. Все это -- отдельные проекты, живущие своей жизнью. Многие из них находятся на стадии 0.х, и, соответственно, функционируют весьма "по-разному". К примеру, после 10 мин работы над моей библиотекой ядро Perl уже "пожирало" более 120 MB оперативной памяти (где-то "утечка"), а wvWare попросту зависала на некоторых файлах. Безусловно, появляются новые версии, ошибки исправляются, но в целом это -- "вечный бой". Возможно, создатели взялись за слишком емкую задачу -- с "простым" индексированием не возникло бы столько проблем, тем более что качество (визуальное) получаемых HTML-документов оставляет желать лучшего.

Особенности национального поиска
В лингвистических нюансах "Следопыт" не знает равных

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

Программа dtSearch Desktop практически всеядна -- она автоматически распознает различные кодировки, в том числе и кириллические (хотя KOI-8 ей все же не по зубам), а также пару десятков форматов файлов, среди которых стоит выделить DOC, XLS, RTF, PDF, DBX (Outlook Express), XML, плюс популярные базы данных (через ODBC). В БД и гипертекстовых документах возможен поиск по содержимому конкретных полей и тегов. PDF индексируются даже защищенные, хотя получить их названия и другие атрибуты программа не может -- в чем откровенно и признается.

Кроме того, dtSearch Desktop обладает несколькими действительно уникальными функциями, например предлагает пользователю словарь (построенный в процессе создания индекса) и при вводе запроса выполняет в нем автоматический поиск. Хотя имеется специализированная Network-версия, dtSearch Desktop умеет индексировать Web-узлы (на заданную глубину) и ресурсы локальной сети, а также использовать внешние индексы, созданные на других компьютерах.

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


"Наши в городе"

Предыдущий список можно было бы продолжить. Поисковых систем существует достаточно много, однако возможности большинства из них более или менее традиционны. По-настоящему оригинальное ПО, вроде dtSearch, встречается нечасто. Прежде свободно распространяемый пакет Altavista Discovery, судя по всему, превратился в Altavista Desktop Search, который, вопреки своему названию и наличию Altavista Enterprise Search, позиционируется уже как продукт исключительно корпоративный, даже расширенную информацию о нем нужно специально запрашивать у разработчиков (и не факт, что получишь). Тем ценнее оказываются отечественные (в широком смысле слова) приложения, поскольку носители языка априори неплохо разбираются во всевозможных лингвистических нюансах, а заодно и более адекватно оценивают платежеспособность своих потенциальных пользователей.

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

Особенности национального поиска
Не последний аргумент в пользу Cros -- наличие Web-интерфейса

Интересно, что с момента прошлого обзора ("Компьютерное Обозрение", # 40, 1999) список доступного ПО практически не изменился. Впрочем, если одни разработки в это время более или менее интенсивно развивались, то другие фактически законсервировались. К таковым относится Search32 ("Анет"), заброшенная, по-видимому, уже окончательно, однако распространяемая по прежней цене ($39). При этом реальная ее ценность весьма условна -- то, что было приемлемо три года назад, сегодня не выдерживает критики. Программа попросту игнорирует форматы файлов, рассматривая TXT, DOC и все прочее как обычный текст. Поскольку с Unicode она не знакома, документы Microsoft Office 2000/XP остаются за бортом, равно как и многие другие.

К счастью, далеко не все опустили руки. "Ищейка" (iSleuthHound Technologies), к примеру, продолжает развиваться, хоть и несколько экстенсивно. Если верить документу WHATSNEW, скорость индексирующего движка возросла не просто в несколько раз -- на порядки. Но факт остается фактом: если первые версии действительно строили индекс не слишком быстро, то современные не уступают конкурентам. Впрочем, последняя (4.0) больше внимания уделяет интерфейсу (пока только англоязычному). Программа приобрела вполне современный вид (хоть порода собачки не изменилась) и обзавелась массой мелких функций, призванных еще больше упростить ее использование: расширенный поиск по атрибутам файлов, более гибкий планировщик, накопление "популярных" запросов, поиск внутри результатов предыдущей операции и т. д. Приятно также, что новые выпуски сохраняют общую канву программы и лучшие идеи предыдущих.

Немалое внимание разработчики уделяют и поддержке дополнительных форматов. Бесплатная версия "Ищейки" по-прежнему работает только с текстовыми и DOC-файлами, профессиональная ($15) -- также с RTF и HTML. Однако для последней имеется набор дополнительных (и за дополнительную же плату) подключаемых фильтров -- для текста во всех кодировках, документов других приложений Microsoft Office и PDF. Впрочем, здесь не обходится без некоторых казусов. Например, XLS-фильтр работает только при наличии Excel (т. е. использует средства автоматизации приложения) со всеми вытекающими последствиями.

Поддержка PDF появилась недавно, и пока этот модуль "не понимает" русского языка, хотя представители компании обещают устранить этот недостаток в самое ближайшее время. Зато он великолепно работает с защищенными документами -- не только индексирует их содержимое, но и способен корректно определить название и даже извлечь текст. Возможно, это идет вразрез с политикой Adobe (в своем фильтре для Indexing Service они подобных вольностей не допускают), однако в данном случае цель-то совершенно благая!

Последняя, третья, версия "Следопыта" ("МедиаЛингва") существенно "повзрослела" по сравнению с предыдущими. И дело даже не в том, что теперь для хранения информации используется Microsoft SQL Server Desktop Edition (быть может, это действительно признак "серьезности" разработки, хотя для персональных продуктов такое решение все же кажется несколько тяжеловесным). Нынешний выпуск "Следопыта" снял фактически все замечания и вопросы, которые возникали прежде.

Возьмем, к примеру, морфологический поиск, когда для каждого слова определяется исходная форма, а учитывается вся парадигма. Эффективность такого подхода (называемого словарным) очевидна, однако он имеет и определенные недостатки, главный из которых -- ограниченность словаря. Неизвестное слово будет использовано "as is", при этом адекватность полученных результатов оценить достаточно сложно.

Поэтому "Следопыт" практикует еще один подход, так называемый нечеткий. Для каждого слова на основе неких правил, опирающихся на статистику использования суффиксов и окончаний, определяется основа (в идеале, надо полагать, корень), именно она и используется при реальном поиске. На первый взгляд этот алгоритм сулит больше недостатков, чем достоинств: так, "соль" и "соловей" будут восприняты как одно и то же, а "люди" и "человек" -- наоборот. Однако в ряде случаев эффект превосходит все ожидания -- например, при поиске по фамилиям, которых практически наверняка в словаре не будет. Та же "Ищейка", реализующая словарный подход, с подобными "экзерсисами" не справляется.

К сожалению, два описанных подхода -- взаимоисключающие, и делать выбор приходится еще на этапе создания индексов, поэтому понимание принципов их работы очень важно. По умолчанию используется нечеткий, который считается более "быстрым".

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

Поддерживаются текстовые файлы в самых разных кодировках, документы основных приложений Microsoft Office, PDF-файлы, в том числе и упакованные в zip-архивы, а также папки (как сами сообщения, так и вложения) Microsoft Outlook. Следует отметить, что используемые фильтры достаточно "честные", они работают с DOC-файлами именно как с документами Word, не индексируют PDF-файлы, защищенные от копирования информации, и т. д. -- естественно, это может быть расценено двояко. Тем не менее PDF-фильтр из "Следопыта" показался одним из лучших при работе с русским языком.

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

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

Цена же заслуживает отдельного обсуждения. Программа распространяется в трех вариантах -- персональном, профессиональном и корпоративном. Однако первый при достаточно невысокой цене в $10 лишен фактически всех наиболее интересных функций -- не поддерживает морфологию и формальные запросы, не индексирует PDF и папки Outlook. Это лишает программу практически всех преимуществ перед Indexing Service. С другой стороны, корпоративная версия распространяется довольно дорогими пакетами лицензий, хотя ее особенностью является только работа с ресурсами локальной сети. Золотая же середина -- профессиональный "Следопыт" -- обойдется в $48.

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

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

Все операции осуществляются исключительно над загруженными документами, и хотя Cros "помнит" исходные папки, автоматически добавлять файлы по мере их поступления он не умеет. Таким образом, программа, по-видимому, больше всего подходит для организации относительно стационарных архивов документов. К собственно поисковым возможностям относятся поддержка форматов Microsoft Office, RTF, HTML, PDF; извлечение файлов из популярных архивов (zip, rar и т. д.); учет морфологии -- все это без использования внешних программ. Похоже, именно совершенствование PDF-фильтра сегодня является приоритетной задачей, во всяком случае с каждой новой сборкой (которые появляются с завидной регулярностью) он работает все лучше. В современном состоянии этот модуль игнорирует защиту от копирования информации и относительно неплохо работает с русским языком, хотя извлечение текста несколько "хромает".

Имеется также отдельно распространяемый Web-интерфейс (в виде Web-сайта для IIS, Apache или другого сервера с поддержкой CGI), обеспечивающий подключение к Cros удаленных пользователей и выполнение с банком данных всех основных операций. Его стоимость определяется из расчета $30 (с накопительными скидками) за каждое одновременное подключение, минимальный пакет -- $150. Сам Cros при этом также весьма недешев -- $140, видимо, сказываются особенности позиционирования.

Пожалуй, последний пакет, который следует упомянуть, чтобы представленная картина была наиболее полной, -- "Евфрат @SOHO" (Cognitive Technologies), стоимостью всего $20. На самом деле этот продукт еще дальше отстоит от идеи "чистого" поисковика, чем даже Cros. Его задача -- организация электронного документооборота в персональном масштабе, что подразумевает максимальную автоматизацию создания и ввода типичных офисных документов, а также их организацию, регистрацию, хранение, архивирование и, естественно, поиск. В некотором смысле "Евфрат @SOHO" пытается имитировать полноценную рабочую среду -- со своим Рабочим столом, Корзиной, средствами работы с файлами и т. д. Однако программа "понимает" документы Microsoft Office, индексирует их и выполняет контекстный поиск и даже автоматически следит за обновлением указанных документов и папок -- почему и попала в этот обзор. Пожалуй, самый большой недостаток -- отсутствие поддержки прочих форматов, в частности PDF (возможно, он и правда не очень-то вписывается в типичную конторскую деятельность). Зато имеются и кое-какие приятные дополнительные возможности, вроде встроенной OCR для ввода документов со сканера.