美文网首页
如何使用xunsearch

如何使用xunsearch

作者: 骑士恨煎蛋 | 来源:发表于2017-06-14 18:41 被阅读0次

    1 安装

    1.1 安装依赖环境

    apt-get install php build-essential zlib1g-dev  php-mysql -y

    1.2 安装xunSearch程序

    ./setup.sh --prefix=/usr/local/xunsearch

    2 启动

    /usr/local/bin/xs-ctl.sh restart

    3 测试

    $prefix = /usr/local/xunsearch

    $prefix/sdk/php/util里面执行:

    ./Indexer.php --source=csv --clean demo

    4 加入开机启动

    centos编辑:

    /etc/rc.d/rc.local

    ubuntu编辑:

    /etc/rc.local

    添加启动项:/usr/local/search/bin/xs-ctl.sh start

    这样再次就可以了:ps -ef | grep search 就可以查看到 1个主进程3个辅助进程。

    第二部分:基础样例测试

    2.1 demo中csv库的测试

    输入【建立索引库】:

    进入到执行目录:cd /usr/local/search/sdk/php/util

    开启csv方式测试:./Indexer.php --source=csv --clean demo

    加入如下三条数据:

    1,关于 xunsearch 的 DEMO 项目测试,项目测试是一个很有意思的行为!,1314336158

    2,测试第二篇,这里是第二篇文章的内容,1314336160

    3,项目测试第三篇,俗话说,无三不成礼,所以就有了第三篇,1314336168

    最后使用回车结束,然后使用ctrl+D结束输入。

    测试输出【搜索测试工具】:

    ./Quest.php demo 项目

    就可以显示结果了。

    2.2 user中的sql库测试

    新建mysql

    创建数据库及数据表:

    CREATE TABLE `users` (

    `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '序号,主键,自增',

    `username` varchar(200) DEFAULT NULL COMMENT '用户名',

    `passwd` varchar(200) DEFAULT NULL COMMENT '密码',

    `phone` int(11) DEFAULT NULL COMMENT '手机号',

    `content` text COMMENT '信息',

    PRIMARY KEY (`id`)

    ) ENGINE=MyISAM DEFAULT CHARSET=utf8

    插入数据:随便插入数据即可。

    创建配置文件:

    /usr/local/search/sdk/php/app# nano user.ini

    配置文件引导:http://www.xunsearch.com/tools/iniconfig

    配置完成内容如下:

    project.name = user

    [id]

    type = id

    [username]

    type = title

    [passwd]

    [content]

    type = body

    截至到目前为止:准备完成。

    建立 xunsearch 索引【建立索引库】 。

    默认的demo格式:--source=mysql://[user[:passwd]@]host/dbname[/table]

    ./Indexer.php --source=mysql://root:flzx_3QC@192.168.50.145/XunSearch/users --sql="select * from users" --clean user

    注意:此处的sql语句不要加分号。

    执行查询:

    ./Quest.php user jingshan

    可以查询到结果

    //感恩、草根、协同、创新

    第三部分:结合php的基础使用

    3.1 新建项目

    新建任意.php文件,包含系统XS.php文件,这样就可以自动引入 XS、XSException、XSDocument、XSIndex、XSSearch、XSTokenizer对象

    简单创建代码如下:

    include "/usr/local/search/sdk/php/lib/XS.php";

    try{

    $xs = new XS('user');

    $doc = new XSDocument;

    }catch (XSException $e){

    echo $e->getMessage();

    }

    3.2 异常

    如3.1 基础异常使用即可。

    3.3 文档

    类似于msyql值里面的一条行记录,几种赋值方式,推荐setField(array());可以使用foreach循环显示。

    代码如下:

    include "/usr/local/search/sdk/php/lib/XS.php";

    try{

    $xs = new XS('user');

    $doc = new XSDocument;

    $doc->setFields(array(

    'username' => 'jingshan2',

    'passwd' => '123123',

    'phone'=>'13880425377',

    'content'=>'真的吗?'

    )); // 用数组进行批量赋值

    foreach($doc as $name => $value){

    echo "$name: $valuen";

    }

    }catch (XSException $e){

    echo $e->getMessage();

    }

    3.4 索引

    索引使用:

    $xs = new XS('user');

    $index = $xs->index;

    针对索引,可以进行增删改查文档

    添加:

    $data = array(

    'pid' => 234, // 此字段为主键,必须指定

    'subject' => '测试文档的标题',

    'message' => '测试文档的内容部分',

    'chrono' => time());

    // 创建文档对象$doc = new XSDocument;

    $doc->setFields($data);

    // 添加到索引数据库中$index->add($doc);

    更新:

    $data = array(

    'pid' => 234, // 此字段为主键,是进行文档替换的唯一标识

    'subject' => '测试文档的标题',

    'message' => '测试文档的内容部分',

    'chrono' => time());

    // 创建文档对象$doc = new XSDocument;

    $doc->setFields($data);

    // 更新到索引数据库中$index->update($doc);

    删除:

    按主键删除:

    $index->del('123'); // 删除主键值为 123 的记录

    $index->del(array('123', '789', '456')); // 同时删除主键值为 123, 789, 456 的记录

    按字段索引此删除:

    $index->del('abc', 'subject'); // 删除字段 subject 上带有索引词 abc 的所有记录

    $index->del(array('abc', 'def'), 'subject'); // 删除字段 subject 上带有索引词 abc 或 def 的所有记录

    清空索引:

    $index->clean();

    平滑重建索引:

    // 宣布开始重建索引$index->beginRebuild();

    // 然后在此开始添加数据...

    $index->add($doc);...

    // 告诉服务器重建完比$index->endRebuild();

    索引缓冲区:知道即可。

    3.5 搜索

    创建搜索对象:

    $search = $xs->search;

    典型搜索做法:

    $search = $xs->search; // 获取 搜索对象

    $query = 'jingshan'; // 这里的搜索语句很简单,就一个短语

    $search->setQuery($query); // 设置搜索语句

    //$search->addWeight('subject', 'xunsearch'); // 增加附加条件:提升标题中包含 'xunsearch' 的记录的权重

    //$search->setLimit(5, 0); // 设置返回结果最多为 5 条,并跳过前 10 条

    $docs = $search->search(); // 执行搜索,将搜索结果文档保存在 $docs 数组中

    $count = $search->count(); // 获取搜索结果的匹配总数估算值

    echo "count:",$count;

    foreach($docs as $doc_v){

    var_dump($doc_v);

    //echo $doc_v->username;

    }

    快速搜索做法:

    $count = $search->count('项目测试');

    $docs = $search->search('项目测试');

    搜索中的串接操作:

    忽略:类似命令链的方式进行操作。

    搜索日志:

    忽略

    3.6 分词接口

    忽略:

    第四部分:配置文件

    使用配置工具进行简单的配置即可。

    第五部分:管理索引

    简单的索引对增删改查

    第六部分:使用搜索

    进行普通的搜索,获取搜索的结果及,设置搜索内容。分页。

    第七部分:生成demo

    使用创建方式:

    ./SearchSkel.php -p user -o /root

    将生成的框架文件,进行web可访问配置即可。

    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。互联网+时代,时刻要保持学习,携手千锋PHP,Dream It Possible。

    相关文章

      网友评论

          本文标题:如何使用xunsearch

          本文链接:https://www.haomeiwen.com/subject/ehdeqxtx.html