Whoosh
Fast, pure-Python full text indexing, search, and spell checking library.
What it is and what it does
Whoosh is a full-text search library written entirely in Python, designed to let developers add search and indexing capabilities to applications without needing to compile or install external dependencies. It provides a Pythonic API for creating indexes, performing searches, and includes features like pluggable scoring algorithms (including BM25F), text analysis, and a built-in spell-checker. The library was created for use in Houdini's help system and is maintained as a pure-Python solution suitable for research, prototyping, or scenarios where avoiding compiled dependencies is important.
The package supports fielded indexing and search, allowing you to index and query structured documents. It includes a powerful query language and lets you customize nearly every component—scoring, text analysis, storage format, and posting format—to fit your exact needs. However, the project has not been actively maintained since April 2016, meaning it does not receive bug fixes, security updates, or compatibility improvements for newer Python releases.
Use it for:
- Add search functionality to a web application or documentation site without external service dependencies
- Build a research prototype or proof-of-concept search system in pure Python
- Index and search structured documents in a Python application with custom scoring or analysis needs
- Implement spell-checking functionality within a Python application
- Create a searchable help system or knowledge base embedded in a desktop or web application
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Whoosh is a pure-Python full-text search and indexing library that lets you add search functionality to applications without compiling native code.
Yes, if you need a pure-Python search library for a new project and can accept the maintenance risk. The low install friction and permissive license make it accessible, but the abandoned status since 2016 means no security updates, Python version compatibility fixes, or performance improvements. Use it for prototypes, research, or internal tools where you control the environment; avoid it for production systems or applications requiring ongoing support.
Install
whoosh on PyPI
pip
pip install whooshuv
uv add whooshpoetry
poetry add whooshInstalling Whoosh
Before you install
Installation is straightforward with no runtime dependencies, but the project has been abandoned since 2016 with no recent maintenance or updates.
License in practice
Licensed under the permissive two-clause BSD license, allowing commercial and private use with minimal restrictions.
Quickstart
pip install Whoosh
from whoosh.fields import Schema, TEXT
from whoosh.index import create_in
schema = Schema(title=TEXT, content=TEXT)
index = create_in("indexdir", schema)
writer = index.writer()
writer.add_document(title="Example", content="Sample text")
writer.commit()
Verify before relying
- Current compatibility with Python versions beyond 3.x (classifiers list Python 3 but no specific minor versions)
- Whether the package remains functional with modern Python releases given its 2016 last release date
- Performance characteristics compared to actively maintained alternatives
Package facts
| License | Two-clause BSD license (permissive) |
| Python support | not specified |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | none |
| Maintenance | abandoned — 3,784 days since the last release |
| First released | |
| Downloads | 1,275,417/month — #4,127 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: Whoosh-2.7.4-py2.py3-none-any.whl
Keywords: index, search, text, spell
Tags
More Python Modules packages
Converts domain names between Unicode and…
permissive · top 100 on PyPI
setuptoolsSetuptools is a Python build backend and…
permissive · top 100 on PyPI
PyYAMLPyYAML parses and emits YAML 1.1 data format,…
permissive · top 100 on PyPI
pydanticPydantic validates Python data structures…
permissive · top 100 on PyPI
annotated-typesProvides reusable metadata objects for use with…
permissive · top 100 on PyPI
typing-inspectionProvides runtime tools to inspect and…
permissive · top 100 on PyPI
Whoosh-ReloadedWhoosh-Reloaded is a pure-Python full-text…
permissive · top 15,000 on PyPI
django-haystackHaystack provides a unified search API for…
permissive · top 15,000 on PyPI
pagefindProvides an async Python API to index and…
permissive · top 5,000 on PyPI
typesensePython client library for Typesense search…
permissive · top 5,000 on PyPI
llama-index-retrievers-bm25Integrates BM25 full-text search retrieval into…
permissive · top 15,000 on PyPI
bm25sBM25S implements the BM25 ranking algorithm in…
permissive · top 5,000 on PyPI
modelsearchIndexes Django models into Elasticsearch,…
permissive · top 15,000 on PyPI
jiebaJieba segments Chinese text into words using…
permissive · top 5,000 on PyPI
meilisearchPython client library for the Meilisearch API,…
permissive · top 5,000 on PyPI
pysolrpysolr is a lightweight Python client for…
permissive · top 15,000 on PyPI