首页 > 解决方案 > match against 不适用于“when”这个词

问题描述

何时desc包含字符串:zoom when wifi dies for 1 second

查询一:

SELECT * FROM `pics` WHERE MATCH(title, desc, owntags, usertags) AGAINST('+zoom* +wifi*' IN BOOLEAN MODE)

没问题,我得到了行!

查询 2:

SELECT * FROM `pics` WHERE MATCH(title, desc, owntags, usertags) AGAINST('+zoom* +when*' IN BOOLEAN MODE)

没结果!所以when属于sql命令。

那么如何解决这个问题呢?

标签: mysqlsql

解决方案


您需要学习一些有关全文搜索的基础知识。一个非常重要的概念是停用词。这些是不包含在全文索引中的词,因为它们很常见或没有什么意义(至少从创建停用词列表的人的角度来看......一个著名的问题涉及乐队 The Who) .

该词'when'是 MySQL 中常见的停用词和默认停用词(请参见此处此处)。所以,它没有被索引。

您将需要重新创建全文索引,删除所有停用词或使用您自己的自定义列表。


推荐阅读