Whoosh快速入门:3步为你的网站加上站内搜索功能

发布时间:2026/8/21 13:38:45
Whoosh快速入门:3步为你的网站加上站内搜索功能 Whoosh快速入门3步为你的网站加上站内搜索功能【免费下载链接】whooshPure-Python full-text search library项目地址: https://gitcode.com/gh_mirrors/who/whooshWhoosh 是一个用纯 Python 实现的全文搜索引擎库只需 3 步就能为你的网站加上站内搜索功能。这篇文章是 Whoosh 快速入门指南面向完全没接触过搜索引擎开发的新手不需要数据库、不需要编译 C 扩展一条 pip 命令安装然后依次完成定义字段、写入索引、执行搜索即可在自己的 Python 网站里跑起真正的全文搜索。为什么站内搜索要选 Whoosh如果你正在用 Flask、Django 或任何 Python 技术栈做网站想给文章、商品、博客加一个搜索框Whoosh 是性价比极高的选择。它由 Matt Chaput 创建最初用于 Side Effects 公司 Houdini 3D 动画软件的在线帮助系统后来开源并持续维护至今当前版本 2.7.4。特性说明 纯 Python无需编译、无二进制依赖pip 安装即用⚡ 索引与检索快同类纯 Python 全文搜索方案中速度领先 可插拔架构评分算法含 BM25F、分词、存储方式都能替换 强大查询语言支持 AND/OR/NOT、通配符、范围查询、指定字段搜索✨ 内置实用功能结果高亮、分页、拼写建议、结果排序对于中小型网站、个人博客、内部工具来说它比接入 Elasticsearch 这类重型方案简单得多也远比数据库的 LIKE 模糊查询专业。安装方法一条命令搞定 Whoosh在终端执行即可完成安装pip install Whoosh安装完成后建议先对照官方快速入门文档 quickstart.rst 走一遍示例全程只要几分钟。如果你习惯从源码学习也可以克隆仓库到本地git clone https://gitcode.com/gh_mirrors/who/whoosh接下来就进入正题用 3 步给网站加上站内搜索功能。第 1 步用 Schema 定义可搜索的字段Whoosh 中一切从 Schema模式开始。Schema 就是一张字段清单它告诉 Whoosh你的每篇文档有哪些信息哪些字段可以搜索哪些字段要存下来展示给用户。from whoosh.fields import Schema, TEXT, ID schema Schema( titleTEXT(storedTrue), # 标题可搜索结果中返回 pathID(storedTrue), # 链接整值索引用于跳转 contentTEXT, # 正文可搜索不存储 )常用的字段类型都定义在 fields.py 中TEXT正文文本支持短语搜索IDURL、日期等整值字段KEYWORD逗号/空格分隔的关键词标签NUMERIC/BOOLEAN/DATETIME数字、布尔、时间STORED只存储不索引用于结果页展示关于字段搭配的更多细节官方文档 schema.rst 有完整说明。Schema 定义一次即可之后会随索引一起保存。第 2 步创建索引并写入文档有了 Schema就能创建索引目录并向其中投递文档了。核心 API 都在 index.py 中。import os from whoosh.index import create_in if not os.path.exists(indexdir): os.mkdir(indexdir) ix create_in(indexdir, schema) # 创建索引 writer ix.writer() # 获取写入器 writer.add_document(titlePython 快速入门, path/tutorials/python, content这是一篇写给新手的 Python 教程……) writer.add_document(titleDjango 部署指南, path/tutorials/django, content本文介绍 Django 项目的线上部署……) writer.commit() # 提交索引生效几点新手提示字段可以缺省Whoosh 不要求每篇文档都填满所有字段之后再次运行网站时用open_dir(indexdir)打开已有索引即可无需重建新增文章时拿到writer()继续add_document再commit()就行批量建立索引的完整流程见 indexing.rst。写索引时注意writer()会锁定索引同一时间只允许一个写入者。第 3 步用 QueryParser 执行站内搜索文档进索引后搜索只需要三行代码。查询语法解析器在 qparser 模块中搜索器在 searching.py 中。from whoosh.index import open_dir from whoosh.qparser import QueryParser ix open_dir(indexdir) with ix.searcher() as searcher: query QueryParser(content, ix.schema).parse(Python 教程) results searcher.search(query, limit10) for hit in results: print(hit[title], hit[path])QueryParser的语法与 Lucene 非常相似开箱即用查询示例含义python AND django同时包含两个词默认即 ANDpython OR django包含任意一个词title:python只在 title 字段中搜索pyth*前缀通配符content:[a TO c]范围查询默认情况下search()最多返回 10 条结果可以用limit调整记得用with语句打开 searcher避免文件句柄泄漏。进阶技巧高亮、分页与拼写建议3 步走完后你的网站已经有了基础的站内搜索功能。想让它更好用Whoosh 还内置了三个高频功能全部写在 searching.py 中结果高亮hit.highlights(content)直接返回带mark标签的关键词上下文片段参考 highlight.rst结果分页searcher.search_page(query, 1, pagelen10)一键返回第 1 页、每页 10 条拼写建议searcher.suggest(content, specail)返回纠正词帮你实现你是不是想找……详见 spelling.rst总结3 步开启站内搜索之旅回顾一下整条 Whoosh 快速入门路线① 用 Schema 定义字段 → ② 创建索引并写入文档 → ③ 用 QueryParser 执行搜索。全程零依赖、零编译代码量不超过 20 行。想要深入了解搜索排序与高级查询可以继续阅读 searching.rst 和 query.rst。从今天起你的网站也能拥有专业级的全文搜索体验了【免费下载链接】whooshPure-Python full-text search library项目地址: https://gitcode.com/gh_mirrors/who/whoosh创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考