首頁 >資料庫 >mysql教程 >如何確定跨多列的 MySQL 全文搜尋的相關性優先順序?

如何確定跨多列的 MySQL 全文搜尋的相關性優先順序?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-12-07 07:27:11343瀏覽

How Can I Prioritize Relevance in MySQL Full-Text Searches Across Multiple Columns?

在MySQL 多列全文搜尋中優先考慮相關性

在My 中,MATCH() AGAINST() 函數有助於全文搜尋跨多個列。預設情況下,搜尋相關性由所有指定列中符合術語的組合出現次數決定。但是,您可能會遇到需要根據特定欄位確定相關性優先順序的情況。

按列劃分的相關性

要實現這一點,您可以引入多個相關性列,一個正如您所提到的,對於每一列。雖然這種方法可以確保準確的優先級,但它也意味著冗餘搜索,從而影響效能。

最佳化相關性優先順序

平衡效能和相關性優先順序的另一種方法是調整相關性計算公式。以下是一個修改後的查詢,其中包含了頭列的權重係數:

SELECT * ,
       MATCH (head, body) AGAINST ('some words') AS relevance,
       MATCH (head) AGAINST ('some words') AS title_weight
FROM pages
WHERE MATCH (head, body) AGAINST ('some words')
ORDER BY (title_weight + relevance) DESC

此查詢為頭列的相關性得分分配了更高的權重。透過相應地調整權重,您可以根據特定列確定相關性的優先順序。

獎勵:計算單字出現次數

要計算每列中符合術語的出現次數,您可以可以在MATCH() 中使用BOOLEAN MODE 標誌:

SELECT * ,
       MATCH (head, body) AGAINST ('some words' IN BOOLEAN MODE) AS relevance,
       MATCH (head) AGAINST ('some words' IN BOOLEAN MODE) AS title_count
FROM pages
WHERE MATCH (head, body) AGAINST ('some words' IN BOOLEAN MODE)
ORDER BY title_count DESC, relevance DESC

title_count 欄位指示如何多次在標題列中指定術語erscheinen。這些資訊有助於進一步優化您的搜尋結果。

注意:此方法適用於 MySQL 8.0 以上版本。對於舊版本,您可能需要探索替代方法來優先考慮相關性並計算術語出現次數。

以上是如何確定跨多列的 MySQL 全文搜尋的相關性優先順序?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn