具有相關性和列優先權的全文搜尋的MySQL 查詢最佳化
使用MySQL 的MATCH 在多列中執行全文搜尋時( ) 和AGAINST() 函數中,使用者經常需要以相關性對結果進行排序,同時對某些欄位進行優先排序。雖然根據字數計算相關性很簡單,但確定列相關性的優先順序可能具有挑戰性。
為了解決此問題,可以採用包含特定於列的相關性度量的修改查詢。以下查詢引入了新的權重因子,而不是創建額外的相關性列:
SELECT pages.*, MATCH (head, body) AGAINST ('some words') AS relevance, MATCH (head) AGAINST ('some words') * 2 AS title_relevance FROM pages WHERE MATCH (head, body) AGAINST ('some words') ORDER BY title_relevance DESC, relevance DESC -- Alternatively: ORDER BY 0.5 * title_relevance + relevance DESC
在此修改後的查詢中,頭列中找到的單字的相關性加倍,從而有效地優先考慮相關性中的列計算。或者,可以應用自訂權重乘數來進一步微調優先權。
對於更高級的優先權和加權選項,請考慮探索替代資料庫引擎,例如 Postgres,它提供了加權運算子和排名演算法的廣泛自訂.
以上是如何透過優先考慮特定列來優化 MySQL 全文搜尋相關性?的詳細內容。更多資訊請關注PHP中文網其他相關文章!