mysql - 理解全文 bool 模式结果

标签 mysql full-text-search booleanquery

我一直在使用 MySQL 的全文搜索的 bool 模式,但我不理解有时得到的结果。

例如,这里是一些数据行..

auction_id,'name'
100543,'2011-12 Fleer Retro patch auto'
100544,'2011-12 Fleer Retro patch auto jordan'
100545,'2011-12 Fleer Retro autograph'
100546,'2011-12 Fleer Retro autographed'
100547,'2011-12 Fleer Retro auto'
100549,'1999 jordan auto'
100550,'1999 auto jordan'
100551,'1999 autograph jordan'
100552,'1999 autographed jordan patch'
100553,'1999 jordan non auto'

现在,如果我运行查询:

SELECT auction_id,NAME,description FROM auctions WHERE MATCH(`name`) AGAINST('+jordan +auto' IN BOOLEAN MODE);

我得到了返回的行100544,100549,100550,100553,这是正确的。但是,如果我运行此查询:

SELECT auction_id,NAME,description FROM auctions WHERE MATCH(`name`) AGAINST('+jordan +auto -non' IN BOOLEAN MODE);

我得到了相同的返回结果; 100553 不应该消失吗,因为它的 name 中有“non”?

另外,如果我将其更改为:

SELECT auction_id,NAME,description FROM auctions WHERE MATCH(`name`) AGAINST('+jordan +auto -"non auto"' IN BOOLEAN MODE);

我没有收到返回的结果;我应该把除了 100553 之外的所有内容都获取吗?

最佳答案

Boolean Full-Text Searches 下所述:

Boolean full-text searches have these characteristics:

[ deletia ]

Natural Language Full-Text Searches 下所述:

Some words are ignored in full-text searches:

  • Any word that is too short is ignored. The default minimum length of words that are found by full-text searches is three characters for InnoDB search indexes, or four characters for MyISAM. You can control the cutoff by setting a configuration option before creating the index: innodb_ft_min_token_size configuration option for InnoDB search indexes, or ft_min_word_len for MyISAM.

关于mysql - 理解全文 bool 模式结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17021831/

相关文章:

mysql - 如何将使用窗口函数的 SQL 向后移植到没有窗口函数的服务器?

MySQL 多字段搜索使用 Like 子句

elasticsearch - 在Elasticsearch中match和bool必须匹配查询有什么区别

elasticsearch - 如何在 Elasticsearch 查询中使少量标记成为短语

elasticsearch - ElasticSearch bool 查询到Solrj查询

mysql - 处理异常和防止冗余的最佳数据库模式是什么?

php - 需要跨两个数据库查询的帮助(第一次尝试这样做)

MySQL Workbench - 数据迁移不起作用

Django 全文搜索优化 - Postgres

mysql - 有什么办法可以减少 MySQL 数据库文件夹中的 'FTS_*_*_INDEX_1.ibd' 文件大小?