Плагин «Поиск по топикам, комментариям, людям (Simple Search and Auto Completer)»
Хороший поиск с простой релевантностью (на основе регулярных выражений в запросах к БД) по топикам (заголовок, текст), комментам и пользователям (логин, имя, страна, город, сайт, имя сайта, аська и поле «о себе»), автозаполнение (автокомплитер) по тегам, логинам для формы поиска. Не требует установки других плагинов для своей работы. Альтернатива сфинксу.
Плагин планировался как простая альтернатива aceMySearch (для его установки нужна админка, да и ищет он либо точно либо не точно, выдача результатов тоже не устраивала), а вышел лучше (субъективно).
Преимущества перед поиском aceMySearch (все равно кто-нибудь да спросит):
— поддержка украинских символов і, ї, є в поиске прямо из коробки
— плагин является standalone — т.е. для его работы не нужны другие плагины (как например для работы плагина aceMySearch нужна админка)
— улучшенный алгоритм релевантности при поиске (см. ниже)
— улучшенное восстановление кодировки если та по пути до сервера была «повреждена» (ввели в строке старого браузера или «выпал» последний символ юникода кириллического символа)
— по непроверенным данным (общепринятому мнению) используемые запросы (INNER JOIN) являются быстрее тех, на которых построен плагин aceMySearch (LEFT JOIN), итого: прирост в скорости поиска.
— в вывод попадают сначала самые свежие топики, а старые отправляются в конец, предварительно посортировавшись по важности (релевантности).
Релевантность выдачи:
Поиск использует выдачу на основе точного совпадения с искомым словом, а потом уже похожих слов (без учета морфологии, только по частям слов) и строит на основе этого результаты.
т.е. в выдачу сначала попадают объекты в которых найдено точное совпадение с запросом, потом — похожие.
Наибольший приоритет имеет текст топика — если в нем найдено точное совпадение — делаем вес релевантности самым большим, потом точное совпадение плагин ищет в заголовке, потом производится поиск на не точное совпадение снова в тексте топика и в заголовке. Потом идет сортировка по рейтингу, а потом уже по времени публикации (на самом деле по ИД, но ИД отображает «дальность» публикации т.к. автоматически инкрементируется), самые старые объекты будут в конце поисковой выдачи.
Рассмотрим запрос на украинском языке "їжа kiss": плагин выведет первым топик в котором есть слово kiss с рейтингом +2, потом топик о еде ("їжа") с нулевым рейтингом и потом топик о ежиках ("їжак", "їжаки" и т.п.) тоже с нулевым рейтингом, причем результаты поиска будут определены по группам точное/не точное совпадение в заголовке/тексте.
В плагин включен автокомплитер по тегам для поиска который раньше был выполнена в виде отдельного плагина.
В плагин добавлена возможность поиска по людям:
Поиск выполняется по логину, имени, стране, городу, сайту, имени сайта, аське и поле «о себе». Релевантность при поиске пользователей не используется, на форме есть опция «точный/не точный поиск», которая задает алгоритм поиска.
При выводе результаты поиска выводятся в порядке релевантности: сначала точные результаты, потом похожие. Каждая группа результатов подписана и визуально отделена.
Поисковый запрос выделяется в тексте цветом.
Запросы оптимизированы, все результаты поиска кешируются.
В конфиге доступны параметры:
— Минимальная длина поискового запроса (всего)
— Максимальная длина поискового запроса (всего)
— Минимальная длина слова в запросе
— Максимальная длина слова в запросе
— Вырезать ли все теги из поискового запроса, иначе — обработать стандартным парсером ЛС
— Количество результатов поиска на страницу
— Включать ли автозаполнение (автокомплитер) по тегам для формы поиска
— Включить поиск по топикам
— Включить поиск по комментариям
— Включить поиск по людям
Проверка запроса:
— Символы, которые считаются валидными. Все остальные вырежет парсер. Для добавления других языков сюда нужно будет внести набор символов (регеспа)
Выделение результатов поиска в тексте:
— Граница слова, используется при подсветке результатов поиска (регекспа)
— Выделение искомого слова слева (html строка)
— Выделение искомого слова справа (html строка)
Поиск по релевантности информации:
— Точный поиск по умолчанию, если не задано другого (можно задавать параметр «strict» в форме поиска чтобы изменять это значение). Например, поиск по слову «Сон» — будет искать точное совпадение (регистр-независимое), иначе найдет «Сонату» и т.п.
— Разрешить НЕ точный поиск ДОПОЛНИТЕЛЬНО и ТОЛЬКО если включен точный поиск. Результаты будут выдаваться на основе релевантности найденной информации — сначала тексты, где найдено точное совпадение с искомым запросом, потом — тексты, где встречаются и похожие слова
Сортировка результатов:
— Как выводить топики
— Как выводить комментарии
— Как выводить людей
Этот плагин в каталоге. Стоимость 10$.
P.S. Скидочные коды:
db8046bdиспользован — Скидка в 20%1d65af58использован — Скидка в 20%85ec2239использован — Скидка в 20%
1.
2.
3.
4.
5.
16 комментариев
— как подключать поиск по другим таблицам/полям? например у меня на сайте включен модуль микроблогов
— интересно как он в сравнении со сфинксом (релевантность, скорость)?
1. ф-я подготовки, фильтрации и конфигурирования запроса на основе установленных параметров
2. вызов ф-и маппера (обращение к БД) через ф-ю кеша (там своя обертка над кешем для простоты работы с ним)
3. пропустить результаты поиска через ф-ю подсветки найденных результатов.
4. мелкие дополнения вроде пагинации
4. вывод в шаблон.
т.е. добавление нового типа поиска сводится к новой ф-и поиска к маппере (написанию нового запроса к БД по аналогии), а остальные функции уже подготовлены.
сфинкс должен быть круче все равно, я на звание «это лучше сфинкса» не претендую.
сфинкс учитывает морфологию слов, а этот плагин использует механизм «ищу точное совпадение и не точное (часть слова)» и выводит результаты на основе этого.
для установки сфинкса нужен свой сервер, поэтому это альтернатива для виртуальных серверов и тем, кому не надо админка.
Вечером заберу!
Будет ли работать данный плагин под 042 и mootools?
Sphinx vs ace vs этот плагин.
Понятно что Sphinx в десятки раз быстрее ace'a построенного на LIKE запросах, а вот во сколько раз ACE быстрее этого плагина уже интересно, единственные тесты, которые я на хабре видел REGEXP vs LIKE показывали, что последний, примерно, в 10 раз быстрее отрабатывает.
Ну или, например, провести тест вашего плагина на таблице комментариев тысяч в 100 записей хотя бы, лучше в 500 — 1000.
он не быстрее, в топике и выше говорится почему.
кстати я видел где-то как раз другие результаты — про неоднозначность лайка — на маленьких запросах он впереди но стоит добавить несколько лайков в запрос как начинается казус.
Еще будут промокоды? Со скидочкой взял бы ;)
хочу их оба за PayPal купить)
Спасибо!