簡體   English   中英

Solr:如何使用關鍵字列表獲取按分數排序的所有文檔?

[英]Solr: How can I get all documents ordered by score with a list of keywords?

我有一個 Solr 3.1 數據庫,其中包含具有兩個字段的電子郵件:

  • 約會時間
  • 文本

對於查詢,我有兩個參數:

  • 今天的日期
  • 關鍵字數組(“重要的事情”,“也很重要”,“不是那么重要,但超過平均水平”)

是否可以創建查詢

  1. 獲取當天的所有文件和
  2. 通過訂購它們按相關性對它們進行排序,以便包含我的大部分關鍵字(重要事物)的 email 得分最高?

帶日期的部分不是很復雜:

fq=datetime[YY-MM-DDT00:00:00.000Z TO YY-MM-DDT23:59:59.999Z]

我知道您可以通過以下方式提升關鍵字:

q=text:"first keyword"^5 OR text:"second one"^2 OR text:"minus scoring"^0.5 OR text:"*"

但是我如何只使用關鍵字對該列表進行排序並獲取所有條目,而不是進行真正的查詢並僅返回幾個條目?

感謝幫助!

您可以對以下內容進行第一次查詢:

fq=datetime[YY-MM-DDT00:00:00.000Z 到 YY-MM-DDT23:59:59.999Z]

它給出了與范圍匹配的所有文檔。 然后,對第二個查詢使用 CachingWrapperFilter 從第一個查詢的 DocSet 中查找具有至少一個關鍵字的文檔。 它們將根據 tf-idf 進行相關性排名。 您可能希望首先使用 ConstantScoringQuery 以最快的方式獲取匹配的 docid 列表。

您需要在主查詢中指定您的術語,然后通過添加以下內容將您的日期查詢更改為對這些結果的過濾查詢。

fq=datetime[YY-MM-DDT00:00:00.000Z TO YY-MM-DDT23:59:59.999Z]

所以你應該有這樣的東西:

q=<terms go here>&fq=datetime[YY-MM-DDT00:00:00.000Z TO YY-MM-DDT23:59:59.999Z]

編輯:關於過濾器查詢的更多信息(如rfreak所建議的)。

來自Solr Wiki - FilterQuery Guidance - “現在,什么是過濾器查詢?它只是查詢的一部分,需要進行特殊處理。這是在 Solr 中通過使用 fq(過濾器查詢)參數而不是q(主查詢)參數。把那個查詢部分留在主查詢中可以達到相同的結果。不同之處在於查詢效率。這是因為過濾查詢的結果被緩存,然后用於過濾主查詢結果使用集合交集。”

這些應該已經按相關性分數排序,這只是 Solr 的默認行為。 您可以通過添加該字段來查看分數。

fl=*,score

如果您在 Solr 安裝的http://<yourserver:port#>/<instancename>/admin/form.jsp上的管理界面上使用完整界面進行查詢,那么您將在哪里看到您可以指定 3 查詢760157E5Z6字段和其他選項。 您可以查看Solr Wiki ,了解有關選項及其使用方式的更多詳細信息。

我希望這對你有幫助。

按相關性排序是 solr/lucene 的默認行為。

如果您的結果不滿意,請嘗試將關鍵字放在引號中

//編輯:按照佩奇庫克的回答,使用這樣的想法

q="important thing"&fq=datetime[YY-MM-DDT00:00:00.000Z TO YY-MM-DDT23:59:59.999Z]

//2。 nd更新。 通過考慮這個答案:引號不是一個好主意,因為在這種情況下,您只會收到“重要的事情”郵件,而不會收到“也很重要”的郵件

重點是:您使用的是什么關鍵字。 因為:搜索——重要的事情——會導致“重要事情”郵件的得分最高。 但是 lucene 不知道,如何為您的關鍵字評分“也很重要”或“不那么重要,但超過平均水平”。 另一個想法是只搜索“重要”。 但是字段值“importand thing”和“importand too”給出了幾乎相同的分值,因為 50% 的搜索關鍵字(在此鍵中:“imported”)是字段值的一部分。 因此,您可能必須更改關鍵字。 將“importend to”改為“also an important mail”后,可以得到搜索詞“important”與field-value的野獸比例,從而將Mail-discripton的最短值打分到最高值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM