Как рассчитать «уровень достоверности» результатов, возвращаемых запросом индекса MySQL FULLTEXT? - PullRequest
0 голосов
/ 04 мая 2018

Предположим, у вас есть индекс FULLTEXT, определенный для столбца в таблице базы данных MySQL, чтобы разрешить поиск на естественном языке. Если вы теперь выполните запрос, используя MATCH () и AGAINST (), вы можете получить «ранг» результатов поиска, как описано здесь:

https://dev.mysql.com/doc/refman/5.6/en/fulltext-natural-language.html

Например:

mysql> SELECT id, body, MATCH (title,body) AGAINST
('Security implications of running MySQL as root'
IN NATURAL LANGUAGE MODE) AS score
FROM articles WHERE MATCH (title,body) AGAINST
('Security implications of running MySQL as root'
IN NATURAL LANGUAGE MODE);
+----+-------------------------------------+-----------------+
| id | body                                | score           |
+----+-------------------------------------+-----------------+
|  4 | 1. Never run mysqld as root. 2. ... | 1.5219271183014 |
|  6 | When configured properly, MySQL ... | 1.3114095926285 |
+----+-------------------------------------+-----------------+
2 rows in set (0.00 sec)

Проблема в том, что MATCH () возвращает некоторое число с плавающей запятой, но без верхней границы. Мне нужно вывести «коэффициент достоверности» для каждой из полученных строк в процентах от 0 до 100. Например, коэффициент достоверности 95% для конкретной строки будет означать, что вполне вероятно, что именно то, что ищет пользователь. И наоборот, если коэффициент доверия низкий, это будет что-то вроде 10%.

Обратите внимание, что дело не в том, чтобы выбрать значение Larges из MATCH () и установить его равным 100. Строка с наибольшим значением может все еще не соответствовать тому, что ищет пользователь ... Так что, возможно, используя MATCH () не сработает, но не могли бы вы предложить какой-нибудь способ вычисления такого «фактора доверия»?

Большое спасибо заранее.

...