evoSearch - индексирование и поиск с учетом морфологии
- Дополнения
- evoSearch
evoSearch - индексирование и поиск с учетом морфологии
Содержит:
- плагин evoSearch - для индексирования (в настоящий момент индексации по TV не производится, индексируются только pagetitle,longtitle,description,introtext.content)
- сниппет evoSearch - для вывода результатов поиска. В качестве "рабочей лошадки" вывода используется сниппет DocLister (но можно использовать и Ditto, указав параметр
&worker=`Ditto`
- результаты поиска могут быть чуть хуже) - идея использования phpMorphy - Поиск в MySQL. Часть 2 «Поиск с учетом русской морфологии»
Установка:
Устанавливаем плагин и сниппет. Для плагина событие onDocFormSave, параметры - &offset=Первая строка переиндексации;text;0 &rowsperonce=Строк за сеанс индексировать;text;1 &reindex=Переиндексировать все;text;0 &excludeTmpls=Исключить шаблоны;text; &excludeIDs=Исключить ID ресурсов;text; &TvNames=Имена TV для поиска;text; &unpublished=Индексировать неопубликованные;text;0 &deleted=Индексировать удаленные;text;0 &dicts=Использовать словари;text;rus,eng
- до первого запуска сниппета на фронтэнде сайта необходимо запустить индексацию (сохранить любой ресурс в админке)
- создание необходимых полей content_with_tv и content_with_tv_index, а также нужных индексов производится автоматически (!!!) при первом запуске индексации
- индексация запускается сохранением любого ресурса (вызовом события onDocFormSave)
при первом запуске или необходимости переиндексации необходимо выставить параметр "Переиндексировать все" = 1, начальные строки и количество строк за сеанс устанавливаются в зависимости от возможностей вашего хостинга (например 0 и 10 000 соответственно - проиндексирует строки с 0 в количестве 10 000 штук в БД необходимо открыть и пересохранить любой документ для создания события onDocFormSave
для последующей работы установите "Переиндексировать все" = 0, "Строк за сеанс индексировать" = 1 при этом происходит переиндксация только того документа, который сохраняется
Пример вызова:
[!evoSearch? &tpl=`evoSearch`!]
Параметры:
&noResult
Ничего не найдено - строка, которая выводится при отсутствии результата поиска - необязательно)
&addSearch
для опционального отключения дополнительного поиска при пустом fulltext-search
по умолчанию - 1
&extract
отключить экстректор - формирует нужную часть текста с подсветкой из результатов поиска (плейсхолдер [+extract+] в чанке вывода результатов DocLister)
по умолчанию 1 (извлекать)
&maxlength
максимальная длина извлекаемой части текста в резуьлтатах поиска
по умолчанию - 350
&show_stat
отключаем показ статистики "найдено....показано...с...по...".
По умолчанию 1 - показ включен
&statTpl
шаблон показа статистики
По умолчанию:
По запросу [+stat_request+] найдено всего [+stat_total+]. Показано [+stat_display+], c [+stat_from+] по [+stat_to+]
где:
[+stat_request+] - запрос из строки $_GET['search'] [+stat_total+] - найдено всего [+stat_display+] - показано на текущей странице с [+stat_from+] по [+stat_to+]
&rel
релевантность поиска, по умолчанию 2, чем выше цифра - тем более релевантные результаты и тем их меньше
&addLikeSearch
добавляем функционал для поиска через like (на случай, если слов не было в словаре).
По умолчанию - 0
addLikeSearchType
тип поиска addLikeSearch (oneword- любое слово, allwords-все слова).
По умолчанию exact - фраза целиком
addLikeSearchLength
минимальная длина слова для поиска в addLikeSearch
По умолчанию - 3
Остальные параметры - дублируют параметры вызова DocLister
Обрабатывает $_GET['search'] в качестве входной строки для поиска
Подсветка найденных слов в pagetitle и extract в результатах поиска осуществляется тегом - т.е. возможна ее стилизация через css-файлы