2
我想使用lucene的MemoryIndex(使用4.7.1),但我需要能夠添加lucene Fields,以便我可以使用諸如整數字段或StringField之類的東西。Lucene MemoryIndex:添加Lucene字段
我知道這是可能的RAMDirectory通過添加一個可以包含Lucene字段的文件,但這是可能的MemoryIndex?
我想使用lucene的MemoryIndex(使用4.7.1),但我需要能夠添加lucene Fields,以便我可以使用諸如整數字段或StringField之類的東西。Lucene MemoryIndex:添加Lucene字段
我知道這是可能的RAMDirectory通過添加一個可以包含Lucene字段的文件,但這是可能的MemoryIndex?
您當然可以將字段添加到索引,而不是Field
s。這對StringField
和TextField
來說相當簡單,因爲有一個很好的便利方法供您使用。對於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);
好像很多不必要的工作相比,使用RAMDirectory對象特別是當我只需要指數在一次一個文件。 – nbz
我相信提供直接控制'TokenStream'內容的粒度是該類目的的一部分。除了性能的改進之外。如果你想讓一個類的行爲與保存到文件系統的索引完全一致,只需將其存儲在內存中,那麼是的,'RAMDirectory'是正確的選擇。 – femtoRgon