MySQL полнотекстового поиска оценивает все результаты с одинаковым значением - PullRequest
0 голосов
/ 12 июня 2019

У меня есть таблица продуктов с именем столбца, в которой я хочу выполнить полнотекстовый поиск.

Там есть данные:

name, other columns ...
...
BR26 AF-1, ...
BR26 AF-2, ...
BR26 AF-3, ...
BR26 AF-4, ...
BR26 AF-5, ...
BR26 AF-5, ...
BR26 AF-6, ...
BR26 AF-7, ...
BR26 AF-8, ...
BR26 AF-9, ...
BR26 AF-10, ...
BR26 AF-11, ...
BR26 AF-12, ...
BR26 Beton, ...
... 

Итак, я сделал:

ALTER TABLE products ADD FULLTEXT(name);

Теперь я подготовил запрос, чтобы найти и вернуть результаты сопоставления, упорядоченные по релевантности оценки совпадений.

Я уже пробовал с IN BOOLEAN MODE

SELECT *, MATCH (name) AGAINST ( 'BR26 AF-1' IN NATURAL LANGUAGE 
MODE ) as score FROM products WHERE MATCH (name) AGAINST ( 
'BR26 AF-1' IN NATURAL LANGUAGE MODE ) AND active='1' ORDER BY 
score DESC

Actualрезультаты и оценки:

name, score, other columns ...
BR26 AF-5, 3.1776015758514404, ...
BR26 AF-2, 3.1776015758514404, ...
BR26 AF-3, 3.1776015758514404, ...
BR26 AF-4, 3.1776015758514404, ...
BR26 AF-1, 3.1776015758514404, ...
BR26 Beton, 3.1776015758514404, ...
BR26 AF-6, 3.1776015758514404, ...
BR26 AF-7, 3.1776015758514404, ...
BR26 AF-8, 3.1776015758514404, ...
BR26 AF-9, 3.1776015758514404, ...
BR26 AF-10, 3.1776015758514404, ...
BR26 AF-11, 3.1776015758514404, ...
BR26 AF-12, 3.1776015758514404, ... 

Ожидаемые результаты и оценки:

name, score, other columns ...
BR26 AF-1, <highest score>, ...
BR26 AF-2, <lower score>, ...
BR26 AF-3, <lower score>, ...
BR26 AF-4, <lower score>, ...
BR26 AF-5, <lower score>, ...
BR26 AF-6, <lower score>, ...
BR26 AF-7, <lower score>, ...
BR26 AF-8, <lower score>, ...
BR26 AF-9, <lower score>, ...
BR26 AF-10, <lower score>, ...
BR26 AF-11, <lower score>, ...
BR26 AF-12, <lower score>, ...
BR26 Beton, <lower score>, ... 

Что я делаю не так, чтобы не получить ожидаемый порядок результатов?По моему мнению, «BR26 AF-1» будет соответствовать 100%, и поэтому он должен иметь самый высокий балл.

...