Как улучшить поиск?
Ни для кого не секрет, что поиск по русским текстам - не самая простая задача. Мощные поисковые системы типа Гугля или Яндекса, разумеется, могут позволить себе использовать крутые патентованные алгоритмы. А что делать простым смертным? Надеяться, что посетитель додумается откусить хвостик искомого слова, чтобы была больше вероятность попадания? Не обязательно. Мы можем использовать стемминг (процесс нахождения основы слова) для обработки поискового запроса.
Не буду вдаваться в подробности, а просто скажу, что в предлагаемом плагине использован стеммер Портера, модифицированный для русского языка (спасибо автору php-класса). Класс пришлось немного переделать для работы с кодировкой utf-8. В результате этому плагину требуется для работы расширение mb_string.
Возможна несовместимость с плагинами, авторы которых твердо уверены, что поисковый запрос в WordPress может выглядеть исключительно как /?s=тратата.
Updates:
21.10.2008 Версия 1.1 - добавлено восстановление оригинального запроса, выводимого на сайте функцией the_search_query();


Comment sonika — 25 сентября 2008 в 00:00
Звучит пиз..то! Завтра прямо с утра попробую!
Comment Zmij_Gorynytch — 8 октября 2008 в 07:44
а сам php-лласс с каментами разработчика можно где-то взять? и вообще, почитать о методе стемминга в русском языке хоцца очень
зы. если вопрос - боян, просьба не кидать овощи, ибо я первый раз на этом блоге))
Comment Ю.Б. — 8 октября 2008 в 11:21
Класс внутри плагина. Ни одного авторского комментария я не удалял. Где почитать - не знаю, но думаю, что в Интернете
Comment Zmij_Gorynytch — 19 октября 2008 в 06:33
спасиб, класс увидел, но думал, что есть с каментами автора - в инете не нашёл
но в принципе уже, вроде, и так разобрался, там не сложная задумка. просто я когда-то пытался написать нечто вроде такого класса для русскоязычного стемминга - у меня ничо толкового не вышло, вот и набираюсь премудрости у более сообразительных людей))
Comment Виталий — 21 октября 2008 в 20:21
замечательный плагин!!!
есть только один вопрос: по задаче на странице с результатами печатается поисковый запрос. соответственно, благодаря данному плагину значение переменной $s печатается уже в обрезанном виде - то не есть красиво.
есть ли возможность перехватить значение запроса до того, как его обработал плагин?
и соответственно именно его и напечатать?
Comment Ю.Б. — 21 октября 2008 в 20:34
Как говорится, спасибо за вопрос. Если поиск вызывается через ?s=, то в формочке можно вывести $_GET['s']. Но лучше подождите обновления плагина… Уже обновлен до версии 1.1.
Comment Дениска — 14 ноября 2008 в 22:31
Спасибо большущее, Юрий, за плагинчики! Очень помогли.
Пинг Русский WordPress 2.7 Lecactus Edition - Lecactus Home — 12 декабря 2008 в 09:50
[...] wp_stem_ru — Улучшение поиска за счет обработки поискового запроса стеммером Портера. описание по ссылке [...]
Comment Александр — 27 января 2009 в 16:58
Извени что спрашую я лаймер но инструкцию по установке этого плагина где можно прочитать?
Comment Ю.Б. — 27 января 2009 в 17:03
Установка не отличается оригинальностью. Всё как обычно: развернуть архив, скопировать файл в директорию wp-content/plugins/ и активировать плагин в админке.
Comment Ольга — 21 июля 2009 в 14:26
Спасибо автору за плагин! Поставила на свой сайт http://dar33.ru - проверила набрав вместо серебрянный серебрянную. Работает! Ура! Еще большое спасибо за последнюю запись - инструкцию как этот плагин заставить работать ) Мы все где-то когда-то бываем новичками.
Comment Александр. — 13 декабря 2009 в 00:03
Доброго времени суток!
Видел как Ваш плагин отлично работает. Но после обновления WordPress до 2.8.6 (с Lecactus.ru) страница поиска перестала работать: “Fatal error: Call to undefined function mb_internal_encoding() in Z:\home\localhost\www\localblog\wp-content\plugins\wp_stem_ru.php on line 50″
Помогает только отключения плагина. Пожалуйста, подскажите, что можно предпринять?
Comment Ю.Б. — 13 декабря 2009 в 01:12
Судя по сообщению об ошибке, у php отсутствует расширение mb_string, а без него ни с какой версией WP плагин работать не может.
Comment Александр. — 25 декабря 2009 в 00:04
Спасибо! Я начинающий. Надеюсь, на реальном сервере заработает.
Comment Евгений — 19 мая 2010 в 10:02
Большое спаибо за плагин, но есть небольшая загвоздка.
Раньше он работал отлично.
А при переходе на новый хостинг поиск, при включённом плагине, стал выдавать пустую страницу
http://www.zvezdolet.lv/?s=test&x=11&y=7
в http watch professional показывает 500 internal server error
Чтобы это могло быть?
Заранее большое спасибо!!!
Comment Ю.Б. — 19 мая 2010 в 10:24
Смотрите, что Апач пишет в лог ошибок. Возможно, на новом хостинге выделено меньше памяти для скриптов (memory_limit).
Comment Евгений — 19 мая 2010 в 11:43
Самое интересное, что он вообще ничего не пишет.
Как-будто этой ошибки и не было вовсе
Comment Ю.Б. — 19 мая 2010 в 11:56
Значит, так настроен сервер. Все-таки, если memory_limit < 64M, по возможности увеличьте его. Wordpress прожорлив.
Comment Евгений — 20 мая 2010 в 00:09
Спасибо!
memory_limit = 32M
Вот что я нарыл.
Если в самом плагине стереть
$words = preg_split(’/[ ,\.\?!=]/u’,$wp_query->query_vars['s']);
и
function Lingua_Stem_Ru() {
mb_internal_encoding(”UTF-8″);
}
то поиск “работает” (ничего не находит, но не показывет белую страницу)
Может сможете подсказать в чём же может быть причина?
А то плагин незаменимый, аналогов ему я не нашёл.
У моего друга ваш плагин работает и с memory_limit = 8M
С хостингом могу делать что угодно - виртуальный сервер.
Comment Ю.Б. — 20 мая 2010 в 00:20
Если выкинуть двигатель, автомобиль станет заметно легче, правда ехать будет только с горки
Так поставьте memory_limit=64M
Comment Евгений — 20 мая 2010 в 19:11
Всё разобрался.
Оказывается в php.ini было прописано не показывать ошибок. Как только поставил показать оно показало на ошибку в mb_internal_encoding.
Установил (не без танцев с бубнами) на сервер mbstring и всё заработало.
Извините за беспокойство и ламерский подход к проблеме - с апачем столкнулся впервые.
Comment Ю.Б. — 20 мая 2010 в 19:14
No problem! Главное - что разобрались. Теперь знаете, с какого конца распутывать такие клубочки
PS Рекомендую phpinfo сильно не светить