我有一个带有标题的表格,我只想找到完全由单词子集组成的标题。
例如,
SELECT title
FROM my_titles_table WHERE MATCH (title) AGAINST ('word1 word2 word3 ... wordN' IN NATURAL LANGUAGE MODE)
我想查找由 word1 word2 word3 ... wordN 或其子集组成的所有标题,但没有其他单词。
例如,如果我的查询是“如何训练你的龙”,那么我想找到诸如“龙”或“训练你的龙”或“你的龙来训练”之类的标题,而不是“地下城和龙”,因为“地牢”这个词不在我的查询中。
最佳答案
我认为全文搜索不支持此功能。事实上,很难找到一种蛮力的方法来做到这一点。
这是一种暴力方法:
where trim(replace(replace(replace(title, $word1, ''), $word2), ''), $word3, '')) = ''
这并不完全完美,因为“pine apple”将匹配“pine apple”。
嗯嗯。 。 。正则表达式还有另一种选择:
where title like concat('^(', replace('word1 word2 word3', ' ', '|'),
'[ ]*)+$)
也就是说,匹配必须从字符串的开头和结尾开始,并且中间的单词必须全部匹配。
据我所知,没有办法加快此类查询的速度。
关于mysql - MySQL全文检索中,如何检索只包含特定单词的文档?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38733277/