Полнотекстовый поиск MySql - релевантность

12 3
Антон Лавеев
На сайте с 31.10.2005
Offline
408
9752

Всем привет! Вот я тут дерзнул прикрутить к каталогу в (в подписи) полнотекстовый поиск средствами mysql. Прочитав энное кол-во материалов в данной ветке, пришел к выводу, что это не серьезно, но все же... Вроде местами не так уж и плохо выходит. Вопрос по вычеслению релевантности..

Сайты в каталоге индекируются, в базу вносятся title, meta desc и meta keys. Так же отдельно содержимое: <h*><b><strong>. Дальше я складываю релевантность этих полей (относительно запроса) средствами mysql fulltext, вычисля некое число, при чем они (поля) естественно имеют разный вес, и по этому числу ранжирую выдачу, выбранную match against in boolean mode оп всем этим же полям. Но возникает проблема, связанная с малой величиной индекса (порядка ~4500 документов). Порой не ищутся самые простейщие запросы... . Вопрос, собственно, может ли повысится качество поиска с увеличением индекса, либо я вообще все не правильно делаю? Просьба слегка потестить, кому не лень... :)

☠️☠️☠️
ЗодчийТеней
На сайте с 13.02.2006
Offline
11
#1

можно подробнее расписать проблему?

Я, однако, не скажу, что все иллюзии или бред нашего ума нужно называть сумасшествием. Эразм Роттердамский "Похвала глупости".
Антон Лавеев
На сайте с 31.10.2005
Offline
408
#2
ЗодчийТеней:
можно подробнее расписать проблему?

Ну предположим запрос "туры в грецию" - все ок

Второй сайт имеет в тексте такую фразу: "волны у пляжей"

И по этой фразе уже ничего не находится. И просто "волны" тоже ноль. Подозреваю, что это из за того, что данная фраза или слово слишком мало встречается в базе вообще, и релевантность получается меньше некоего барьера. Так это или нет? Ибо по фразам или словам, содержащимся в большем количестве по индексу ищет без проблем. Например "курорт".

ps Запрос формирую так

"SELECT *, 

MATCH (fild1) AGAINST ($serch)/$var1+
MATCH (fild2) AGAINST ($serch)/$var2+
MATCH (fild3) AGAINST ($serch)/$var3+
MATCH (fild4) AGAINST ($serch)/$var4+
FROM BASE
AS Relevance
WHERE
MATCH (fild1) AGAINST ($serch IN BOOLEAN MODE) AND
MATCH (fild2) AGAINST ($serch IN BOOLEAN MODE) AND
MATCH (fild3) AGAINST ($serch IN BOOLEAN MODE) AND
MATCH (fild4) AGAINST ($serch IN BOOLEAN MODE) AND
ORDER BY Relevance DESC
"

Где $search может быть либо "+слово1* слово2*" либо "+слово1* +слово2*", а $var число на которую делю число релевантности, чтобы уменьшить ее вес.

Вот.

ЗодчийТеней
На сайте с 13.02.2006
Offline
11
#3

FROM BASE AS Relevance WHERE

причем здесь это?

Антон Лавеев
На сайте с 31.10.2005
Offline
408
#4
ЗодчийТеней:
FROM BASE AS Relevance WHERE
причем здесь это?

Как это при чем? 😕

ЗодчийТеней
На сайте с 13.02.2006
Offline
11
#5

ну вот и попробуй объяснить при чем, разбери структуру своего запроса и сам увидиш ошибку

lagif
На сайте с 15.12.2004
Offline
30
#6

А сколько сайтов в каталоге, можно узнать?

Это тоже пройдет...
Антон Лавеев
На сайте с 31.10.2005
Offline
408
#7
lagif:
А сколько сайтов в каталоге, можно узнать?

На текущий момент 4640

ЗодчийТеней:
ну вот и попробуй объяснить при чем, разбери структуру своего запроса и сам увидиш ошибку

Тут дело не в ошибке в sql. У меня есть рабочая система. Пример строчил по быстрому, но он отражает суть. Моя проблема в другом. Суть вопроса я изложил.

lagif
На сайте с 15.12.2004
Offline
30
#8

Tarry, Тестить не тестила, но, может, вам не хватает морфологического анализа? Словоформы учитываются?

Антон Лавеев
На сайте с 31.10.2005
Offline
408
#9
lagif:
Tarry, Тестить не тестила, но, может, вам не хватает морфологического анализа? Словоформы учитываются?

Безусловно, его не хватает. Это,так сказать, вторая часть марлизонского балета. Беспокоит отсутствие в выдаче документов, явно содержащих слово.

ЗодчийТеней
На сайте с 13.02.2006
Offline
11
#10
Tarry:
Тут дело не в ошибке в sql. У меня есть рабочая система. Пример строчил по быстрому, но он отражает суть. Моя проблема в другом. Суть вопроса я изложил.

выборку и сортировку ты делаешь sql запросом (средствами mysql fulltext, match against in boolean mode) и при этом утверждаешь что ошибка не в нем? приведи пример своего запроса, рабочий пример, и тогда будет что обсудить, покачьто постановка вопроса идет на уровне "у меня ошибка, помогите". Так тебе наврядли что-то объяснят, да и думаю что вопросы по мьускулю не типичны для данного форума.

12 3

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий