mysql - MySQL单个单词列的 bool 模式搜索

标签 mysql full-text-search boolean-search

我想在没有全文索引的情况下对表执行 bool 模式搜索。我的数据集需要极其精细的细节级别,因此我的文档中的每个单词都是其自己的行,而不是每个文档都是一行。是否可以将常规索引作为 bool 模式搜索的主题,而不是使用全文索引(显然在这里毫无用处)作为主题?

最佳答案

听起来您的数据采用文档字结构。

实现此目的的一种方法是使用标准比较和 having 子句。以下将搜索“wordA”和“wordB”,但不搜索“WordC”:

select DocumentId
from DocumentWords dw
group by DocumentId
having max(word = 'WordA') > 0 and
       max(word = 'WordB') > 0 and
       mac(word = 'WordC') = 0;

如果您想使用全文索引,请将文档连接在一起,执行以下操作:

select DocumentId, group_concat(word separator ', ')
from DocumentWords dw
group by DocumentId

将其存储为单独的表并在其中使用全文索引。

关于mysql - MySQL单个单词列的 bool 模式搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17300523/

相关文章:

.net - 快速中缀搜索

php - 当全文不是可行的解决方案时动态 mysql 搜索

MYSQL bool 搜索在同一语句中使用表数据

php - Laravel 4 中的 MySQL/PHP bool 全文搜索问题

php - Laravel 5.4 Raw 未按预期工作,但在 mySQL 中工作

带分隔符的 MYSQL 子字符串

sql-server - SQL Server 全文索引包含搜索完全匹配包含 "it"

php - 是否有一个好的 PHP 库可用于将 bool 搜索运算符解析为 MySQL 全文运算符?

php - Mysql错误问题

mysql - 我可以执行 mysql 命令来过滤和删除重复条目吗