# Плагин FullTextS

## About

При полнотекстовом поиске выполняется поиск по текстовому отображению параметров объекта. Например, адреса представляются в виде названия улиц, городов. Списковые параметры - расшифрованные значения. При каждом изменении параметров индекс обновляется и предоставляет выполнять поиск как: "Ленина 5 Иванов".

## Setup

Make sure the plugin is enabled and append to the configuration:

    fulltext:index.delay=<delay>
    fulltext:entry.customer.paramIds=<paramIds>
    fulltext:entry.process.paramIds=<paramIds>
    fulltext:entry.message.paramIds=*

Где:

- <delay> - задержка в секундах индексации после окончании правки объекта;

- <paramIds> - коды параметров контрагента либо процессов, доступные для индексации, `*` - все параметры.

В полнотекстовый индекс помимо параметров для контрагента добавляется его наименование, для процесса - описание. Обрабатываются следующие типы параметров:

- text, blob - значения;

- email - значения и комментарии;

- list, listcount, tree - наименования значений;

- address - строка с адресом;

- phone - телефон сплошной строкой цифр.

При правильной настройке в оснастке поиска появится ещё один выпадающий пункт Полнотекстовый поиск, см. снимок экрана ранее.

В планировщике задач добавить запуск класса FullTextUpdate один раз в минуту, либо запустить его в период тестирования.

### Запуск первичной индексации

Индекс обновляется с задержкой после редактирования сущности, либо её параметров. Для инициации индексирования всех уже существующих объектов выполнить запуск ru.bgcrm.plugin.fulltext.exec.FullTextInit.

## Usage

### Формат запроса

По-умолчанию поиск ищет по условию логическое ИЛИ для всех введённых слов, разделённых пробелами. Для добавления слова как И необходимо сопроводить его префиксом +.

Поиск производится в режиме BOOLEAN следующим запросом:

    SELECT * FROM fulltext_data WHERE MATCH(ft.data) AGAINST ("СТРОКА ПОИСКА" IN BOOLEAN MODE)