MySQL:布尔模式下的全文搜索无法按预期工作

时间:2017-04-05 13:16:25

标签: mysql full-text-search

我在布尔模式下遇到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 +black* +key*"之前,我得到大约100个结果,这是正确的。但是所有返回的结果都包含""在他们...所以为什么第一个字符串没有返回结果?

注意:我将最小字长设置为1,以防与之有关。

1 个答案:

答案 0 :(得分:0)

<强>解决:

问题在于MySQL并没有在全文索引中包含停用词(例如&#34;&#34;)。因此,在第一个字符串中,它不作为搜索短语的一部分包含在内,并返回"+black* +key*"的结果。如果你试图强迫&#34;&#34; (或任何其他禁用词)使用+运算符包含在搜索中,不会返回任何结果,因为&#34;&#34;不在被搜索的索引中。

我采取的解决方案是在选项文件中禁用停用词过滤。您可能采取的另一种解决方案是将数据库中的所有停用词提取到您的应用程序中,并在添加+运算符之前删除搜索字符串中出现的任何停用词。