python - 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 = 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))

最佳答案

通常,编写自定义命中收集器是使用位集计算命中数的最快方法,如 Collector 的 javadoc 中所示。 .

另一种方法是获取 TopDocs 并将结果数指定为一个。

TopDocs topDocs = searcher.search(query, filter, 1);

topDocs.totalHits 将为您提供结果总数。我不确定这是否与计算分数一样快,这在上述方法中被跳过。

这些解决方案适用于 Java。您必须检查 Python 中的等效技术。

关于python - Lucene:返回短语文档出现的最快方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2796660/

相关文章:

Python matplotlib/Seaborn stripplot 与点之间的连接

python - cython-distutils 与 cmake : linking against libpython?

python - 如何使用 Pandas DataFrame 有效地映射值(来自 CSV 文件)?

Javascript:查找并突出显示所有出现的关键字。不区分大小写,部分和完整单词

.net - 使用 MultiFieldQueryParser 时,Lucene 中的哪个字段包含我的搜索文本?

python - 以多列定义的频率填写分组中的缺失日期

android - 在 android 中使用 firebase 按名称搜索

ios - 自动完成搜索栏

elasticsearch - kibana中两个不同查询的除法计数

java - 如果排序字段为 "",lucene 如何使用比较器处理排序字段