PHP WindSearch实现站内搜索功能
必须极速安装~使用composer安装1composer require rock365/windsearch或 使用Git安装1git clone gitgithub.com:rock365/windsearch.git还配置啥立即开始用吧WindSearch包含即用模式、专业模式即用模式适合简单搜索场景专业模式支持复杂搜索。即用模式“即用模式”可以立即导入数据无任何配置支持int主键、uuid主键适合简单的搜索场景。即用模式的各种api均有fast关键字。“即用模式”的原理对字符串进行ngram分词搜索的结果是主键集合你可以使用这些集合从MySQL等数据库查询原始数据。引入文件WindSearch安装完成后引入入口文件注意具体文件路径1require_onceyourdirname/vendor/autoload.php;导入数据1234567891011121314151617// 实例化对象$Windnew\WindSearch\Index\Wind(test);//test 当前索引库的名称// 清空之前的数据如果之前使用即用模式导入过数据$Wind-deleteFastIndex();// 批次导入数据// $res 是从数据库查询的数据foreach($resas$v){$text$v[title];$primarykey$v[id];// $text是需要搜索的具体内容比如title$primarykey是主键值比如id的值$Wind-fastIndexer($text,$primarykey);}//每导入一批数据就调用此方法进行保存$Wind-fastBatchWrite();// 所有数据全部导入完成后接着构建索引不一定非得紧接着调用也可以在其它地方单独调用$Wind-fastBuildIndex();开始搜索123456// 开始搜索$Windnew\WindSearch\Index\Wind(test);// 调用搜索方法// $page 第几页 $listRows 每页多少条$res$Wind-fastSearch($text,$page,$listRows)// $res返回的主键比如id集合你可以使用id集合从MySQL等数据库查询原始数据每个索引库都可以使用即用模式导入数据数据单独存放跟专业模式的数据不冲突由于即用模式属于某个索引库的下属模块所以删除某个索引库时同样会删除即用模式的索引数据所以一个索引库名称尽量只使用一种模式。注意即用模式的搜索效果可能比不上专业模式可根据情况作出取舍。引入文件WindSearch安装完成后引入入口文件注意具体文件路径1require_onceyourdirname/vendor/autoload.php;建索引库复制修改粘贴即可跟mysql建表差不多1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950$mapping [//设置索引库的名称比如对应的表名nametest,// 字段配置field [[nameid,// 主键名称 主键必须设置typeprimarykey,//数据类型为主键 必须设置primarykey_typeInt_Incremental,// int递增],[nametitle,index true,// 是否索引此字段typetext,analyzersegment,// 配置分词方式],[nametags,index true,typekeyword,][namescore,typenumeric,],[nametime,typedate],[namedescr,typetext,],]];// 实例化对象$Windnew\WindSearch\Index\Wind(test);//test 当前索引库的名称//检查是否存在此索引库$is_index$Wind-checkIndex();// 如果存在此索引库if($is_index) {//删除索引库$Wind-delIndex();}//创建索引库$Wind-createIndex($mapping);导入数据123456789101112131415//实例化引擎$Windnew\WindSearch\Index\Wind(test);// 初始化$Wind-buildIndexInit();// 开启分词导入数据时加true可加快速度$Wind-loadAnalyzer(true);// 数据量小内容少于一万条则可以一次性全部导入// selectAll...// $result一次性查询的所有内容foreach($resultas$v) {$Wind-indexer($v);}// 批量写入文件保存$Wind-batchWrite();构建索引123// 数据导入结束后接着可立即调用此方法构建索引// 注意数据量大时此步骤会比较耗时$Wind-buildIndex();开始搜索1234567891011121314151617181920212223242526//实例化引擎$Windnew\WindSearch\Index\Wind(test);//开启分词功能$Wind-loadAnalyzer();//开始搜索// 搜索单个字段$query [match [field [nametitle,query$text,],list_rows$listRows,//每页多少条数据page$page,//第几页]];// 搜索接口$res$Wind-search($query,$page,$listRows);// 返回的最终结果可直接渲染到前台页面$resArr$res[result][_source];以上就是PHP WindSearch实现站内搜索功能的详细内容
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2486133.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!