MySQL:在布尔模式下的全文搜索不能按预期工作
问题描述:
我在布尔模式下MySQL的全文搜索功能有问题。我想要运行的查询如下:MySQL:在布尔模式下的全文搜索不能按预期工作
SELECT v.id v_id,
v.duration v_duration,
v.title v_title,
v.description v_description
FROM videos v
JOIN videos_search_text vst ON vst.video_id = v.id
WHERE MATCH(vst.search_text) AGAINST (? IN BOOLEAN MODE);
如果我更换?
与"+the +black* +key*"
,我没有得到任何结果。但是,如果我在“the”之前删除“+”,并搜索,则会得到约100个结果,这是正确的。但是所有返回的结果都包含“...”......那么为什么第一个字符串不返回结果呢?
注意:如果与它有关系,我将最小字长设置为1。
答
解决:
的问题是,MySQL不包括在全文索引停用词(如“”)。因此,在第一个字符串中,它不作为搜索短语的一部分包含,并返回"+black* +key*"
的结果。如果您试图通过使用+
运算符强制将“该”(或任何其他停用词)包含在搜索中,则不会返回任何结果,因为“the”不在要搜索的索引中。
我采取的解决方案是禁用选项文件中的停用词过滤。您可能需要的另一个解决方案是从数据库中提取所有停用词到您的应用程序中,并在添加+
运算符之前删除搜索字符串中的任何事件。