为 Laravel Scout 提供 TNTSearch 驱动,无需外部搜索服务即可为 Eloquent 模型添加全文搜索。
teamtnt/tntsearch
纯 PHP 编写的全文搜索引擎库,索引可存于 SQLite、MySQL 或 Redis,返回按相关度排序的文档 ID。
- Star
- 3,201
- Fork
- 296
- 未关闭 Issue
- 56
- 最近提交
- 4天前
这是什么?
TNTSearch 是一个用 PHP 编写的全文搜索库,无需额外部署搜索服务即可为应用添加搜索功能。开发者可以指定 SQLite、MySQL、PostgreSQL 数据库或一个文本文件目录作为数据源,构建索引后进行查询。索引默认存放在 SQLite 中,也支持 MySQL 和 Redis 引擎,并且可以通过 insert、update、delete 方法增量更新,无需整体重建。
搜索功能包括基于 BM25 和 TF-IDF 的相关度排序、支持 AND、OR、NOT 的布尔查询、可配置编辑距离的模糊匹配,以及边输入边匹配的前缀搜索。此外还提供多种语言的词干提取、自定义分词器、结果高亮与摘要片段、基于经纬度的最近点搜索,以及简单的文本分类器。
搜索方法返回的是文档 ID 和分数,而不是完整记录,因此应用需要从自己的数据库中取回对应数据,并保持返回的顺序。项目还提供独立的 Laravel Scout 驱动包。
核心功能
- 01基于 BM25 和 TF-IDF 的相关度排序
- 02支持 AND、OR、NOT 的布尔查询
- 03可调编辑距离和前缀长度的模糊匹配
- 04边输入边匹配的前缀搜索
- 05索引可存于 SQLite、MySQL 或 Redis,支持增量更新
- 06多语言词干提取,并可自定义分词器
适用场景
- 在 PHP 或 Laravel 应用中添加站内或商品搜索,无需单独部署搜索服务
- 检索以文本文件形式保存的文档集合
- 按经纬度查找附近的地点
- 为 PHP 项目添加简单的文本分类功能
快速上手
- 1
使用 Composer 安装库
composer require teamtnt/tntsearch - 2
配置 TNTSearch,从源数据查询构建索引,然后选择索引并搜索
使用前须知
- 搜索只返回文档 ID 和分数,不返回文档内容,需要从你自己的数据库中获取数据行。
- 默认引擎需要 PHP 7.4 或更高版本,并启用 pdo_sqlite 扩展。
收录于专题
标签
常见问题
- tntsearch 是什么?
- 纯 PHP 编写的全文搜索引擎库,索引可存于 SQLite、MySQL 或 Redis,返回按相关度排序的文档 ID。 TNTSearch 是一个用 PHP 编写的全文搜索库,无需额外部署搜索服务即可为应用添加搜索功能。开发者可以指定 SQLite、MySQL、PostgreSQL 数据库或一个文本文件目录作为数据源,构建索引后进行查询。索引默认存放在 SQLite 中,也支持 MySQL 和 Redis 引擎,并且可以通过 insert、update、delete 方法增量更新,无需整体重建。
- tntsearch 可以免费使用吗?用的什么许可证?
- tntsearch 以 MIT 许可证开源。用于商业产品前,请先确认许可证条款。
- tntsearch 还在维护吗?
- 活跃维护中。tntsearch 最近一次提交是在 2026年11月3日。
- tntsearch 适合用来做什么?
- 在 PHP 或 Laravel 应用中添加站内或商品搜索,无需单独部署搜索服务 检索以文本文件形式保存的文档集合 按经纬度查找附近的地点 为 PHP 项目添加简单的文本分类功能
- tntsearch 怎么安装和运行?
- 使用 Composer 安装库: composer require teamtnt/tntsearch 配置 TNTSearch,从源数据查询构建索引,然后选择索引并搜索
- 在哪里获取 tntsearch?
- 源代码和安装说明在 GitHub 上:https://github.com/teamtnt/tntsearch
概要由 AI 根据项目 README 生成;GitHub 数据每日更新。
相关项目
为 Redis 数据提供全文检索、二级索引、向量相似度搜索和聚合查询的查询引擎模块。
Typesense 是一个开源的内存搜索引擎,支持容错拼写、分面筛选、地理搜索和向量搜索,是 Algolia 和 Elasticsearch 的易用替代方案。
一个用 Rust 编写、受 Apache Lucene 启发的全文搜索引擎库,用于在应用中构建搜索功能。
开源搜索数据库,支持全文、向量与混合检索,支持实时索引和 SQL,可作为 Elasticsearch 的替代方案。
用 Rust 编写的词法、向量与混合搜索引擎,可嵌入应用作为库使用,也可作为多租户服务运行。