Repolode
teamtnt

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. 1

    使用 Composer 安装库

    composer require teamtnt/tntsearch
  2. 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 数据每日更新。

相关项目