Поддержать Проект

Обратная связь

[MODX] Guru
  • Информация
  • Разработчикам
  • Дополнения
    • DocLister
    • DLMenu
    • DLCrumbs
    • DLBuildMenu
    • DLLastViews
    • DLSiblings
    • DLRequest
    • DLglossary
    • DLSitemap
    • DocInfo
    • FormLister
    • Wayfinder
    • phpthumb
    • LikeDislike
    • eForm
    • Ditto
    • multiTV
    • AjaxMegaSearch
    • AjaxSearch
    • WebLoginPE
    • Breadcrumbs
    • CodeMirror
    • AnythingRating
    • Easy Newsletter
    • FirstChildRedirect
    • OpenGraphTags
    • ddTypograph
    • TagSaver
    • BlackList
    • CfgTv
    • ModxAccount
    • Forgot Manager Login
    • GetField
    • if
    • Jot
    • ListChild
    • ListIndexer
    • ManagerManager
    • ddMMEditor
    • MaxiGallery
    • MemberCheck
    • ddGetMultipleField
    • MetaX
    • MODxBB и phpBB
    • Yams
    • Personalize
    • PHx
    • Reflect
    • tagLinks
    • TransAlias
    • TvTagCloud
    • UltimateParent
    • WebSignup
    • WebLogin
    • countViews
    • thumb
    • imageCaptor
    • optimizeJPG
    • Preview Next
    • Shopkeeper
    • SiteMap
    • Sass
    • Selector
    • SimpleGallery
    • SimpleTube
    • SimpleFiles
    • Star Rating
    • MinifyX
    • adminNav
    • SimplePolls
    • CResource
    • MODxAPI
    • customTables
    • HtmlInLine
    • HtmlMinModxEvo
    • SHKUserProfile
    • PickDocsInTree
    • evoSearch
    • editDocs
    • PageBuilder
    • HybridAuth
    • Compare
    • alterTitle
  • Виджеты
  • Уроки
  • Разработчики
  • Готовые примеры
  • Блог
  • Конфиги
  • HTML коды
© [MODX] Guru
  • Дополнения
  • avatar
    • Автор: webber
    • customTables
    • adminNav

evoSearch - индексирование и поиск с учетом морфологии

  • Дополнения
  • evoSearch
4932

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-файлы