У меня есть база данных из 80 000 строк, и когда я тестировал некоторые запросы FULLTEXT, я столкнулся с неожиданным результатом. Я удалил из MYSQL стоп-слова и установить минимальную длину слова до 3.MYSQL fulltext - неожиданный результат
Когда я делаю этот запрос:
SELECT `sentence`, MATCH (`sentence`) AGAINST ('CAN YOU FLY') AS `relevance`
FROM `sentences`
WHERE MATCH (`sentence`) AGAINST ('CAN YOU FLY')
ORDER BY `relevance` DESC
Это дает этот результат:
NO A FLY WITHOUT WINGS WOULD BE CALLED A WINGLESS | 10.623517036438
I CAN FLY | 7.61278629302979
I CAN FLY :) | 7.61278629302979
CAN YOU FLY? | 7.61278629302979
THEY CAN FLY | 7.61278629302979
YOU AM NOT FLY | 7.61278629302979
CAN YOU FLY | 7.61278629302979
HAVE YOU EVER SWALLOWED A FLY? | 7.52720737457275
I JUST WANNA FLY | 7.52720737457275
Почему «NO A ЛЕТАТЬ БЕЗ КРЫЛЬЯ БЫЛО ЗВОНОТЬ «БЕСПЛАТНО» получил самую высокую актуальность, он содержит только одно из слов ... Кроме того, как получилось «МОЖЕТЕ ЛИ ВЫ ЛЕТАТЬ» не наверху, это точное совпадение.
Я бы хотел, чтобы это было на заказ по наиболее подходящим ключевым словам, а затем заказывайте те, которые в порядке, а затем заказывайте наименьшее количество слов. Это дало бы логический результат:
CAN YOU FLY
CAN YOU FLY?
I CAN FLY
THEY CAN FLY
I CAN FLY :)
YOU AM NOT FLY
HAVE YOU EVER SWALLOWED A FLY?
I JUST WANNA FLY
NO A FLY WITHOUT WINGS WOULD BE CALLED A WINGLESS
Вау, они серьезно должны пересмотреть свою формулу, если даже не точная фраза находится в верхней части результатов ... – Lenton
@ user1970772 Это полнотекстовый поиск, он не предназначен для 3-х словных документов. Например, 'FLY' присутствует во всех документах, поэтому он не имеет значения, он увеличивает значение' nf'. – Tchoupi
Знаете ли вы какие-либо альтернативы FULLTEXT, которые дадут мне мой желаемый результат? – Lenton