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

wlp8pajw  于 2022-11-07  发布在  Lucene
关注(0)|答案(1)|浏览(298)

我有一个基于句子的索引,其中每个文档都存储内容和每个标记的字段。内容字段命名为content,并将整个句子存储为字符串,标记字段命名为token0token1,... 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作为术语,而不是sentencebased
我希望对这种现象有一个解释。

e4yzc0pl

e4yzc0pl1#

这听起来像是在分析content字段,而tokenN字段没有被分析。分析发生在索引时,所以您需要做的是重新访问索引代码,找出为什么content字段和tokenN字段被不同地分析。
如果您 * 希望 * 对内容字段进行分析,只是与您现在所拥有的内容字段不同,那么好吧。就这么做吧!SimpleAnalyzer可能是一个很好的起点。

相关问题