Полнотекстовое соответствие
Вы можете посмотреть на реализацию чего-то похожего на MATCH
пример здесь :
mysql> SELECT id, body, MATCH (title,body) AGAINST
-> ('Security implications of running MySQL as root') AS score
-> FROM articles WHERE MATCH (title,body) AGAINST
-> ('Security implications of running MySQL as root');
+----+-------------------------------------+-----------------+
| 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)
Итак, для вашего примера, возможно:
SELECT id, MATCH (content) AGAINST ('your string') AS score
FROM messages
WHERE MATCH (content) AGAINST ('your string')
AND score > 1;
Обратите внимание, что для использования этих функций ваш столбец content
должен иметь индекс FULLTEXT
.
Что такое score
в этом примере?
Это relevance value
. Он рассчитывается с помощью процесса, описанного ниже:
Каждое правильное слово в коллекции и в запросе взвешивается
в соответствии с его значением в коллекции или запросе.
Следовательно, слово, которое присутствует во многих документах, имеет более низкий
вес (и может даже иметь нулевой вес), потому что он имеет более низкий
семантическая ценность в этой конкретной коллекции. И наоборот, если слово
редко, он получает больший вес. Вес слов
комбинируется для вычисления релевантности строки.
Со страницы документации .