部分关于迅搜的相关使用记录

温馨提醒:此项目(xunsearch)作者好像没有维护了,本文也只是本人在项目中的使用记录

xunsearch

摘自官网


功能:字段检索、结果高亮、字段排序、布尔语法、区间检索、聚合搜索、相关搜索、 权重微调、拼音搜索搜索建议等专业搜索引擎具备的各项功能

  • XS 搜索项目的总对象,所有操作均基于此对象或其属性。
  • XSException 所有操作中出现的异常、错误均抛出此类型的异常,搜索代码中应该尝试捕捉该异常以确定操作是否成功。
  • XSDocument 文档用于描述检索/索引的基础对象,包含一组字段及其值,相当于常规SQL数据表中的一行记录。
  • XSIndex 提供索引添加/删除/修改功能,通常以 XS 对象的属性方式出现,参见 XS::index
  • XSSearch 提供各种搜索功能,通常以 XS 对象的属性方式出现,参见 XS::search
  • XSTokenizer 自定义字段词法分析器接口。
  • 自 v1.4.9 起,可以通过定义常量 XS_APP_ROOT 或设置这个环境变量来改变默认项目配置目录。

    define('XS_APP_ROOT',  . 'path/xs');

服务器端

安装

  1. 运行下面指令下载、解压安装包

    wget http://www.xunsearch.com/download/xunsearch-full-latest.tar.bz2
    tar -xjf xunsearch-full-latest.tar.bz2
  2. 执行安装脚本,根据提示进行操作,主要是输入 xunsearch 软件包的安装目录,强烈建议单独 规划一个目录,而不是混到别的软件目录中。

    cd xunsearch-full-1.3.0/
    sh setup.sh

    第一次安装的话,过程可能会稍显漫长,请不必着急,您大可泡杯茶一边喝一边等待即可。

  3. 待命令运行结束后,如果没有出错中断,则表示顺利安装完成,然后就可以启动/重新启动 xunsearch 的后台服务,下面命令中的 $prefix 请务必替换为您的安装目录,而不是照抄。

    cd $prefix ; bin/xs-ctl.sh restart

    强烈建议您将此命令添加到开机启动脚本中,以便每次服务器重启后能自动启动搜索服务程序, 在 Linux 系统中您可以将脚本指令写进 /etc/rc.local 即可。

  4. 有必要指出的是,关于搜索项目的数据目录规划。搜索系统将所有数据保存在 $prefix/data 目录中。 如果您希望数据目录另行安排或转移至其它分区,请将 $prefix/data 作为软链接指向真实目录。

Info: 出于性能和多数需求考虑 xunsearch 服务端和 SDK API 通讯时没有加密和验证处理, 并且默认情况 xs-ctl.sh 启动的服务程序是绑定并监听在 127.0.0.1 上。

如果您的 SDK 调用和 xunsearch 服务端不在同一服务器,请使用 -b inet 方式启动脚本, 并注意借助类似 iptables 的防火墙来控制 xunsearch8383/8384 两个端口的访问权限。 启动脚本用法举例如下,以下均为合法使用方式:

bin/xs-ctl.sh -b local start    // 监听在本地回环地址 127.0.0.1 上
bin/xs-ctl.sh -b inet start     // 监听在所有本地 IP 地址上
bin/xs-ctl.sh -b a.b.c.d start  // 监听在指定 IP 上
bin/xs-ctl.sh -b unix start     // 分别监听在 tmp/indexd.sock 和 tmp/searchd.sock

上方命令我没用看懂,并且也没有实验成功,所以我将端口设置为所有ip访问:

bin/xs-ctl.sh -b 0.0.0.0 start    // 监听在本地回环地址 127.0.0.1 上
bin/xs-ctl.sh -b inet start     // 监听在所有本地 IP 地址上

使用netstat -tunlp 查看监听网卡IP端口

引用于:思否问答中的评论:改成监听网卡IP或者监听0.0.0.0

开发

两种引用SDK方式:composer和SDK安装包

在项目中使用composer,将项目配置独立到extend文件夹或者config文件夹

  1. 项目配置文件文档地址: 项目配置ini文件设计辅助工具

  2. 重建和添加

重建:会删除之前的所有索引

       $index = $xs->getIndex();

        if (!empty($data)) {
            $index->stopRebuild();
            $index->beginRebuild();
            if (!empty($data)) {
                foreach ($data as $v) {
                    $doc = new \XSDocument();
                    $doc->setFields($v);
                    $index->add($doc);
                }
            }
            $index->endRebuild();
        }
        $index->close();

添加:新增一条

           $index = $xs->getIndex();
           $doc = new \XSDocument();
            $doc->setFields($data);
            $index->add($doc);
           $index->close();
  1. 使用util/Indexer重建:(测试未通过)
// 导入 MySQL 数据库的 xunsearch.article 表到 article 项目中,并且平滑重建
php util/Indexer.php --rebuild --source=mysql://root:root@127.0.0.1/xunsearch --sql="SELECT id,title FROM article" --project=article
  1. 迅搜(xunsearch)自定义词库 (测试未通过)

    • 进入词库目录,使用vi打开自定义词库文件

    • 添加的词

    • 保存退出,重启一下xs-searchd

      /usr/local/xunsearch/bin/xs-ctl.sh -b inet -s search restart
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!