2014-10-28 93 views
2

我對Lucene的索引結構非常陌生,所以請告訴我這是否合理,或者如果我想用錘子來鑽孔。Lucene:在索引時覆蓋詞頻率

要點/概述

我相信我需要覆蓋Lucene的詞頻與一些我自己的(即值[0,100]代表的概率(即[0,1])或其他是否可以代替術語頻率的數據?是否可以在索引時間覆蓋術語頻率值,以便數字實際存儲在Lucene索引中(而不是Lucene使用的正常術語頻率) )?

詳細信息:

我有可能不包含文本或文本很少的文件。相反,大部分(或被視爲)帶有元信息的數字化產物。該元信息是從分類器和其他機器學習方法(例如,基於對象識別,顏色直方圖或證據組合)獲得的學習概念概率。這裏有一個非常簡單的例子,其中圖像被分類爲(具有高概率的)包含樹並且還描繪了房屋。

filepath: /pics/1.jpg 
meta: tree = 0.9 
meta: house = 0.8 
meta: dog = 0.0 
... (up to 10000 meta fields) 

另一個顯示狗,房子,但沒有樹。

filepath: /pics/2.jpg 
meta: tree = 0.0 
meta: house = 0.3 
meta: dog = 1.0 
... (up to 10000 meta fields) 

每個meta標籤存儲在名爲「元」,使所有這些搜索通過引導搜索到它單獨的文檔場。每個字段都包含作爲詞或短語的概念,並被視爲一個標記。

因此,我主要從外部獲取圖片1和圖片2的證據,我知道這大部分都在經典的TF-IDF範例之外。我想將這些概率(用於'meta'字段)插入到Lucene的得分方案中,以搜索這些元信息標記並將其概率像TF-IDF一樣帶入分數。如果我搜索meta:tree AND meta:dog,我想查找第二個文檔,如果評分使用這些新的概率TF,就可以實現這一點。所以,如果我可以用它們的概率修改這些元概念(樹,房子和狗)中的每一個的TF,那麼我可以將它包括到Lucene中而不改變其餘的。

這是否有意義? Lucene是否會在索引上提供如此低級別的修改?我正朝着正確的方向前進嗎?

+0

有許多選項。你能詳細說明你想要做什麼嗎?這可能是相關的http://stackoverflow.com/questions/8880396/boosting-lucene-terms-when-building-the-index – bcoughlan 2014-10-28 12:00:02

+0

我詳細闡述了文本,使其更加清晰。我希望它有幫助。 – RalfB 2014-10-28 12:55:32

回答

0

如何繼承DefaultSimilarity並重寫tf方法?您是否看過information about scoring in the Lucene doco

+0

我相信DefaultSimilarity(及其所有的decedents)只適用於已經在索引中的統計信息(例如TF)。我不想在每次對所有文檔運行查詢時在索引之外查找信息... – RalfB 2014-10-28 15:43:29

+0

我認爲它可以用來影響存儲在Lucene文檔中的分數:「更改相似性是一種影響評分的簡單方法,這是在IndexWriterConfig.setSimilarity(Similarity)的索引時完成的(來自http://lucene.apache.org/core/4_0_0/core/org/apache/lucene/search/package-summary.html#scoring) – 2014-10-28 15:53:34