DataparkSearch Engine 4.48: Поисковая машина; Справочное руководство
Пред. | Глава 8. Поиск документов | След.

# 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.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

- `Language` - стандартный (ISO 639) двубуквенный код языка.

- `Charset` - любая кодировка, поддерживаемая DataparkSearch (see Разд. 7.1). Список синонимов должен быть закодирован с использованием этой кодировки.

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

    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

- `Language` - стандартный (ISO 639) двубуквенный код языка.

- `Charset` - любая кодировка, поддерживаемая DataparkSearch (see Разд. 7.1). Список синонимов должен быть закодирован с использованием этой кодировки.

Пожалуйста, присылайте ваши списки синонимаов на адрес `<maxime@maxime.net.ru>`.

Пред. | Начало | След.
Кэш результатов поиска | Уровень выше | Разное