поиск похожих слов в mysql - PullRequest
0 голосов
/ 03 марта 2019

У меня есть БД со столом под названием наркотики.В этом поле с именем «Описание» имеет полнотекстовый индекс.Я хочу найти похожие слова ' Acifree -O 10ml ', ' Acifree O 10ml ' вот так.

Я пробовал с приведенным ниже запросом,

SELECT * FROM drugs where SOUNDEX(Description) = SOUNDEX('Acifree -O 10ml');

Но запрос возвращает следующие значения

|ID  |Description          |
----------------------------
|177 |Acifree -O 10ml      |
|541 |Acifree O 10ml       |
|817 |Acifree -O 5ml       |
|817 |Acifree -O 7ml       |
|916 |Acifree -O 5 ml      |

Мне нужны только значения ' Acifree -O 10ml ' и ' Acifree O 10ml '.вроде следующего

|ID  |Description          |
----------------------------
|177 |Acifree -O 10ml      |
|541 |Acifree O 10ml       |

Есть ли решение?

1 Ответ

0 голосов
/ 03 марта 2019

вы можете попробовать, как показано ниже, используя агрегатную функцию

select *, MATCH(Description) AGAINST('Acifree -O 10ml' IN NATURAL LANGUAGE MODE)
as score
from tutorial 
where MATCH(Description) AGAINST('Acifree -O 10ml' IN NATURAL LANGUAGE MODE)
and MATCH(Description) AGAINST('Acifree -O 10ml' IN NATURAL LANGUAGE MODE)=
(select  max(MATCH(Description) AGAINST('Acifree -O 10ml' IN NATURAL LANGUAGE MODE))
from tutorial
)

демонстрационная ссылка

output

id  description score
1   Acifree -O 10ml 0.15835624933242798
2   Acifree O 10ml  0.15835624933242798

Когда MATCH()используется в предложении WHERE, возвращаемые строки автоматически сортируются с наивысшей релевантностью.Значения релевантности являются неотрицательными числами с плавающей точкой.Нулевая релевантность означает отсутствие сходства.Релевантность вычисляется на основе -

  • количества слов в строке
  • количества уникальных слов в этой строке
  • общего количества слов в коллекции
  • количество документов (строк), содержащих определенное слово

Так как вам нужно самое лучшее, поэтому я взял максимальный балл

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...