gpt4 book ai didi

mysql - MySQL 上的全文搜索,但词序必须重要

转载 作者:行者123 更新时间:2023-11-29 17:27:02 25 4
gpt4 key购买 nike

我正在使用 MATCH/AGAINST IN BOOLEAN MODE 进行 MySQL 搜索,但我需要单词的顺序很重要。

假设我在表“users”的“names”列上有以下内容:

  +---------------------------------+
| names |
+---------------------------------+
| RONSON SIMPSON HOMER JAY |
| SIMPSON RONSON HOMER JAY |
| RONSON SIMPSON JAY HOMER |
| SIMPSON RONSON JAY HOMER |
+---------------------------------+

如果我正在寻找 SIMPSON HOMER,那么我需要第一个结果是:

  • 辛普森·罗森·霍默·杰伊

仅供引用,现在我使用以下 SQL 查询:

SELECT *, MATCH(names) AGAINST('+SIMPSON +HOMER') AS relevance FROM users WHERE MATCH(names) AGAINST('+SIMPSON +HOMER' IN BOOLEAN MODE) HAVING relevance > 0.2 ORDER BY  relevance DESC, names ASC LIMIT 30;

我问这个问题是因为我在 SOF 或互联网的其他部分没有找到好的答案 - 最接近的主题是:MySQL order by "best match" ,但答案对我不起作用。

我也为这个不好的例子道歉。

请不要提供 %LIKE% 建议,因为查询性能在我的环境中很重要

最佳答案

... AGAINST('+"SIMPSON HOMER"' IN BOOLEAN MODE)

A phrase that is enclosed within double quote (") characters matches only rows that contain the phrase literally, as it was typed.

https://dev.mysql.com/doc/refman/5.7/en/fulltext-boolean.html

另请注意,在同一查询中使用全文 MATCH ... AGAINST LIKE 会导致优化器首先使用全文索引,然后使用 LIKE 仅过滤匹配的行,因此它可以非常有效并且性能良好......尽管这里不需要它。

关于mysql - MySQL 上的全文搜索,但词序必须重要,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50900795/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com