2011-06-29 175 views
0

我想在索引時間內爲每個索引文檔提供附加信息。
並在查詢時間在同一分析器中訪問此信息以進行比較。
所以。理論上,將此值寫入本文檔中的某個字段並在查詢時間搜索此字段也是非常好的。Solr:在哪裏存儲附加信息?

f.e.我有一個動物分貝。我想找到裏面有3個字'狗'的所有文件。 (只是一個例子)。我可以爲我的「動物」字段設置我的自定義BaseTokenFilterFactory,它將生成我自定義的TokenFilter,它將只計算所有「狗」字並將此號存儲在某處。所以。我可以在哪裏存儲這個值,以便在搜索時訪問它?

回答

1

您的示例聽起來像是更適合於通過自定義相似性或Solr中的查詢函數處理而不是自定義分析器的東西。

例如,如果使用Solr 4.0,則可以使用函數termfreq(field,term)按狗出現的次數排序。或者您可以使用它作爲一個過濾器,像這樣:

fq={!frange l=3 u=100000}termfreq(animals,"dog") 

這將篩選其動物字段不具有至少出現3字狗的所有文件。 使用此方法的優點是您不會影響文檔的評分,只會對它們進行過濾。

按功能來過濾的能力存在,因爲Solr的1.4所以,即使您正在使用Solr的(> 1.4)的早期版本,你可以很容易地編寫了「termfreq」功能查詢自己

+0

的「Solr 4.0還沒有得到發佈「。 – denys

+0

@denys,我知道,但你可以很容易地自己構建這個功能,因爲IndexReader包含了你需要的所有數據(術語頻率,文檔頻率......) – Asaf

+0

我寫了這樣的函數,但是我在[question] (http://stackoverflow.com/q/6534949/658346) – denys