在MySQL全文搜索中,如何搜索仅包含特定单词的文档?

时间:2016-08-03 02:14:02

标签: mysql full-text-search match

我有带标题的表格,我只想找到那些完全由一部分单词组成的标题。

例如,

SELECT title
FROM my_titles_table WHERE MATCH (title) AGAINST ('word1 word2 word3 ... wordN' IN NATURAL LANGUAGE MODE)

我想找到所有由word1 word2 word3 ... wordN或其中一部分组成的标题,但没有其他单词。

例如,如果我的查询是"如何训练你的龙"就像我的话,我想找到像#"龙"或者"训练你的龙"或者"你的龙训练"但不是"龙与地下城"因为" dungeon"不在我的查询中。

1 个答案:

答案 0 :(得分:0)

我认为全文搜索不支持此功能。事实上,很难找到一种蛮力的方式来做到这一点。

这是一种强力方法:

where trim(replace(replace(replace(title, $word1, ''), $word2), ''), $word3, '')) = ''

这并不完美,因为"松苹果"将匹配"松苹果"。

嗯,嗯。 。 。还有另一种使用正则表达式的替代方法:

 where title like concat('^(', replace('word1 word2 word3', ' ', '|'),
                          '[ ]*)+$)

也就是说,匹配必须从字符串的开头和结尾开始,插入的单词必须全部匹配。

据我所知,目前还没有办法加快这样的查询。