Индексированный полнотекстовый поиск
MMIndex - это приложение для индексации и поиска почтовых писем, разработанное для использования с сервером CommuniGate Pro. Индексация и поиск могут быть настроены с использованием модуля CGIndex (собственная разработка) или FTS3 (SQLite). MMIndex использует протокол XIMSS для связи с CommuniGate Pro и поддерживает кластерную конфигурацию.
Поиск интегрирован в скины Pronto HTML и Crystal.
Порядок установки и настройки приложения следующий:
1) скопировать файлы "mmindex-helper" и "mmindex.cfg" в базовую директорию CGPro (для кластера - на каждом члене кластера):
cp mmindex-helper /var/CommuniGate/ |
|
cp mmindex.cfg /var/CommuniGate/ |
2) задать пароль пользователя postmaster, список доменов и пользователей для индексации почты в файле "/var/CommuniGate/mmindex.cfg";
если требуется индексировать всю почту на сервере, закомментировать строки со списком доменов и пользователей;
3) в интерфейсе администратора CGPro добавить Application Helper со следующими параметрами (для кластера - на каждом члене кластера):
Log Level -> "All Info" |
|
Time-Out -> "5 min" |
|
Auto-Restart -> "Never" |
|
Name (поле ввода возле выпадающего меню включено/выключено) -> "mmindex-helper" |
|
Program Path -> "./mmindex-helper" ("./mmindex-helper --ClusterFrontend" для фронтендов кластера) |
В файле конфигурации утилиты доступны следующие параметры:
- method
: метод аутентификации на сервере CGPro, поддерживаются методы PLAIN и CRAM-MD5;
- indexdir
: директория файлового хранилища пользователя, в которой хранятся файлы индексов, задаётся относительно директории пользователя в хранилище данных;
- basedir
: базовая директория сервера CGPro;
- loglevel
: уровень детализации логов утилиты;
- indextype
: тип используемого механизма индексации, поддерживаются типы cgindex и sqlite;
- indexperiod
: минимальное значение периода индексации почты, реальное значение периода может быть больше в зависимости от обстоятельств (первое выполнение индексации может занимать значительное время, при поступлении большого объёма данных почты или значительной нагрузке на сервер период индексации также иметь большее значение), задаётся в секундах;
- owInvalidIndex
: значение параметра "yes" указывает на необходимость пересоздания файла индекса почтовой папки, если утилита не может распознать формат текущего файла;
- fuzzyByDefault
: значение параметра "yes" указывает на необходимость использования нечёткого поиска по умолчанию для всех слов, указанных в поисковом запросе, параметр используется только для типа индекса cgindex;
- indexOnDemand
: значение параметра "yes" указывает на необходимость индексации только тех пользователей, у которых имеется кастомная настройка UseMMIndex со значением "YES", разрешающая пользователю использовать индексированный поиск, а также преференс UseMMIndex со значением "YES" (устанавливается автоматически при использовании поиска в веб-интерфейсе Pronto HTML или Crystal);
- ignoremailboxlist
: список названий почтовых папок, которые необходимо игнорировать в процессе индексирования, поддерживаются маски названий (например, по маске junk* будут проигнорированы почтовые папки с названиями Junk, junk, junk-spam, junk/subfolder и т.п.).
При использовании типа индекса cgindex допускается использование следующих специальных символов:
* - любое окончание слова (например, по запросу "раздел*" будут найдены письма, в которых встречаются слова "разделы", "разделить" и т.д.). |
При использовании типа индекса sqlite в поисковых запросах кроме указанного выше символа * можно использовать также следующие специальные символы:
^ - слово расположено в начале строки (например, по запросу "^договор" будут найдены письма, которые начинаются со слова "договор"); | |
"" - точное совпадение фразы (например, "договор раздел", в случае, когда двойные кавычки не используются, будут найдены письма, в которых между словами "договор" и "раздел" могут находится другие слова); | |
- - слово не встречается (например, по запросу "договор -раздел" будут найдены письма, в которых встречается "договор", но не встречается "раздел"). |
Также при использовании типа индекса sqlite специальные символы в запросах можно комбинировать, например:
^договор* -раздел |
Логи индексации и поиска сохраняются в папке SystemLogs
в базовой директории CGPro, их можно просматривать в веб-админ интерфейсе таким же образом, как и логи сервера CGPro.