Lucene中的“createComponents”有时只被调用,为什么?

时间:2015-01-15 11:26:46

标签: java lucene

我有自己的分析器

protected TokenStreamComponents createComponents(final String fieldName, final Reader reader){}

但是我注意到这种方法并没有一直被调用。

如果给定的字符串是:"两个单词",然后它将被调用。

如果给定的字符串是:"双字",则不会被调用。

如果给定的字符串是:"两个/单词",则不会被调用。

但是我想我可以在这个方法中使用tokenizer来解析我的字符串。

我的目标是:

"两个字"应该被认为是两个AND字

"两词"也应该被认为是两个AND词

"两个/单词",它也应解析为两个AND单词。

这就是我使用自己的分析仪的原因。但是我很惊讶在后两个例子中没有调用分析器。

我该怎么办?

1 个答案:

答案 0 :(得分:1)

可以重复使用分析器组件,因此,如果您一次索引多个文档,则只能拨打createComponents()一次。

要确保正确分析数据流,请使用incrementToken() Tokenizer方法和/或过滤器中的某种日志记录。或者,更好的是,在过滤器链的顶部临时附加日志记录过滤器,并在分析阶段记录incrementToken()reset()close()end()方法的所有调用。这有助于更好地理解标记生成器并过滤生命周期。