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

8.8.1. Ispell

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

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

DataparkSearch понимает два типа файлов 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

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

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

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

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

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

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.

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

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

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

Вы также можете создать список таких слов по одному на каждую строку:

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

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

postmaster/MS

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

webmaster/MS

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

8.8.1.4. Где взять файлы Ispell

Вы можете найти файлы Ispell для многих языков на этой странице.

Для японского языка созданы квази-Ispell файлы, предназначенные для использования только с DataparkSearch. Вы можете скачать эти файлы с нашего веб-сервера или с одного из наших зеркал. См. Разд. 1.2>.

8.8.1.5. Модификация слов поисковых запросов

Quffix [lang] [charset] [ispell-like suffix file name]
Команда Quffix похожа на команду Affix, описанную выше, за исключением того, что эти правила применяются к словам, указанным в запросе, а не к их нормальным формам, как это происходит для команды Affix. Загружаемый файл должен содержать только суффиксные правила (в терминах афиксных файлов ispell).

Эта команда предназначена, например, для указания правил перехода от одной части речи к другой в русском языке, когда это необходимо.

8.8.2. Aspell

Когда DataparkSearch используется с поддержкой aspell, возможно автоматическое расширение поискового запроса вариантами слов с исправленым правописанием. Чтобы включить эту возможность, необходимо установить Aspell на вашу систему до сборки DataparkSearch. Чтобы включить эту возможность, необходимо добавить команду AspellExtensions yes в файлы конфигурации indexer.conf и search.htm (или searchd.conf, если используется searchd).

Автоматиская корректировка правописания при поиске происходит только при установке параметра поиска sp, см. Разд. 8.1.2>.

8.8.3. Синонимы

Файлы синонимов устанавливаются в поддиректорию etc/synonym относительно корневой директории установки DataparkSearch. Большие файлы синонимов для некоторых языков вы должны скачать отдельно с нашего сайта или с одного из наших зеркал, см. Разд. 1.2>.

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

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

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

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

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

Language: en
Charset:  us-ascii

Дополнительно вы можете указать в списке синонимов команду:

Thesaurus: yes

Эта команда включает режим тезауруса для списка синонимов. В этом режиме только слова, расположенные на одной строке считаются синонимами.

8.8.4. Поиск без учёта акцентов над буквами

Начиная с версии 4.17 DataparkSearch также поддерживает нечувствительный к акцентам над буквами поиск.

Чтобы включить поддержку этой возможности, используйте команду AccentExtensions в вашем шаблоне search.htm (или в файле конфигурации searchd.conf, если используется searchd) для автоматического построений копий слов из запроса без учёта акцентов над буквами, и в вашем файле конфигурации indexer.conf для автоматического добавления таких копий в базу.

AccentExtensions yes

Если команда AccentExtensions в файле конфигурации указана перед командами Spell и Affix, то копия этих данных без учёта акцентов над буквами будет загружаться автоматически.

8.8.5. Акронимы и аббревиатуры

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

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

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

Acronym acronym/en.fido.acr
Acronym acronym/en.acr

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

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

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

Language: en
Charset:  us-ascii

Также вы можете расширять поисковые запросы при помощи регулярных выражений, задаваемых специальными коментариями в файлах акронимов. Например:

#* regex last "([0-9]{2})[- \.]?([0-9]{2})[- \.]?([0-9]{2})" "+78622$1$2$3"

Этот комментарий задает преобразование из широко используемого формата записи локалных телефонных номеров, 99-99-99, в канонический формат, +78622XXXXXX. Таким образом телефонные номера становится возможным искать независимо от формата, в котором они были записаны. Опция last здесь означает, что процесс применения регулярных выражений останавливается после применения этого правила.

Пожалуйста, присылайте ваши списки синонимаов на адрес .