8

Whoosh 是一个用纯 Python(官方网站)实现的快速、功能强大的全文索引和搜索库。

但是我找不到与其他搜索引擎的任何速度/性能比较,尤其是基于 Lucene 的(pyLucene,Lupyne ...)?

我习惯使用 pyLucene,它以速度很快但非常非 Python 且不易处理(直接 java-Lucene 包装器)而著称。pyLucene 有一个 pythonic 包装器;卢平。但是,当需要 Lucene 的核心功能时,这并不方便。

Whoosh 和其他人之间的任何性能提示将不胜感激。

4

1 回答 1

10

{1} Whoosh 与 Xappy/Xapian

这里有 Whoosh 和 Xappy/Xapian 支持的测试 Python 搜索的基准。

Whoosh 作者使用这些基准测试了针对 Xappy/Xapian (ref)的 whoosh :

基准如何工作

生成 N 个文档,搜索词是一个随机词和 10 个字符长,加上 10 个额外字段,每个字段有 100 个随机字符(只是为了增加文档的大小)。

对于索引,所有字段都被索引和存储。

对于搜索,以随机顺序搜索所有单词并检索所有存储的字段。

对于 whoosh,我们使用多处理编写器来构建索引 - 这解释了为什么它比 xappy 更快地进行索引(因为它使用了所有 4 个内核,而不仅仅是 1 个)。

对于搜索,xappy/xapian 更快(没有使用并行处理)。但是您会看到 xappy 和 whoosh 之间的速度差异可能没有您预期的那么大。

索引大小约 12MB

# Phenom II X4 840, 8GB RAM, HDD
# Python 2.7.2+ (default, Oct  4 2011, 20:06:09) 
# [GCC 4.6.1] on linux2

Params:
DOC_COUNT: 3000 WORD_LEN: 10
EXTRA_FIELD_COUNT: 10 EXTRA_FIELD_LEN: 100

Benchmarking: xappy 0.5 / xapian 1.2.5
Indexing takes 2.8s (1068.9/s)
Searching takes 0.5s (6635.8/s)

Benchmarking: whoosh 2.3.2
Indexing takes 0.8s (3575.6/s)
Searching takes 0.8s (3714.8/s)
于 2015-05-26T08:06:32.393 回答