欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

XunSearch的使用

发布时间:2023/12/4 编程问答 55 豆豆
生活随笔 收集整理的这篇文章主要介绍了 XunSearch的使用 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

一、项目的配置文件

1、要想使用xunsearch,首先需要进行配置文件的配置。

默认目录在app下,如下面的结构,每一个搜索项目都需要有一个ini文件进行相应的配置。

 

举例:

project.name = novel project.default_charset = utf-8 server.index = 8383 server.search = 8384[novel_id] type = id[title] type = title[author_name][description] type = body[last_time] type = date

 

2、每个字段用一个区段配置来表示,中括号内的名字即为字段名。每个项目包含若干个字段,具体由项目搜索需求决定,并不需一味的与实际源数据库 (如 MYSQL) 一致,而只需要设计搜索功能所涉及的字段即可。

 

3、这里为了安全起见,我同样对查询出的数据起了别名,进而一一对应xunsearch中ini文件定义的字段(第三部分可以看到)。

 

chm手册下载地址:http://www.xunsearch.com/site/download/xs_php_manual.chm

建议如果初次使用xunsearch,则从手册最开始跟着操作一遍。尤其是新手上路部分。

注:在线生成编辑配置文件ini http://www.xunsearch.com/tools/iniconfig

 

二、生成骨架文件【建议最好执行这步,节省很多开发时间】

文档地址:http://www.xunsearch.com/doc/php/guide/util.skel

 

三、从数据库查询出需要的数据,并且将数据添加到xunsearch索引数据库

这里,我是在我外层定义了一个php文件来完成添加数据到XunSearch索引数据库的操作,代码如下

<?php //require '/data/xun/lib/XS.php'; require './lib/XS.php';$XS = new XS('novel');// 建立 XS 对象,项目名称为:novel $index = $XS->index; // 获取 索引对象//创建pdo对象,并从表中读出需要的数据 $dsn = "mysql:dbname=test;host=127.0.0.1"; $pdo = new PDO($dsn,'root','123456'); $sql = "select comic_id as novel_id,name as title,pen_name as author_name,description,last_verify_time as last_time from front_comic"; $stmt = $pdo->query($sql); $data = $stmt->fetchAll(2);//循环添加数据到XunSearch索引库 foreach ($data as $v){// 创建文档对象$doc = new XSDocument();$doc->setFields($v);// 添加到索引数据库中$res = $index->add($doc); }$res = $res ? 'success' : 'fail'; echo $res;

执行a.php文件,则从数据库查询出来的数据就添加到XunSearch索引数据库中了。

 

四、演示效果

这里,访问之前我们生成的对应的骨架文件就可以看到效果了。

到这里,基本的全文检索就已经实现了。

总结:

1、XunSearch全文检索的原理就是将mysql数据库中的我们需要的数据查询出来,并一一对应的添加到XunSearch的索引数据库中,然后,用户在前端查询的时候,就直接查询的是Xunsearch索引数据库中的内容了。这样,可以说速度就变得非常非常快了。

2、在项目中引入XunSearch或者sphinx等全文检索工具,则会大大降低mysql的压力,并且能够更快速的检索出用户需要的数据,无疑体验会更加好。

3、XunSearch索引数据库的文件默认存储在/usr/local/xunsearch/data/项目名 中,每一个项目有自己独立的一个存储库,如下:

4、进入novel项目的存储库,我们可以看到三个文件,一个是存储数据的,一个是存储日志的,一个是存储搜索记录的

 

 

值得注意的是:在测试演示效果的时候,由于xunsearch数据库并不是你这边刚提交完,那边数据就直接更新了,而是异步的(默认大概每两个小时才更新一次),所以,为了更快速的看到效果,我们需要手动去刷新,如下:

util/Indexer.php --flush-log novel

 

总结

以上是生活随笔为你收集整理的XunSearch的使用的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。