我目前正在调查lucene并想知道取消使用org.apache.lucene.search.IndexSearcher
执行搜索的最佳方法是什么?
我可以想象只是在我为搜索创建的线程上调用中断,但我不确定lucene中的相关组件是否会对中断作出反应(不通过源代码的深度进行搜索)。
是否有'官方'方式/什么是最好的方式?
祝你好运
答案 0 :(得分:3)
IndexSearcher
提供了一个带有ExecutorService
的构造函数(在构造函数中按照示例用法中的链接)作为参数。这可以用于终止搜索。但是,请注意使用NIOFSDirectory
。
请参阅https://lucene.apache.org/core/6_0_0/core/org/apache/lucene/search/IndexSearcher.html
和 https://issues.apache.org/jira/browse/LUCENE-2239
从JavaDocs和发行票证中提取:
在使用默认的基于通道的shutdownNow()
实现时,不要调用FSDirectory
(中断线程)很重要。使用(较慢的)RAFDirectory
似乎对产生的中断线程没有问题。