我试图使用MySQL的FTS搜索索引内容,以查找特定的关键字。对于我想要做的事情,它需要文本中的一个或多个关键字,并且关键字必须是准确的单词匹配。但是,关键字是否位于另一个单词的中间并不重要,例如,在搜索“堆栈”时,应该匹配:
我以前使用过以下方法:
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关键字的所有内容?
发布于 2014-10-01 09:13:16
试着做这样的事情:
SELECT * FROM table MATCH (text) AGAINST ('+"keyword1" +"keyword2"' IN BOOLEAN MODE)发布于 2018-07-09 18:43:25
听起来你在寻找类似于以下内容的东西:
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)https://stackoverflow.com/questions/26137709
复制相似问题