2013-07-24 73 views
0

我需要擴展當前應用程序的功能。爲此,我正在尋找存儲與現有文檔重疊的一組不同的記錄,但不完全引入一些新的字段。單個Lucene索引可以包含兩種類型的記錄嗎?Lucene索引可以包含不同類型的文檔

所以例如

說我要存儲兩種類型的記錄 客戶這將具有以下字段 名稱地址KIDS

和存儲 名稱地址型號尺寸

因此,儘管記錄有一些共同之處,他們有不同的東西可以共存於同一個Lucene數據庫中。我希望避免擁有所有字段的通用記錄,因爲進入此應用程序的數據量會很大,我不想浪費太多空間。將我的程序移動到與SOLR後端接口是否有助於我的情況。

在此先感謝

回答

2

Lucene的沒有架構,所以你一般可以做到這一點。我不會建議將客戶和商店混爲一談 - 你將如何在結果集中分離它們?你會把客戶和商店放在一起嗎? Solr可以在很多方面幫助你。例如,您可以將不同類型的數據放入不同的核心,因此具有不同的模式和清晰的分離。單個SOLR服務器上可能會共存多個內核。 SOLR還可以爲您解決許多其他問題。例如。數據分區(分片),通過添加多個節點進行負載平衡,故障轉移等。

+0

確定這是很好的知道。使用Lucene API將我的代碼驅動到SOLR設置有多困難。 – TheCodeNovice

+0

這將需要一定的努力。從.Net你可以使用SolrNet庫,這是非常好的和可定製的,或者Http或Streaming API。無論哪種情況,我都建議轉向Java版本的Lucene,因爲Lucene.Net遠遠落後。最新的Lucene版本要快得多,索引尺寸更小。 – lexk

0

將不同的數據類型放入1個Solr內核相當簡單。

您需要記住具有真正唯一的ID(UUID或類似於TYPE-PREFIX_YOUR-ID>的東西),並且有1個可用於過濾的公共字段類型。

如果你想在solrconfig中指定2個處理程序,你甚至可能不會注意到你正在處理2種數據類型的核心(這部分是可選的)。

如果你這樣做(1個核心中的2個數據類型),取決於你的用例。

相關問題