MySQL 全文搜尋:增強相關性和列優先權
在資料庫中的多個欄位中搜尋特定術語是一項常見任務。 MySQL 提供了 MATCH() 和 AGAINST() 函數來執行全文搜索,讓使用者指定搜尋字詞和搜尋模式。
但是,在處理多列並優先考慮搜尋相關性時,會出現額外的考慮因素。若要依相關性對結果進行排序,可以使用像 SELECT * FROM Pages WHERE MATCH(head, body) AGAINST('some Words' IN BOOLEAN MODE) 這樣的簡單查詢。
根據特定列對相關性進行優先排序,例如作為頭列,需要一種替代方法。透過建立附加列來儲存標題列的相關性分數,使用者可以在對結果進行排序和優先排序方面獲得更大的靈活性。然而,由於在同一個表上進行了額外的搜尋操作,這種方法會產生效能影響。
另一個解決方案是利用附加的相關性列,並將其與一般全文搜尋的相關性得分相結合。這可以使用以下查詢來實現:
SELECT pages.*, MATCH (head, body) AGAINST ('some words') AS relevance, MATCH (head) AGAINST ('some words') AS title_relevance FROM pages WHERE MATCH (head, body) AGAINST ('some words') ORDER BY title_relevance DESC, relevance DESC
此查詢為搜尋字詞出現在標題列中的結果分配更高的相關性,同時保持整體搜尋相關性。
此外,使用PostgreSQL 等資料庫引擎提供可設定的運算子權重和排名機制,可以為相關性優先順序和評分提供更高級的選項。
以上是如何在 MySQL 全文搜尋中確定跨多個欄位的搜尋相關性的優先順序?的詳細內容。更多資訊請關注PHP中文網其他相關文章!