2016-11-25 109 views
0

我有我的搜索相關性和過濾器使用全文(對陣),我會在下面解釋的一個問題。MySQL的全文搜索和分數

我有一個包含超過150萬記錄的表稱爲歌曲,該表中包含許多列這其中的2名和藝術家,那些2列索引全文。

當我搜索標題和歌曲匹配

完全值它顯示了一個低分,而對我來說它不使例如任何意義。

DATA:

name   | artist  
------------- | ------------ 
Glad You Came | Boyce Avenue 

當我在它下面帶來執行查詢:

SELECT name, artist, 
     MATCH(name, artist) AGAINST('+glad +you +came +Boyce +Avenue' IN BOOLEAN MODE) AS score 
FROM live_lyric.songs 
WHERE MATCH(name, artist) AGAINST('+glad +you +came +Boyce +Avenue' IN BOOLEAN MODE) 


name   | artist  | score 
------------- | ------------ | ------------------ 
Glad You Came | Boyce Avenue | 54.727073669433594 

我尋找精確匹配,怎麼就可以是54.7?

如果我刪除喜歡

SELECT name, artist, 
     MATCH(name, artist) AGAINST('glad you came Boyce Avenue' IN BOOLEAN MODE) AS score 
FROM live_lyric.songs 
WHERE MATCH(name, artist) AGAINST('glad you came Boyce Avenue' IN BOOLEAN MODE) 

我要去有很多地方是不相關的所有其他記錄的類似反應的+號。

對我用「+」號的搜索應該是接近100爲什麼它是不是,我怎麼能提高呢?使用全文搜索時

回答

1

兩個非常重要的概念是停用詞和最小字長。

「停止的話」是不包含在索引的話,那麼他們只需在查詢中,並在文本忽略。在你的例子中,'came'是一個停止詞。文檔是here

最小字長(通常爲4)是考慮的最小字(請參閱here)。所以,你的查詢是「+高興+你+來了+ Boyce + Avenue」,但它確實是「+高興+ Boyce + Avenue」。我認爲這解釋了與比分的問題。

+0

感謝您的回覆,但這兩點我已經檢查.. 1.來了不是停止詞 - 2.最小的詞我已經改爲2個字母,所以它應該使用所有的詞 –

+0

我做過之前,我張貼題 –