我有一个基于句子的索引,其中每个文档都存储内容,每个标记都有一个字段。内容字段名为content
,并将整个句子存储为String,令牌字段名为token0
,token1
,... 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
作为术语而不是sentence
和based
。
我希望有这种现象的解释。
答案 0 :(得分:0)
听起来好像正在分析内容字段而令牌N字段不是。分析发生在索引时,因此您需要做的是重新访问索引代码并找出为什么内容和令牌字段的分析方式不同。
如果你想要要分析的内容字段,那就和你现在的不同,那么好吧。去做! SimpleAnalyzer可能是一个很好的起点。