为什么我在Lucene的同一文档中得到不同的术语?

时间:2014-07-01 21:05:41

标签: java lucene indexing field term

我有一个基于句子的索引,其中每个文档都存储内容,每个标记都有一个字段。内容字段名为content,并将整个句子存储为String,令牌字段名为token0token1,... tonken_n-1,其中每个标记都包含一个字符串。

当我使用Apache迁移指南中的代码示例获取示例示例中每个字段的所有唯一术语时#34;此索引是基于句子的。",

for(String field : fields) {
   Terms terms = fields.terms(field);
   TermsEnum termsEnum = terms.iterator(null);
   BytesRef text;
   while((text = termsEnum.next()) != null) {
     System.out.println("field=" + field + "; text=" + text.utf8ToString());
   }
}

sentence-based在字段token3中被识别为字词,但在内容字段中仅识别sentence且基于based。 似乎fields.terms(field)为每个字段使用不同的分析器。

我不清楚为什么在应用fields.terms("content")时我会得到不同的条款。 我想将sentence-based作为术语而不是sentencebased

我希望有这种现象的解释。

1 个答案:

答案 0 :(得分:0)

听起来好像正在分析内容字段而令牌N字段不是。分析发生在索引时,因此您需要做的是重新访问索引代码并找出为什么内容和令牌字段的分析方式不同。

如果你想要要分析的内容字段,那就和你现在的不同,那么好吧。去做! SimpleAnalyzer可能是一个很好的起点。