轻量级全文检索引擎 TNTSearch
2019-04-01 本文已影响0人
烈日星辰
之前我的网站全文检索一直用的 Xunsearch, 但对于大多数中小项目来说,用 Xunsearch,Elastic 总有点太重感觉,所以想找一个轻量级的解决方案,碰巧在论坛看到一篇对TNTSearch介绍的一个贴子《TNTSearch - PHP 实现的全文索引引擎》,觉得很符合我的需求。
TNTSearch 的基本原理是用 SQLite 作为索引数据库,将要索引的字段进行分词,然后建立基于关键词的倒排索引。核心是2张表,一张存放分词后的关键词, 另一张存放关键词与文档对应的关系(相当于多对多的中间表)。
当用户输入一个查询时,将要查询的短语分词得到各个关键词,分别查询出每个关键词对应的文档 ID,再按文档中命中的关键词个数进行排序。
唯一的不足就是对中文支持的不够,因为默认的分词器是以标点符号、特殊符号和空格为分隔符进行分词。
接下来的几篇文章是对 TNTSearch 的介绍和使用。