Обзоры Обзоры 29.11.2004 в 22:00 comment

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

author avatar
https://secure.gravatar.com/avatar/2f8d57cddfeb455ba418faa11ee01bb0?s=96&r=g&d=https://itc.ua/wp-content/uploads/2023/06/no-avatar.png *** https://secure.gravatar.com/avatar/2f8d57cddfeb455ba418faa11ee01bb0?s=96&r=g&d=https://itc.ua/wp-content/uploads/2023/06/no-avatar.png *** https://itc.ua/wp-content/themes/ITC_6.0/images/no-avatar.svg

ITC.UA

автор

Хотя есть несколько "альтернативных" проектов, подходящих для нашей
темы, мы решили ограничиться только 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. Хотя на деле не все так уж гладко

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

Бізнес англійська від Englishdom.
Тут навчають за методикою Кембриджу, завдяки якій англійську вивчили понад 1 мільярд людей. Саме вона використовується в найкращих навчальних закладах світу, і саме за нею створені курси.
Інформація про курс

Главный компонент любой поисковой системы — индексатор (в данном случае 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-серверы, а также локальные файлы, если воспользоваться правильным синтаксисом (о котором умалчивает документация):

Бізнес англійська від Englishdom.
Тут навчають за методикою Кембриджу, завдяки якій англійську вивчили понад 1 мільярд людей. Саме вона використовується в найкращих навчальних закладах світу, і саме за нею створені курси.
Інформація про курс
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 обратился в службу поддержки.

Продолжается конкурс авторов ИТС. Напиши статью о развитии игр, гейминг и игровые девайсы и выигрывай профессиональный игровой руль Logitech G923 Racing Wheel, или одну из низкопрофильных игровых клавиатур Logitech G815 LIGHTSYNC RGB Mechanical Gaming Keyboard!


Loading comments...

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: