首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在MySQL上进行全文搜索,但必须注意单词顺序

在MySQL上进行全文搜索,但必须注意单词顺序
EN

Stack Overflow用户
提问于 2018-06-18 05:56:50
回答 1查看 612关注 0票数 0

我在布尔模式下使用MATCH/ matters进行MySQL搜索,但我需要单词的顺序很重要。

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

代码语言:javascript
复制
  +---------------------------------+
  | names                           |
  +---------------------------------+
  | RONSON SIMPSON HOMER JAY        |
  | SIMPSON RONSON HOMER JAY        | 
  | RONSON SIMPSON JAY HOMER        |
  | SIMPSON RONSON JAY HOMER        |
  +---------------------------------+

如果我在找辛普森·霍默,那么我需要的第一个结果是:

  • 辛普森·罗森本垒打JAY

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

代码语言:javascript
复制
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或其他互联网上没有找到一个好的答案--最接近的话题是:,但答案对我来说不起作用。

我也为这个糟糕的例子道歉。

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

EN

回答 1

Stack Overflow用户

发布于 2018-06-18 08:36:26

代码语言:javascript
复制
... AGAINST('+"SIMPSON HOMER"' IN BOOLEAN MODE)

包含在双引号(")字符中的短语仅匹配按字面意思包含该短语的行。

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

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50900795

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档