Нечёткий поиск

Ispell

Когда mnoGoSearch используется с поддержкой ispell все слова нормализуются. Это позволяет найти все грамматические формы введенного слова. При индексировании все найденные слова сохраняются в базе, в при поиске для каждого введенного слова находятся все его грамматические формы и уже с учетом всех этих форм производится поиск документов. Т.е., поисковик будет искать слово "test", если в качестве запроса введены слова "testing" или "tests".

Два типа файлов ispell

MnoGoSearch понимает два типа файлов ispell: файлы аффиксов и файлы словарей. Файл аффиксов Ispell состоит из правил для слов и имеет примерно такой формат:


Flag V:
       E   > -E, IVE      # As in create> creative
      [^E] > IVE          # As in prevent > preventive
Flag *N:
       E   > -E, ION      # As in create > creation
       Y   > -Y, ICATION  # As in multiply > multiplication
     [^EY] > EN           # As in fall > fallen

Файл словаря Ispell содержит сами слова и имеет следующий формат:


wop/S
word/DGJMS
wordage/S
wordbook
wordily
wordless/P

Использование Ispell

Для использования ispell в mnoGoSearch необходимо задать команды Affix и Spell в search.htm. Формат этих команд:


Affix [язык] [кодировка] [имя файла аффиксов ispell]
Spell [язык] [кодировка] [имя файла словаря ispell]

Первый параметр обоих команд - стандартный двуюуквенный код языка. Воторой - имя кодировки, при помощи которой закодированы файлы ispell. Третий параметр указывает имя файла, абсолютное, или отностительно поддиректории etc/ корневой директории mnoGoSearch

Замечание: Поддерживает загрузка данных для нескольких языков, например:


Affix en iso-8859-1 en.aff
Spell en iso-8859-1 en.dict
Affix de iso-8859-1 de.aff
Spell de iso-8859-1 de.dict

Будет загружена поддержка для английского и немецкого языков.

Если используется searchd, эти команды следует указывать в searchd.conf.

Если mnoGoSearch используется с поддержкой ispell, рекомендуется исопльзовать searchd, особенно для поддержки нескольких языков. Иначе время запуска search.cgi увеличивается.

Настройка словарей

Возможно, на ваших страницах встретяться несколько редких слов, не включённых в словари ispell. Вы можете создать список таких слов по одному на каждую строку:


rare.dict:
----------
webmaster
intranet
.......
www
http
---------
			

Вы также можете указать флаги ispel для этих слов (описание флагов ispel смотрите в документации ISpell) для поиска всех словоформ, например, "webmaster" и "webmasters". Попробуйте найти в словарях ispel слово с таким же способом образования различных форм и скопировать его флаги для нового слова. Например, словарь английского языка содержит такую строчку:

postmaster/MS

Таким образом, webmaster с флагом MS, возможно будет правильным:

webmaster/MS

Скопируйте составленный вами словарь в поддиректорию /etc корневой директории установки mnoGoSearch и добавьте соответсвующие команды в файл конфигурации.

Синонимы

Начиная с версии 3.2 поддерживается нечёткий поиск на основе синонимов.

Файлы синонимов устанавливаются в поддиректорию etc/synonym относительно корневой директории установки mnoGoSearch.

Для включения поддержки синонимов, добавьте в шаблон поиска search.htm команды вида Synonym <filename>, например:


Synonym synonym/english.syn
Synonym synonym/russian.syn

Имена файлов могут быть абсолютными (если имена начинаются с /), либо относительными поддиректории etc установки mnoGoSearch.

Если используется searchd, добавьте эти команды вместо шаблона поиска в searchd.conf.

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


Language: en
Charset:  us-ascii