Whoosh:纯 Python 全文搜索库
Whoosh:纯 Python 全文搜索库
Whoosh 在 GitHub 上拿到 661 Star。
这是一个用纯 Python 实现的全文索引和搜索库。开发者可以用它给应用或网站加上搜索功能,而且每个组件都能按需扩展或替换。

1、这玩意儿是干嘛的
Whoosh 只做一件事:全文搜索。你给文档建立索引,然后按关键词检索,它返回按相关性排序的结果。
跟 Java 生态里的 Lucene 类似,但 Whoosh 完全用 Python 写成。不需要编译,不需要处理二进制依赖,pip 装完就能用。索引文件也是纯文本格式,出问题可以直接打开看。

2、为什么要用它
做过搜索功能的人都知道,接入 Solr 或 Elasticsearch 意味着要维护一套独立服务。部署、调优、监控,每一项都是成本。
Whoosh 走的是另一条路:纯 Python,零外部依赖,直接集成进项目。你的应用不需要额外部署 JVM,不需要配置集群,几行代码就能跑起来搜索。
对于中小型项目,或者不想引入重型基础设施的场景,这种轻量方案更实际。而且因为是纯 Python,遇到 bug 可以自己跟代码,不需要翻 C 扩展的调用栈。
3、核心特性
Whoosh 的能力覆盖面很全:
- Pythonic API,写起来自然
- 纯 Python,无需编译
- 支持字段化索引和搜索
- 可插拔评分算法,包括 BM25F
- 支持文本分析、存储、posting 格式定制
- 查询语言功能完整
- 自带纯 Python 拼写检查
索引和检索速度在纯 Python 方案里算快的。BM25F 这种现代评分算法的支持,也让它在相关性排序上不落后。
4、安装使用
用 pip 直接装:
pip install Whoosh
快速示例,创建索引并搜索:
from whoosh.index import create_in
from whoosh.fields import *
from whoosh.qparser import QueryParser
schema = Schema(title=TEXT(stored=True), path=ID(stored=True), content=TEXT)
ix = create_in("indexdir", schema)
writer = ix.writer()
writer.add_document(title="First doc", path="/a", content="Hello world")
writer.commit()
with ix.searcher() as searcher:
query = QueryParser("content", ix.schema).parse("hello")
results = searcher.search(query)
print(results[0]['title'])
字段定义、分析器、评分函数都可以替换。默认配置能跑,想深入定制也有接口。
5、适合哪些人用
- 需要给 Python 项目加搜索功能,又不想引入外部服务的开发者
- 在纯 Python 环境里工作,无法或不想装 Java 依赖的团队
- 把搜索当研究平台用,需要灵活替换底层算法的人
- 做教学或原型验证,希望代码好读懂、好修改的场景
这个项目最初由 Matt Chaput 开发,最早是给 Side Effects Software 的 Houdini 软件做在线帮助系统的搜索。后来公司同意开源,代码以 BSD 协议放出。虽然 Star 数不算高,但代码质量和设计思路在 Python 搜索库里是值得一提的。
做在线帮助系统的搜索。后来公司同意开源,代码以 BSD 协议放出。虽然 Star 数不算高,但代码质量和设计思路在 Python 搜索库里是值得一提的。
更多推荐

所有评论(0)