2011-03-07 229 views
2

我有一個職業職稱的數據庫我試圖運行一些查詢。我使用match()將嘗試使用該SQL找到最佳匹配的職業標題爲用戶輸入的字符串:當我對我的數據庫運行此查詢MySQL匹配()找不到最優匹配

SELECT *, MATCH (occupation_title) AGAINST ('EGG PROCESSOR') 
AS score FROM occupational_titles WHERE MATCH (occupation_title) 
AGAINST ('EGG PROCESSOR') ORDER BY score DESC; 

,前三個結果是「處理器」 ,「蛋處理器」和「COPRA處理器」。前兩項具有完全相同的比賽得分6.04861688613892。爲什麼MySQL不會將排名第一的結果排名爲精確匹配?有什麼我可以做的改進搜索算法?

回答

0

你可能想要在你的搜索中使用修飾符模式之一。檢查fulltext documentation

默認情況下,它使用「自然語言」搜索,而您可能想要考慮「布爾模式」並在每個關鍵字前加上一個加號以使其成爲結果中的強制項,或者使用雙引號搜索準確的短語。 Check the boolean mode documentation瞭解更多關於語法的信息。

您也可以考慮使用各種模式執行多次搜索並進行自己的加權。

+0

我不介意自然語言,因爲當我無法找到完全匹配的時候,但它在這種情況下無法正常工作 – MarathonStudios 2011-03-07 06:14:00