飞快的速度有多快?

时间:2015-03-17 15:19:04

标签: python performance whoosh pylucene

Whoosh是一个快速,功能强大的全文索引和搜索库,以纯Python(official website)实现。

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

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

Whoosh和其他人之间的任何表现提示都会受到欢迎。

1 个答案:

答案 0 :(得分:6)

{1}飞快与Xappy / Xapian

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

飞快移动作者使用这些基准来测试对抗Xappy / Xapian (ref)

基准如何运作

  

生成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)