我有一个基于句子的索引,其中每个文档都存储内容和每个标记的字段。内容字段命名为content
,并将整个句子存储为字符串,标记字段命名为token0
,token1
,... tonken_n-1
,将每个标记包含为字符串。
当我使用ApacheMigration指南中的代码示例获取示例示例“Thisindexissentence-based."中每个字段的所有唯一术语时,
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
。
我希望对这种现象有一个解释。
1条答案
按热度按时间e4yzc0pl1#
这听起来像是在分析content字段,而tokenN字段没有被分析。分析发生在索引时,所以您需要做的是重新访问索引代码,找出为什么content字段和tokenN字段被不同地分析。
如果您 * 希望 * 对内容字段进行分析,只是与您现在所拥有的内容字段不同,那么好吧。就这么做吧!SimpleAnalyzer可能是一个很好的起点。