首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >基于多个关键字的MySQL全文搜索

基于多个关键字的MySQL全文搜索
EN

Stack Overflow用户
提问于 2014-10-01 09:00:43
回答 2查看 912关注 0票数 1

我试图使用MySQL的FTS搜索索引内容,以查找特定的关键字。对于我想要做的事情,它需要文本中的一个或多个关键字,并且关键字必须是准确的单词匹配。但是,关键字是否位于另一个单词的中间并不重要,例如,在搜索“堆栈”时,应该匹配:

  1. 嗨,我有一堆溢水
  2. 靠墙堆放
  3. 这些书架堆积如山。

我以前使用过以下方法:

SELECT ... FROM ... WHERE text LIKE '%keyword1%' OR LIKE '%keyword2%' OR LIKE '%keyword3%'

这将返回包含任何关键字的任何文本。然而,这开始减缓了几乎所有的事情,因为大多数索引内容都很大(存储在blob中),而且我有500多行需要索引。由于该方法不使用任何索引,所以我尝试使用以下方法将其转换为FTS:

SELECT ... FROM ... WHERE MATCH(text) AGAINST ('+keyword1 +keyword2 +keyword3' IN BOOLEAN MODE)

这对于单个关键字很好,但是当输入多个关键字时,这会失败,因为带有+操作数的FTS需要找到与给定单词匹配的值。但是如果没有这些关键字,FTS就会匹配模糊结果,而不是精确的结果。最后,我错过了最明确包含关键字的内容。

我可以使用什么来获取包含一个或多个axact关键字的所有内容?

EN

回答 2

Stack Overflow用户

发布于 2014-10-01 09:13:16

试着做这样的事情:

代码语言:javascript
运行
复制
SELECT * FROM table MATCH (text) AGAINST ('+"keyword1" +"keyword2"' IN BOOLEAN MODE)
票数 1
EN

Stack Overflow用户

发布于 2018-07-09 18:43:25

听起来你在寻找类似于以下内容的东西:

代码语言:javascript
运行
复制
SELECT ... FROM ... 
WHERE MATCH(text) AGAINST ('+keyword1' IN BOOLEAN MODE) 
OR MATCH(text) AGAINST ('+keyword2' IN BOOLEAN MODE)
OR MATCH(text) AGAINST ('+keyword3' IN BOOLEAN MODE)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26137709

复制
相关文章

相似问题

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