Показать полную графическую версию : поиск по сайту (статические страницы)
Vlad Drakula
Звездочка является оператором усечения. В отличие от остальных операторов, она должна добавляться в конце слова, а не в начале.
пример:
apple*
... ``apple'', ``apples'', ``applesauce'', и ``applet''."
только у меня что-то не отрабатывает ни в русском, ни в латыни, вернее отрабатывает криво - вываливает все с релевантностью 0 :(
Попробую разобраться
Кажется, нашла:
SELECT uri, title,
MATCH (text) AGAINST ('apple* fruit*' IN BOOLEAN MODE) AS relevant
FROM `search_index` WHERE
MATCH (text) AGAINST ('apple* fruit*' IN BOOLEAN MODE)
Вечером, попробую придумать что-нибудь более оптимальное для общего запроса.
Vlad Drakula
14-11-2005, 15:08
mar
а слово "biapples" оно найдет?
Vlad Drakula
не найдет. Но мне, честно говоря, и не надо. Я сама чаще ищу слова без окончания, чем без приставок :)
В общем, сделано так:
$search_text = $_POST['search_text'];
$bool = false;
if( (strpos($search_text, "*") > 0) ||
(strpos($search_text, '"') > 0) ||
(strpos($search_text, "~") > 0) ||
(strpos($search_text, "+") > 0) ||
(strpos($search_text, "-") > 0) ||
(strpos($search_text, ">") > 0) ||
(strpos($search_text, "<") > 0) ||
((strpos($search_text, "(") > 0) && (strpos($search_text, ")") > strpos($search_text, "("))))
$bool = true;
Дальше в случае $bool в запрос добавляется IN BOOLEAN MODE (см. выше)
Vlad Drakula
15-11-2005, 12:36
mar
не найдет. Но мне, честно говоря, и не надо. Я сама чаще ищу слова без окончания, чем без приставок
а вот в этом и проблемма!
если ищут слово DVD, то программа WinDVD должна быть на самом верху!
Vlad Drakula
ну, "у меня" сайт с немного совсем другой тематикой :)
Хотя, я бы, наверное, для случаев *слово (в отличие от слово*) написала один запрос, а остальное использовала бы as is - больно уж качественно и быстро работает (что, наверное, и должно быть - все-таки то, что делается средствами СУБД по скорости не переплюнуть :))
Vlad Drakula
15-11-2005, 13:38
mar
понятия скорость и функциональность это разные вещи, зачастую приходится жертвовать скоростью чтобы получить именно то чего хочется.
ispell после колдовства умеет выдавать словоформы. А чем mnogosearch не устраивает?
archy
ispell вообще штука замечательная и прикручиваемая к tsearch2 (postgresql). mnogosearch - тоже хорошо, но скорей всего на своем сервере (то есть ближе к случаю Влада). А в том случае о котором я пишу исторически сложился mysql + статика. Опять же может быть загоняние статики в базу данных подстегнет народ к переходу на движек ;] Ну, а мне хртелось посмотреть, что за зверь такой mysql-ый fulltext :) Посмотрела - пока нравится.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.