2017-04-05 45 views
1

我在布爾模式下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。

回答

0

解決:

的問題是,MySQL不包括在全文索引停用詞(如「」)。因此,在第一個字符串中,它不作爲搜索短語的一部分包含,並返回"+black* +key*"的結果。如果您試圖通過使用+運算符強制將「該」(或任何其他停用詞)包含在搜索中,則不會返回任何結果,因爲「the」不在要搜索的索引中。

我採取的解決方案是禁用選項文件中的停用詞過濾。您可能需要的另一個解決方案是從數據庫中提取所有停用詞到您的應用程序中,並在添加+運算符之前刪除搜索字符串中的任何事件。

相關問題