MySQL全文搜索多个关键字one-many

时间:2014-10-01 09:00:44

标签: php mysql search full-text-search sql-like

我试图使用MySQL的FTS搜索索引内容以查找某些关键字。对于我想要制作的内容,它需要文本中的一个或多个关键字,并且关键字必须是精确的字匹配。但是,如果关键字位于另一个单词的中间并不重要,例如,在搜索" STACK"时,它应该匹配:

  1. 嗨,我有一堆溢出
  2. 贴在墙上
  3. 这些书柜完全被严重遮挡
  4. 我之前使用过以下方法:

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

    这将返回包含任何关键字的任何文本。然而,这几乎开始减慢所有内容,因为大多数索引内容都很大(存储在blob中),我有超过500行要编入索引。由于Like没有使用此方法的任何索引,我尝试使用以下内容转换为FTS:

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

    这对单个关键字有效,但是当输入多个关键字时,这会失败,因为带有+操作数NEEDS的FTS可以找到与给定单词匹配的内容。但是如果没有这些关键字,FTS会匹配模糊结果,而不是精确结果。我最终错过的内容最明确地包含关键字。

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

2 个答案:

答案 0 :(得分:1)

尝试这样的事情:

SELECT * FROM table MATCH (text) AGAINST ('+"keyword1" +"keyword2"' IN BOOLEAN MODE)

答案 1 :(得分:0)

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

Line 29:  'answers' is not defined  no-undef