Mic*_*hri 3 python lucene search
我正在尝试使用Lucene(实际上是PyLucene!)来查找有多少文档包含我的确切短语.我的代码目前看起来像这样...但它运行得相当慢.有谁知道更快的方式返回文件计数?
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))
Run Code Online (Sandbox Code Playgroud)
通常,编写自定义命中收集器是使用bitset计算命中数的最快方法,如收集器的 javadoc中所示.
其他方法是将TopDocs的结果数指定为1.
TopDocs topDocs = searcher.search(query, filter, 1);
Run Code Online (Sandbox Code Playgroud)
topDocs.totalHits会给你结果总数.我不确定这是否与计算得分一样快,这在上述方法中被忽略.
这些解决方案适用于Java.你必须检查Python中的等效技术.