Python Lucene:返回文档的最快方法是出现一个短语?
我试图使用Lucene(实际上是PyLucene!)来找出有多少文档包含我的确切短语。我的代码目前看起来像这样。。。但它运行得相当慢。有人知道一种更快的返回文档计数的方法吗Python Lucene:返回文档的最快方法是出现一个短语?,python,search,lucene,Python,Search,Lucene,我试图使用Lucene(实际上是PyLucene!)来找出有多少文档包含我的确切短语。我的代码目前看起来像这样。。。但它运行得相当慢。有人知道一种更快的返回文档计数的方法吗 phraseList = ["some phrase 1", "some phrase 2"] #etc, a list of phrases... countsearcher = IndexSearcher(SimpleFSDirectory(File(STORE_DIR)), True) analyzer = Stan
phraseList = ["some phrase 1", "some phrase 2"] #etc, a list of phrases...
countsearcher = IndexSearcher(SimpleFSDirectory(File(STORE_DIR)), True)
analyzer = StandardAnalyzer(Version.LUCENE_CURRENT)
for phrase in phraseList:
query = QueryParser(Version.LUCENE_CURRENT, "contents", analyzer).parse("\"" + phrase + "\"")
scoreDocs = countsearcher.search(query, 200).scoreDocs
print "count is: " + str(len(scoreDocs))
通常,编写自定义命中收集器是使用位集计算命中数的最快方法,如的javadoc所示 另一种方法是获取TopDocs,并将结果数指定为一
TopDocs topDocs = searcher.search(query, filter, 1);
topDocs.totalHits
将为您提供结果总数。我不确定这是否和计算分数一样快,这在前面提到的方法中被跳过了
这些解决方案适用于Java。您必须检查Python中的等效技术