纯PHP全文检索引擎php-fts发布,无需扩展依赖
「php-fts是一个纯PHP编写的全文检索引擎,无需扩展、外部服务或依赖,适用于共享主机和小型项目,支持BM25评分、模糊匹配和过滤器。」
在搜索引擎领域,Elasticsearch、Meilisearch等专业工具固然强大,但对于部署环境受限的项目来说,它们往往显得过于沉重。近日,开源项目php-fts在Hacker News上引发关注,这是一个完全用纯PHP编写的全文检索引擎,不依赖任何PHP扩展、外部服务或第三方库,仅需标准PHP 8.1+环境即可运行。
php-fts的设计初衷非常明确:为那些无法部署独立搜索服务的场景提供解决方案。例如,在共享主机(如OVH、Infomaniak、o2switch等)、小型VPS,或者开发者希望保持技术栈极简且可移植的项目中,php-fts可以作为一个轻量级替代方案。项目作者强调,如果用户拥有Elasticsearch、Meilisearch或Typesense的部署条件,应优先选择这些专业工具;但如果缺乏基础设施或希望避免额外配置,php-fts提供了扎实的全文搜索能力,包括排序结果、过滤器和容错匹配,且无需安装任何东西,只需指定一个目录路径即可运行。
php-fts的核心算法采用了BM25和IDF评分,这与Lucene/Elasticsearch使用的评分算法相同,确保了搜索结果的行业标准相关性排序。同时,它支持三元组索引(trigram indexing),能够容忍拼写错误和部分匹配,提升用户体验。在功能方面,php-fts提供了字段加权(field boosting),允许开发者对标题等关键字段赋予更高权重;支持精确匹配、比较、范围、in/not in/contains等多种过滤器,并支持AND/OR组合条件逻辑。此外,它还具备批量插入功能,速度比单条插入快2.4倍,以及软删除(tombstones)、原子更新、碎片监控和压缩重建等高级特性。
在性能方面,php-fts的索引文件采用二进制格式存储,可跨服务器移植,无需重建。其三元组查找复杂度为O(1),索引大小固定约810KB,无需树遍历,保证了查询效率。项目适合数据集在几百到几万篇文档范围内的场景,支持离线或定时索引,运行时提供搜索服务。不过,它不适合需要实时索引、高并发写入、百万级文档或地理搜索、多租户隔离等场景。
安装方面,php-fts支持通过Composer(composer require ols/php-fts)或手动复制src/目录并加载autoload.php两种方式。使用示例中,开发者可以轻松创建搜索引擎实例,打开索引目录,插入包含标题、描述、价格、库存、分类、品牌和标签等字段的文档,然后执行搜索并获取排序结果。这种简洁的API设计降低了集成门槛。
对于PHP开发者而言,php-fts填补了PHP生态中轻量级全文搜索的空白。它特别适合在共享主机或小型项目中快速添加搜索功能,而无需依赖外部服务或复杂配置。尽管其适用范围有限,但在特定场景下,它提供了一种高效、自包含的解决方案,体现了开源社区对简化技术栈的持续追求。
来源:Heooo AI工具导航