我可以在整个搜索应用程序中使用单个Lucene Analyzer实例吗?

时间:2015-12-24 07:41:06

标签: java lucene

我正在使用最新的Lucene版本5.4。

我很想知道分析器是否是无状态的,搜索应用程序可以重用单个实例,而不是每次需要时都实例化分析器?

我目前正在使用EnglishAnalyzer:

Analyzer analyzer = new EnglishAnalyzer();

1 个答案:

答案 0 :(得分:1)

分析器不是无状态的,但实际上是重用实例。

分析器主要是TokenStreams的工厂类,特别是EnglishAnalyzer是线程安全的。 Solr仅为每个SolrCore加载他的分析仪一次。因此,solr-folk对其分析仪的线程安全性有信心。

来自tokenStream-Method的JavaDoc:

  

对此方法的后续调用将在重置之后重用以前存储的组件...

请注意,Analyzers实现了“可关闭”。你不能打电话 关闭方法后调用tokenStream-Method

P.S。 lucene good practice and thread safety

P.P.S QueryParser are not threadsafe