我有一組包含我想要索引的評分項目的文檔。我們的數據結構如下:增強多值字段
Document
ID
Text
List<RelatedScore>
RelatedScore
ID
Score
我首先想到的是給每個RelatedScore添加爲使用現場的升壓屬性搜索時修改特定分數值的多值字段。
foreach (var relatedScore in document.RelatedScores) {
var field = new Field("RelatedScore", relatedScore.ID,
Field.Store.YES, Field.Index.UN_TOKENIZED);
field.SetBoost(relatedScore.Score);
luceneDoc.Add(field);
}
然而,似乎所有的計算「規範」適用於整個多場 - 所有的文檔RelatedScore」的價值觀最終將不得不以同樣的比分
有沒有。機制在Lucene中允許這個功能嗎?我寧願不創建另一個索引來解釋這一點 - 感覺應該有一種使用單一索引的方法如果沒有辦法來實現這一點,我們必須補償的是:
- 插入多值字段i按降序排列的順序。然後以某種方式添加位置感知分析,以將更高的提升/分數分配給該字段中的第一項。
- 多次向該字段添加高分值。因此,Score Score爲1的RelatedScore可能會添加三次,而Score Score.3的Score只會添加一次。
這些都會導致搜索保真度在這些領域的損失,是的,但他們可能已經足夠好了。對此有何想法?
我能夠使用Payload存儲分數並通過自定義相似性對象使用它。一旦我開始尋找這個方向,我發現Grant Ingersoll最近在這裏發佈了一篇關於這個話題的文章:http://www.lucidimagination.com/blog/2009/08/05/getting-started-with-payloads/ –
Nowadays正確的鏈接是http://lucidworks.com/blog/refresh-getting-started-with-payloads/ – user3159253