`

СПЕЦИАЛЬНЫЕ
ПАРТНЕРЫ
ПРОЕКТА

Архив номеров

Как изменилось финансирование ИТ-направления в вашей организации?

Best CIO

Определение наиболее профессиональных ИТ-управленцев, лидеров и экспертов в своих отраслях

Человек года

Кто внес наибольший вклад в развитие украинского ИТ-рынка.

Продукт года

Награды «Продукт года» еженедельника «Компьютерное обозрение» за наиболее выдающиеся ИТ-товары

 

mnoGoSearch -- конструктор, но корпоративный

0 
 

Хотя есть несколько "альтернативных" проектов, подходящих для нашей темы, мы решили ограничиться только mnoGoSearch: это наиболее известный продукт, и по нему можно составить вполне адекватное представление о прочих. К тому же mnoGoSearch выпускается для платформ Unix и Windows -- в первом случае на условиях GPL, во втором -- программа, вообще говоря, является коммерческой. Однако существует специальная русскоязычная версия mnoGoSearch 3.1.15.4, которую жители стран бывшего СССР могут использовать бесплатно в некоммерческих целях. Всего доступны три варианта:
  • Lite -- предназначен для небольших объемов информации и использует внутренний механизм хранения индексов;
  • Pro -- работает с базами данных SQL-типа (iBase, mSQL, MSSQL, MySQL, Oracle, SyBase) и содержит службу, обеспечивающую обновление индекса по расписанию. Предназначен для ОС семейства Windows NT;
  • третий не имеет дополнительной приставки к общему названию. Он поддерживает фактически те же функции, что и Pro, за исключением некоторых специфических возможностей, доступных только на платформе Windows NT.
Мы рассмотрим версию Lite как наиболее простую в установке и применении. Для хранения индексов в этой версии используются текстовые (режим базы single) или двоичные (multi и multi-crc) файлы, благодаря чему во многих случаях удается визуально проверить корректность работы системы -- и часто эта возможность бывает нелишней.


Установка и настройка

mnoGoSearch -- конструктор, но корпоративный
C миру по нитке... и вот вам и морфология, и поддержка PDF. Хотя на деле не все так уж гладко
К сожалению, справочная информация к программе доступна только на английском и временами не соответствует действительности (типичный пример: формат строки для доступа к локальным файлам, но о нем чуть позже), поэтому остановимся на отдельных "скользких" местах в настройке программы. Первое, что необходимо сделать после установки, -- выбрать кодировку, в которой будут храниться индексы (закладка "Общие", "Настройки", параметр "Локальный"). Без этого кириллическая информация в индексы может заноситься некорректно.

Главный компонент любой поисковой системы -- индексатор (в данном случае indexer.exe). Ему необходимо объяснить, что и как индексировать, для чего на закладке "Типы Mime" перечисляются форматы обрабатываемых файлов. Изначально их только два: text/plain и text/html -- другие нужно описать самостоятельно, например:

application/msword String Macth
Insensitive *.doc
application/rtf String Macth
Insensitive *.rtf
application/vnd.ms-excel String Macth Insensitive *.xls
application/pdf String Macth
Insensitive *.pdf

Естественно, одного этого недостаточно, чтобы научить программу работать с ними. Дополнительно на закладке "Парсеры" следует подключить внешние программы (скорее фильтры, чем парсеры), способные фактически извлекать текст из файлов данных форматов. К примеру, для DOC, RTF и XLS можно использовать утилиты catdoc.exe и xls2csv.exe из пакета catdoc -- именно они включены в состав последней версии mnoGoSearch 3.2.24.1. Вот как это выглядит:

application/msword text/plain catdoc.exe -d cp1251 $1 > $2
application/rtf text/plain catdoc.exe -d cp1251 $1 > $2
application/vnd.msexcel text/plain catdoc.exe -d cp1251 $1 > $2
application/pdf text/html pdftotext.exe -enc KOI8 R -layout -htmlmeta $1 $2

При необходимости укажите точные пути, еще лучше -- убедитесь в корректной работе команд, выполнив их вручную:

catdoc.exe -d cp1251 file.doc > file.txt

К сожалению, качество преобразования DOC-файлов оставляет желать лучшего (в отличие от RTF), поэтому стоит поискать другой фильтр. С PDF дело обстоит несколько лучше, но и здесь нужно приложить дополнительные усилия. Скажем, для поддержки кириллицы необходимо загрузить пакет xpdf-cyrillic.tar.gz, распаковать его и в каталоге, где располагается утилита pdftotext.exe, создать файл xpdfrc, в котором прописать следующие строки (точный путь может быть другим):

nameToUnicode "C:/Tools/xpdf/Bulgarian.nameToUnicode"
unicodeMap KOI8-R "C:/Tools/xpdf/KOI8-R.unicodeMap"

Обратите внимание, что мы не случайно настраиваем PDF-фильтр на KOI8 R, поскольку бесплатная версия mnoGoSearch не умеет работать с многобайтовыми кодировками (т. е. Unicode), этот недостаток устранен в коммерческой ветке 3.2.x.

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

Вторым основным компонентом mnoGoSearch является поисковая программа search.exe, вызываемая из indexer.exe (закладка "Поиск"). С ее же помощью можно организовать удаленный доступ к сервису через Web-интерфейс, для этого ее необходимо поместить в каталог cgi-bin Web-сервера.

По умолчанию search.exe обращается за настройками к файлу search.htm, который состоит из нескольких разделов: собственно оформления страницы поиска и описания переменных, расположенных в секции комментариев. Здесь стоит проверить пути к словарям ispell и индексной базе, указать используемый для нее режим (к примеру, single), а особое внимание обратить на LocalCharset -- в этом параметре нужно выбрать ту кодировку, в которой сохраняется индекс (о чем мы говорили в самом начале раздела), как правило, это windows-1251.

Последнее замечание касается источников индексирования. В их качестве могут выступать HTTP, FTP или NNTP-серверы, а также локальные файлы, если воспользоваться правильным синтаксисом (о котором умалчивает документация):

file:c:/www/

К сожалению, отсутствует возможность явного указания ресурсов сети на платформе Microsoft, но в этом случае можно применить следующее решение: подключать требуемые ресурсы через сетевые диски и работать с ними как с локальными.


Режим базы данных

Наиболее удобный для отладки режим базы данных -- single. В этом случае вы, к примеру, получаете возможность без дополнительных инструментов просмотреть результаты индексирования. Так, до подключения ispell вы увидите примерно следующее:

...
422    65538     адаптируемые
422    131074    межсетевые
422    196610    экраны
422    262146    на
422    327682    базе
422    393218    linux
...

Используя указанный режим, можно выполнять поиск как по целому слову, так и по подстроке. Недостаток -- медленная скорость при большом объеме базы. В данном случае рекомендуется применить режим multi или multicrc. При этом сохраняется не само слово, а его контрольная сумма, в результате чего уменьшается размер индекса и увеличивается скорость работы. Использование CRC -- относительно надежный метод: по утверждению разработчиков, на 1,5 млн русских и английских слов приходится всего порядка 200 совпадений этого кода, поэтому вероятность ошибок достаточно мала. Хуже, что в таком режиме невозможен поиск по подстроке.


Морфологический анализ

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

...
456    65538     адаптируемые
456    131074    межсетевой
456    196610    экран
456    262146    на
456    327682    база
456    393218    linux
...

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


Заключение

Вероятно, читатели обратили внимание, что данная статья несколько отличается по стилю от остальных материалов -- к сожалению, это произошло вынужденно. Количество проблем и недоразумений, с которыми нам довелось столкнуться, достаточно велико, а в ряде случаев положение дел удавалось выправить только с помощью службы поддержки mnoGoSearch. Вопреки фактически коммерческому статусу продукта и не такой уж низкой цене он имеет все черты Open Source-подхода -- в первую очередь, это все-таки "конструктор", а не готовое решение. Несомненно, затратив определенные усилия, его все же удастся в конце концов ввести в эксплуатацию, особенно если не требовать невозможного. Скажем, mnoGoSearch не вызывает особых нареканий при организации индексирования и поиска на Web-узле, в отличие от локальной сети и документов Microsoft Office.

Как говорилось выше, в версии 3.2.x решена по крайней мере одна из наиболее болезненных проблем -- отсутствие поддержки многобайтовых кодировок (Unicode), затруднявшее обработку документов, в которых одновременно присутствуют несколько языков. Однако это не сделает более совершенными, скажем, внешние фильтры или словари ispell. Кроме того, обновление бесплатной версии для пользователей из стран бывшего СССР, по-видимому, прекращено -- как ни парадоксально, но мы были первыми, кто за три года существования версии 3.1.x обратился в службу поддержки.
0 
 

Напечатать Отправить другу

Читайте также

 
 
IDC
Реклама

  •  Home  •  Рынок  •  ИТ-директор  •  CloudComputing  •  Hard  •  Soft  •  Сети  •  Безопасность  •  Наука  •  IoT