PHP WindSearch实现站内搜索功能
WindSearch是一个基于中文分词,由纯PHP开发全文检索引擎,可快速搭建PHP站点的站内搜索,他没有任何繁琐的安装配置、不需要维护调优、不占用服务器内存、可与PHP项目完美融合在一起。
github地址:github.com/rock365/windsearch
必须极速安装~
使用composer安装:
或 使用Git安装:
或 直接前往github: github.com/rock365/windsearch
还配置啥,立即开始用吧!
WindSearch包含即用模式、专业模式,即用模式适合简单搜索场景,专业模式支持复杂搜索。
即用模式
“即用模式”可以立即导入数据,无任何配置,支持int主键、uuid主键,适合简单的搜索场景。即用模式的各种api均有fast关键字。
“即用模式”的原理:对字符串进行ngram分词,搜索的结果是主键集合,你可以使用这些集合从MySQL等数据库查询原始数据。
引入文件:
WindSearch安装完成后,引入入口文件,注意具体文件路径
导入数据
// 实例化对象
$Wind = new \WindSearch\Index\Wind('test'); //test 当前索引库的名称
// 清空之前的数据(如果之前使用即用模式导入过数据)
$Wind->deleteFastIndex();
// 批次导入数据
// $res 是从数据库查询的数据
foreach($res as $v){
$text = $v['title'];
$primarykey = $v['id'];
// $text是需要搜索的具体内容,比如title;$primarykey是主键值,比如id的值
$Wind->fastIndexer($text, $primarykey);
}
//每导入一批数据,就调用此方法进行保存
$Wind->fastBatchWrite();
// 所有数据全部导入完成后,接着构建索引(不一定非得紧接着调用,也可以在其它地方单独调用)
$Wind->fastBuildIndex();开始搜索
每个索引库都可以使用即用模式导入数据,数据单独存放,跟专业模式的数据不冲突,由于即用模式属于某个索引库的下属模块,所以删除某个索引库时,同样会删除即用模式的索引数据,所以一个索引库名称尽量只使用一种模式。
注意,即用模式的搜索效果可能比不上专业模式,可根据情况作出取舍。
专业模式
(专业的部分配合文档使用更佳)
引入文件:
WindSearch安装完成后,引入入口文件,注意具体文件路径
建索引库:
复制修改粘贴即可,跟mysql建表差不多
$mapping = [
//设置索引库的名称,比如对应的表名
'name' => 'test',
// 字段配置
'field' => [
[
'name' => 'id',// 主键名称 主键必须设置
'type' => 'primarykey', //数据类型为主键 必须设置
'primarykey_type' => 'Int_Incremental', // int递增
],
[
'name' => 'title',
'index' => true, // 是否索引此字段
'type' => 'text',
'analyzer' => 'segment', // 配置分词方式
],
[
'name' => 'tags',
'index' => true,
'type' => 'keyword',
]
[
'name' => 'score',
'type' => 'numeric',
],
[
'name' => 'time',
'type' => 'date'
],
[
'name' => 'descr',
'type' => 'text',
],
]
];
// 实例化对象
$Wind = new \WindSearch\Index\Wind('test'); //test 当前索引库的名称
//检查是否存在此索引库
$is_index = $Wind->checkIndex();
// 如果存在此索引库
if ($is_index) {
//删除索引库
$Wind->delIndex();
}
//创建索引库
$Wind->createIndex($mapping);上一篇:PHP建立MySQL与MySQLi持久化连接(长连接)区别
栏 目:PHP编程
本文地址:https://www.fushidao.cc/wangluobiancheng/23813.html
您可能感兴趣的文章
- 01-22如何实现PHP编程中九九乘法表的倒序显示?
- 01-22如何通过PHP编程在网页中灵活输出不同尺寸的字体样式?
- 01-22php编程第3版pdf 百度云盘免费获取?版本更新内容有何不同?
- 01-22为何PHP编程仅限与MySQL数据库联合,其他数据库呢?
- 01-22PHP究竟有何独特之处,使其成为网页开发首选编程语言?
- 01-22如何利用PHP编程高效实现学生信息管理系统的开发与应用?
- 01-22PHP编程语言在众多网站中究竟占据怎样的使用比例和地位?
- 01-22在PHP编程中如何高效求解2的10次方等于多少?
- 01-22PHP编程基础与实例教程,期末考试如何应对?技巧解析与复习指南
- 01-22PHP如何实现小写字母转大写的完整编程示例及疑问?
阅读排行
推荐教程
- 07-25PHP建立MySQL与MySQLi持久化连接(长连接)区别
- 07-25PHP WindSearch实现站内搜索功能
- 07-25PHP调用FFmpeg实现视频切片
- 01-21PHP编程如何巧妙实现九九乘法表?分享编程技巧与代码细节!
- 11-23PHP 7安装使用体验之性能大提升,兼容性强,扩展支
- 01-22php编程一元二次方程如何用一元二次方程在php中求解?详细教程分享!
- 11-22PHP自定义函数判断是否为Get、Post及Ajax提交的方法
- 01-22PHP编程如何高效接收文件并安全保存至数据库中?
- 01-22PHP编程挑战,如何编写代码计算从1到1100所有奇数的和?
- 01-22php编程第3版pdf 百度云盘免费获取?版本更新内容有何不同?
