我正在使用最新的Lucene版本5.4。
我很想知道分析器是否是无状态的,搜索应用程序可以重用单个实例,而不是每次需要时都实例化分析器?
我目前正在使用EnglishAnalyzer:
Analyzer analyzer = new EnglishAnalyzer();
答案 0 :(得分:1)
分析器不是无状态的,但实际上是重用实例。
分析器主要是TokenStreams的工厂类,特别是EnglishAnalyzer是线程安全的。 Solr仅为每个SolrCore加载他的分析仪一次。因此,solr-folk对其分析仪的线程安全性有信心。
来自tokenStream-Method的JavaDoc:
对此方法的后续调用将在重置之后重用以前存储的组件...
请注意,Analyzers实现了“可关闭”。你不能打电话 关闭方法后调用tokenStream-Method。