2014-04-16 67 views
2

我想使用lucene的MemoryIndex(使用4.7.1),但我需要能夠添加lucene Fields,以便我可以使用諸如整數字段或StringField之類的東西。Lucene MemoryIndex:添加Lucene字段

我知道這是可能的RAMDirectory通過添加一個可以包含Lucene字段的文件,但這是可能的MemoryIndex?

回答

0

您當然可以將字段添加到索引,而不是Field s。這對StringFieldTextField來說相當簡單,因爲有一個很好的便利方法供您使用。對於StringField,是這樣的:

index.addField("thestring", text, new KeywordAnalyzer()); 

對於TextField

index.addField("sometext", text, new StandardAnalyzer(Version.LUCENE_47)); 

對於IntField和其他數字,你需要自己產生的TokenStream。 NumericTokenStream是類的興趣在這裏:

NumericTokenStream stream = new NumericTokenStream(); 
stream.setIntValue(myInt); 
index.addField("aninteger", stream); 
+0

好像很多不必要的工作相比,使用RAMDirectory對象特別是當我只需要指數在一次一個文件。 – nbz

+1

我相信提供直接控制'TokenStream'內容的粒度是該類目的的一部分。除了性能的改進之外。如果你想讓一個類的行爲與保存到文件系統的索引完全一致,只需將其存儲在內存中,那麼是的,'RAMDirectory'是正確的選擇。 – femtoRgon