2012-08-01 68 views
1

我有關於應如何將結果從solr中排序的要求。在較高的水平,他們應該是這樣的:solr得分文檔,所有術語都是相同的,無論術語的頻率如何

  • 上SUBSET2領域的精確匹配按日期排序在按日期排序SUBSET1領域
  • 精確匹配
  • 上SUBSET1領域部分匹配按日期排序
  • 部分在SUBSET2場按日期排序的匹配
  • 上SUBSET1領域的模糊匹配按日期排序按日期排序上SUBSET2領域
  • 模糊匹配

目前我正在對solr評分和日期進行排序。當我查詢solr時,我正在使用一種提升功能,對舊文檔進行逆向提升,以使它們向下移動,並將新文檔「浮動」到頂部,同時提升相應的字段,以便獲得精確的,部分的和按照正確的順序進行模糊匹配。這使我獲得了大部分途徑。

現在是棘手的部分。要求規定,如果我搜索諸如「紅色卡車」之類的東西,那麼包含「紅色卡車」的文件,無論條款的頻率如何,都應該得到相同的評分。提升的新文檔到頂端並不會影響足夠的分數,從而將文檔的詞頻提高得足夠遠。

例如,讓我們說我有2個文件: DOC 1:

  • 字段1:「紅色的福特卡車真的很紅,這是一個快速的卡車」
  • 日期:1/1/2010

DOC 2:

  • 字段1: 「紅色福特卡車停在路邊」
  • 日期:2012/1/10

當我搜索「紅色福特卡車」我想文件2出現首先是因爲它是新的,並擁有所有的查詢條件。當前文檔1將首先出現,因爲它在Field1中有更多的匹配,反向提升不足以將其推下。

所以現在對於我的問題是在solr中有一個配置點來告訴它匹配查詢的條款恰好爲文檔一次?有點像T-SQL中的Exists。

如果有任何其他信息會有所幫助,請提前告知我,並感謝您的時間。

回答

1

這些分數因條款頻率和字段長度而不同。

omitNorms似乎你正在尋找關於該領域的長度。看看this以前的答案,請記住,索引時間提升也將被禁用該字段:

如果爲true,忽略了與該領域相關的規範(此禁用 長度正常化和索引時間提升爲字段,並保存 一些內存)。

omitTermFreqAndPositions看來你要尋找關於詞頻:

如果爲true,忽略詞頻,位置,並從該領域的貼子 有效載荷。對於不需要 的字段,這可以提高性能。它還減少索引所需的存儲空間 。使用此選項依賴在 字段上發佈的頭寸的查詢將悄然無法找到文檔。對於不是文本字段的所有字段,此 屬性默認爲true。

+0

感謝您的回覆。 omitTerFreqAndPositions有點幫助,但我確實關心位置。正如我想要的東西只是「紅色福特卡車」被排序在「紅色福特卡車」之上。除非我誤解了「位置」部分,但這似乎是做的。 – Jared 2012-08-03 14:58:13

+0

我明白了......你可以嘗試將omitNorms和omitTermFreqAndPositions組合成不同的形式,並與它們一起玩。我沒有意識到任何沒有職位的omitTermFreq,儘管我已經閱讀過關於它的討論。祝你好運! – javanna 2012-08-03 15:02:28

+0

您能否指點我參加一些討論,看看我是否可以爲此問題制定策略? – Jared 2012-08-03 15:04:22