Войти

Показать полную графическую версию : поиск по сайту (статические страницы)


Страниц : 1 [2]

mar
14-11-2005, 14:57
Vlad Drakula
Звездочка является оператором усечения. В отличие от остальных операторов, она должна добавляться в конце слова, а не в начале.
пример:
apple*

... ``apple'', ``apples'', ``applesauce'', и ``applet''."

только у меня что-то не отрабатывает ни в русском, ни в латыни, вернее отрабатывает криво - вываливает все с релевантностью 0 :(
Попробую разобраться

mar
14-11-2005, 15:04
Кажется, нашла:
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" оно найдет?

mar
15-11-2005, 01:19
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 должна быть на самом верху!

mar
15-11-2005, 12:59
Vlad Drakula
ну, "у меня" сайт с немного совсем другой тематикой :)
Хотя, я бы, наверное, для случаев *слово (в отличие от слово*) написала один запрос, а остальное использовала бы as is - больно уж качественно и быстро работает (что, наверное, и должно быть - все-таки то, что делается средствами СУБД по скорости не переплюнуть :))

Vlad Drakula
15-11-2005, 13:38
mar
понятия скорость и функциональность это разные вещи, зачастую приходится жертвовать скоростью чтобы получить именно то чего хочется.

archy
16-11-2005, 09:39
ispell после колдовства умеет выдавать словоформы. А чем mnogosearch не устраивает?

mar
17-11-2005, 01:49
archy
ispell вообще штука замечательная и прикручиваемая к tsearch2 (postgresql). mnogosearch - тоже хорошо, но скорей всего на своем сервере (то есть ближе к случаю Влада). А в том случае о котором я пишу исторически сложился mysql + статика. Опять же может быть загоняние статики в базу данных подстегнет народ к переходу на движек ;] Ну, а мне хртелось посмотреть, что за зверь такой mysql-ый fulltext :) Посмотрела - пока нравится.




© OSzone.net 2001-2012