查詢重新排序

查詢重新排序允許您執行一個簡單查詢 (A) 來比對文件,然後使用更複雜查詢 (B) 的分數來重新排序前 N 個文件。

由於來自查詢 B 的較耗費成本的排序僅應用於前 N 個文件,因此與單獨使用複雜查詢 B 相比,對效能的影響較小。權衡之處在於,使用簡單查詢 A 得分非常低的文件可能不會在重新排序階段中考慮,即使它們使用查詢 B 會得到非常高的分數。

指定排序查詢

可以使用 rq 請求參數指定排序查詢。 rq 參數必須指定一個查詢字串,該字串在剖析時會產生 RankQuery

Solr 發行版目前包含三個排序查詢。您也可以設定您已撰寫的自訂 QParserPlugin,但大多數使用者可以直接使用 Solr 提供的剖析器。

剖析器 QParserPlugin 類別

rerank

ReRankQParserPlugin

xport

ExportQParserPlugin

ltr

LTRQParserPlugin

重新排序查詢剖析器

rerank 剖析器會包裝由本機參數指定的查詢,以及其他參數,指出應重新排序的文件數量,以及應如何計算最終分數

reRankQuery

必要

預設:無

複雜排序查詢的查詢字串 - 在大多數情況下,變數將用於參考另一個請求參數。

reRankDocs

選用

預設:200

應重新排序的原始查詢中前 N 個文件的數量。此數字將被視為最小值,並且可能會在內部自動增加,以便對足夠的文件進行排序以滿足查詢(即 start+rows)。

reRankWeight

選用

預設:2.0

在與原始分數合併之前,將應用於每個頂層比對文件的 reRankQuery 分數的乘法因子。

reRankScale

選用

預設值:none

將重新排序的分數縮放至最小值和最大值之間。此參數值的格式為 min-max,其中 min 和 max 是正整數。例如,reRankScale=0-1 會將重新排序的分數縮放至 0 和 1 之間。

reRankMainScale

選用

預設值:none

將主要查詢的分數縮放至最小值和最大值之間。此參數值的格式為 min-max,其中 min 和 max 是正整數。例如,reRankMainScale=0-1 會將主要查詢的分數縮放至 0 和 1 之間。

reRankOperator

選用

預設值:add

預設情況下,來自 reRankQuery 的分數乘以 reRankWeight 後會加到原始分數上。

在下面的範例中,使用預設的 add 行為,與查詢 "greetings" 匹配的前 1000 個文件將會使用查詢 "(hi hello hey hiya)" 重新排序。這 1000 個文件中每一個的結果分數將會是他們從 "(hi hello hey hiya)" 獲得的分數乘以 3,再加上來自原始 "greetings" 查詢的分數。

q=greetings&rq={!rerank reRankQuery=$rqq reRankDocs=1000 reRankWeight=3}&rqq=(hi+hello+hey+hiya)

如果文件與原始查詢匹配,但不與重新排序查詢匹配,則文件的原始分數將保持不變。

reRankOperator 設定為 multiply 會將這三個數字相乘。這意味著其他相乘運算,例如 eDisMax boost 函數 可以轉換為重新排序操作。

在下面的範例中,與查詢 "phone" 匹配的前 1000 個文件的分數將會乘以 price 欄位的一個函數。

q=phone&rq={!rerank reRankQuery=$rqq reRankDocs=1000 reRankWeight=1 reRankOperator=multiply}&rqq={!func v=div(1,sum(1,price))}

reRankOperator 設定為 replace 將會取代分數,因此最終分數可以獨立於文件的原始分數。

在下面的範例中,與查詢 "phone" 匹配的前 1000 個文件的分數將會被 price 欄位的一個函數取代。

q=phone&rq={!rerank reRankQuery=$rqq reRankDocs=1000 reRankWeight=1 reRankOperator=replace}&rqq={!func v=div(1,sum(1,price))}

LTR 查詢解析器

ltr 代表 Learning To Rank(學習排序),詳細資訊請參閱學習排序

將排序查詢與其他 Solr 功能結合使用

rq 參數和一般的重新排序功能可以與其他 Solr 功能良好地結合使用。例如,它可以與折疊和展開結果 一起使用,以在折疊後重新排序群組頭。它還保留了 查詢提升元件 提升的文件順序。它甚至有自己的自訂解釋,因此您可以在查看除錯資訊時,看到重新排序分數是如何得出的。