Плагин «Поиск по топикам, комментариям, людям (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 комментариев

avatar
по описанию плагин крут! есть несколько вопросов:
— как подключать поиск по другим таблицам/полям? например у меня на сайте включен модуль микроблогов
— интересно как он в сравнении со сфинксом (релевантность, скорость)?
avatar
— как подключать поиск по другим таблицам/полям? например у меня на сайте включен модуль микроблогов
это не предусмотрено. можно только написать по аналогии кода, там все структурировано так:
1. ф-я подготовки, фильтрации и конфигурирования запроса на основе установленных параметров
2. вызов ф-и маппера (обращение к БД) через ф-ю кеша (там своя обертка над кешем для простоты работы с ним)
3. пропустить результаты поиска через ф-ю подсветки найденных результатов.
4. мелкие дополнения вроде пагинации
4. вывод в шаблон.
т.е. добавление нового типа поиска сводится к новой ф-и поиска к маппере (написанию нового запроса к БД по аналогии), а остальные функции уже подготовлены.

— интересно как он в сравнении со сфинксом (релевантность, скорость)?
сфинкс должен быть круче все равно, я на звание «это лучше сфинкса» не претендую.
сфинкс учитывает морфологию слов, а этот плагин использует механизм «ищу точное совпадение и не точное (часть слова)» и выводит результаты на основе этого.
для установки сфинкса нужен свой сервер, поэтому это альтернатива для виртуальных серверов и тем, кому не надо админка.
avatar
That's what i am fucking talking about!
Вечером заберу!
avatar
Добрый день!
Будет ли работать данный плагин под 042 и mootools?
avatar
если переписать автокомплитеры, то будет
avatar
1d65af58 вычеркните
avatar
Привет! А скорость замеряли? Мне просто любопытны цифры, для расширения кругозора.
Sphinx vs ace vs этот плагин.
Понятно что Sphinx в десятки раз быстрее ace'a построенного на LIKE запросах, а вот во сколько раз ACE быстрее этого плагина уже интересно, единственные тесты, которые я на хабре видел REGEXP vs LIKE показывали, что последний, примерно, в 10 раз быстрее отрабатывает.
Ну или, например, провести тест вашего плагина на таблице комментариев тысяч в 100 записей хотя бы, лучше в 500 — 1000.
avatar
Sphinx vs ace vs этот плагин.
сфинкс не знаю, но ace либо на доли секунды дольше работал либо так само по скорости (на небольшой базе), но надо учесть что плагин simple search имеет более лучший алгоритм релеваности, поэтому выигрыш по скорости simple search незначителен.

а вот во сколько раз ACE быстрее этого плагина уже интересно,
он не быстрее, в топике и выше говорится почему.
единственные тесты, которые я на хабре видел REGEXP vs LIKE показывали, что последний, примерно, в 10 раз быстрее отрабатывает.
кстати я видел где-то как раз другие результаты — про неоднозначность лайка — на маленьких запросах он впереди но стоит добавить несколько лайков в запрос как начинается казус.
avatar
Отдельно поиск пользователей где-нибудь можно нарыть? У меня просто sphinx стоит.
avatar
нету. если вам ооочень надо — я могу сделать даунгрейд плагина и оставить только поиск по людям
avatar
avatar
Спасибо большое!
avatar
Неуспел, последний промокод уже стянули!
Еще будут промокоды? Со скидочкой взял бы ;)
avatar
последний — рабочий ;)
avatar
Проверьте пожалуйста правильность промокода, так как при оформлении говорит «Промо-код уже использован».
avatar
А можете сделать Bundles из плагинов «Оценка фото пользователя (Rate user photo)» и «Поиск по топикам, комментариям и людям (Simple Search and Auto Completer)»
хочу их оба за PayPal купить)
Спасибо!
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.