I would like to use lucene's MemoryIndex (using 4.7.1) but I need to be able to add lucene Fields so that I can use things like the integer field or a StringField.

I know this is possible in RAMDirectory by adding a Document which can contain Lucene Fields but is this possible in MemoryIndex?

有帮助吗?

解决方案

You can certainly add fields to the index, just not Fields. It's fairly simple for StringField and TextField, since there is a nice convenience method for you to use. For a StringField, something like:

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

For a TextField:

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

For an IntField and other numerics, you'll need to produce the tokenstream yourself. NumericTokenStream is the class of interest here:

NumericTokenStream stream = new NumericTokenStream();
stream.setIntValue(myInt);
index.addField("aninteger", stream);
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top