Нечёткий поиск
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.
Пожалуйста, присылайте ваши списки синонимаов на адрес <devel@mnogosearch.org>. В качестве примера вы можете взять файл синонимов английского языка. В начале файла укажите следующие две команды:
Language: en Charset: us-ascii
Language - стандартный (ISO 639) двубуквенный код языка.
Charset - любая кодировка, поддерживаемая mnoGoSearch (see Разд. Кодировки в Гл. 7). Список синонимов должен быть закодирован с использованием этой кодировки.
Пред. | Начало | След. |
Кэш результатов поиска | Уровень выше | Разное |