我想问一下,在Lucene的分析器和tokenstream / tokenfilter之间是否有推荐的通信方式。我想调整分析器行为,特别是使用特定于上下文的方法覆盖Analyzer.getPositionIncrementGap()(例如,令牌之间的差距应该取决于正在分析的令牌以及到目前为止已经分析了哪些令牌 - 可能是任务有其他可能的解决方案,但在这里我想了解这种沟通的原理。)
我已经检查了一个分析器实例(在调试器中),因为它似乎没有"直接门"从Analyzer或其子类到属性存储,由当前Tokenizer和/或Token Filters链使用。我是对的吗?
当然,我可以创建一个自定义Analyzer子类,并将对Analyzer.createComponents()中创建的TokenFilter之一的引用保存为Analyzer的属性,然后通过该属性访问Attributes存储,但它似乎相当丑陋的解决方案,不是吗?