栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > PHP > php开源框架 > xunsearch

XunSearch的使用

xunsearch 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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索引数据库的操作,代码如下

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

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/863724.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号