WindSearch介绍
WindSearch是本人开发的一个原生PHP全文检索引擎,为PHP站点的搜索需求而开发,具有轻量、强大的特点,对中小站点尤其适合。
以下是跟ES的各方面对比:
性质
ES:全文检索引擎
WindSearch:全文检索引擎
安装
ES:需要安装、配置
WindSearch:无需安装、配置,引入一行代码就能立即使用
WindSearch安装示例:
// WindSearch安装 引入一行代码,再无其它任何配置
require_once 'yourdirname/vendor/autoload.php';
内存占用
ES:内存占用较高
WindSearch:磁盘式搜索引擎,平时对内存占用为零
规模
ES:适合大型网站
WindSearch:跟PHP中小站点完美适配
维护
ES:服务式,需要维护调优,维护成本较高
WindSearch:插件式,无需任何维护,永不“宕机”
功能
ES:多种检索模式
WindSearch:多种检索模式
WindSearch的检索模式列表:
match 单字段检索
multi_match 多字段检索
match_fuzzy 模糊搜索
match_prefix 前缀匹配
match_suffix 后缀匹配
match_prefix_suffix 前后缀混合匹配
match_phrase 短语搜索
match_terms 精确搜索
match_bool 布尔搜索(无限嵌套)
match_range 范围查询
match_all 查询所有数据
match_rand 随机获取数据
match_primarykey 根据主键查询数据
match_geo 地理空间搜索
match_auto_completion 自动补全
搜索语法
WindSearch的搜索语法跟ES差不多,无额外学习成本
WindSearch搜索语法示例:
// 搜索多个字段
$query = [
'multi_match' => [
'field' => [
[
'name' => 'title',
'query' => $query,//搜索内容
'highlight' => [ // 结果高亮
'is_cut' => true, // 是否将未匹配的地方截取掉
'fixed_length' => '', // 保留多少字符,若为空,则保持原长度
],
],
[
'name' => 'tags',
'query' => '蔬菜',
]
],
// 结果排序
'sort' => [
'time' => 'asc' //asc 按字段值正序 desc 按字段值倒序
],
'list_rows' => $listRows, // 每页多少条数据
'page' => $page, // 第几页
]
];
性能
ES:服务器越牛,数据承载量越大
WindSearch:适合单机使用,可承载百万至千万的数据,无需高配服务器
性价比
ES:对于中小网站,各方面成本较高
WindSearch:对于中小网站,几乎没有什么成本
WindSearch代码地址:
WindSearch在线文档:
偶尔不稳定,多刷新几次
WindSearch 开发文档WindSearch,专业的PHP全文检索解决方案,适用于中小站点,具有安全、易用、强大的特点。https://rock365.github.io/