Whoosh是一个快速,功能强大的全文索引和搜索库,以纯Python(official website)实现。
但我找不到与其他搜索引擎相比的任何速度/性能比较,特别是基于Lucene(pyLucene,Lupyne ......)?
我习惯使用pyLucene,它已知速度快但非pythonic且不易处理(直接java-Lucene包装器)。 pyLucene有一个pythonic包装器; Lupyne。但是,当需要Lucene的核心功能时,这并不方便。
Whoosh和其他人之间的任何表现提示都会受到欢迎。
答案 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)