Полнотекстовый поиск MySQL по комбинации чисел и строк - PullRequest
0 голосов
/ 16 октября 2019

У меня есть таблица InnoDB с именем Product, подобная этой:

MariaDB [learn_fts]> select * from product;
+------------+-----------------------------+--------------+
| product_id | product_name                | product_size |
+------------+-----------------------------+--------------+
|          1 | Something 90 Fishy Thing    | 1-1/2"       |
|          2 | Very 90 Fishy Thing         | 2"           |
|          3 | Not Another 45 Fishy Thing  | 3" x 2"      |
|          4 | Yet Another 90 Fishy Thing  | 4" x 2"      |
|          5 | Oh 90 Fishy Thing           | 3/4"         |
|          6 | No 45 Fishy Thing           | 4"           |
|          7 | Just Another 45 Fishy Thing | 2" x 1"      |
|          8 | Fishy 45 Fishy Thing        | 3/4"         |
+------------+-----------------------------+--------------+

Когда я выполняю этот запрос SELECT *, MATCH ( product_name , product_size ) AGAINST ('fishy 90 3/4"' IN NATURAL LANGUAGE MODE) AS оценка FROM продукт ORDER BY оценкаDESC; Я получил этот результат

+------------+-----------------------------+--------------+----------------------------+
| product_id | product_name                | product_size | score                      |
+------------+-----------------------------+--------------+----------------------------+
|          1 | Something 90 Fishy Thing    | 1-1/2"       |         0.0906190574169159 |
|          2 | Very 90 Fishy Thing         | 2"           |         0.0906190574169159 |
|          4 | Yet Another 90 Fishy Thing  | 4" x 2"      |         0.0906190574169159 |
|          5 | Oh 90 Fishy Thing           | 3/4"         |         0.0906190574169159 |
|          8 | Fishy 45 Fishy Thing        | 3/4"         | 0.000000003771856604828372 |
|          3 | Not Another 45 Fishy Thing  | 3" x 2"      | 0.000000001885928302414186 |
|          6 | No 45 Fishy Thing           | 4"           | 0.000000001885928302414186 |
|          7 | Just Another 45 Fishy Thing | 2" x 1"      | 0.000000001885928302414186 |
+------------+-----------------------------+--------------+----------------------------+

Как сделать номер продукта нет. 5 получили лучший результат, так как это самый релевантный продукт в таблице? Я попытался установить переменную innodb_ft_min_token_size в 1, как предложено в этой старой теме Mysql для поиска строки и числа с использованием MATCH () AGAINST () , но все равно не помогает.

Пожалуйстасовет. Спасибо

...