我有具有“单词”和“词干”特征的文档。一个词可能有多个词干,所以我索引了操纵位置增量的“词干”特征。我这样做如下:
FieldType type = new FieldType();
type.setIndexed(true);
type.setStored(true);
type.setOmitNorms(true);
type.setTokenized(true);
type.setStoreTermVectorOffsets(true);
type.setStoreTermVectorPositions(true);
type.setStoreTermVectors(true);
String join_token = tok.nextToken(); // token is like "stem1 stem2 stem3"
TokenStream stream = new WhitespaceTokenizer(Version.LUCENE_41, new StringReader(join_token));
PositionIncrementAttribute attr = stream.addAttribute(PositionIncrementAttribute.class);
attr.setPositionIncrement(0);
stream.addAttribute(OffsetAttribute.class);
stream.addAttribute(CharTermAttribute.class);
feature = new Field(name,
join_token,
type);
feature.setTokenStream(stream);
doc.add(feature);
您在代码中看到我用固定的 String 值初始化 Field 以便存储它,然后将令牌流传递给它(我在 stackoverflow 的某个地方找到了该解决方案)。我为每个带有词干的 join_token 执行这些确切的步骤。结果,我在 Luke 中查看我的单词的 TermVector,一个单词的多个词干出现在连续的(不同的!),而它们应该共享一个位置。出了什么问题?