Lucene:取消搜索的正确方法是什么?

时间:2016-04-09 17:25:52

标签: java lucene

我目前正在调查lucene并想知道取消使用org.apache.lucene.search.IndexSearcher执行搜索的最佳方法是什么?

我可以想象只是在我为搜索创建的线程上调用中断,但我不确定lucene中的相关组件是否会对中断作出反应(不通过源代码的深度进行搜索)。

是否有'官方'方式/什么是最好的方式?

祝你好运

1 个答案:

答案 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似乎对产生的中断线程没有问题。