2013-08-30 71 views
0

我正嘗試創建一個搜索查詢來開發一個學校庫,它將以低成本從數據庫中檢索數據。我的桌子內有callNumber,作者,標題。我想從callNumber,作者和標題搜索。搜索時的查詢優化

$sqlCommand = "SELECT book_id, author, title 
       FROM book 
       WHERE MATCH(callNumber, author, title) 
       AGAINST('$search' IN BOOLEAN MODE)"; 

我用上面的查詢和返回數據是不可靠的。任何建議或優化此查詢的建議,無論如何。謝謝

+1

您是否創建了合適的索引? –

+0

你是什麼意思「不可靠」?你的意思是你得到錯誤的結果?標題暗示問題是表現。 – Barmar

+0

我得到正確的結果,但沒有在結果的第一行,當我嘗試查看它。 – user2734559

回答

0

MATCH(...) AGAINST的查詢結果按默認順序排列。

要列出匹配的相關性,請嘗試以下SQL:

SELECT book_id, author, title, MATCH(callNumber, author, title) 
       AGAINST('$search' IN BOOLEAN MODE) as relevance 
       FROM book 
       WHERE MATCH(callNumber, author, title) 
       AGAINST('$search' IN BOOLEAN MODE) 

如果相關數是你應該考慮的不是你所期望的測試數據爲相關的。有一些注意事項,如:

  • 短語被忽略(我認爲截止是在4個​​字符)。

  • 某些單詞被忽略(之後,其他等)。

  • 常用詞會被忽略(存在於至少有一半的記錄)

我發現the following page有用。