mysql - MySQL全文检索中,如何检索只包含特定单词的文档?

标签 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 或其子集组成的所有标题,但没有其他单词。

例如,如果我的查询是“如何训练你的龙”,那么我想找到诸如“龙”或“训练你的龙”或“你的龙来训练”之类的标题,而不是“地下城和龙”,因为“地牢”这个词不在我的查询中。

最佳答案

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

这是一种暴力方法:

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/

相关文章:

MySQL 相关子查询 : Subquery cant find table from outer query?

django - 真正有效的 Django 搜索引擎解决方案?

rust - 我可以在比赛中使用 '<' 和 '>' 吗?

excel - Excel 中的反向匹配搜索

php 数据库查询 (phpMyAdmin) 只将一个值(第一个)带回 amcharts

java - Hibernate (MySQL) 上区分大小写的查询

mysql - 根据列枚举值创建 SQL 语句

mysql - 可扩展的 'google suggestions' 类系统

postgresql - 全文搜索中的模糊搜索

asynchronous - 为什么在结果上使用匹配语句会出现 "expected type Future"错误?