PHP实现全文索引,使用讯搜(官方网站http://www.xunsearch.com/)

1.安装

目前讯搜只能安装在linux系统,官方安装文档:http://www.xunsearch.com/doc/php/guide/start.installation

安装步骤:

# 下载安装包
wget http://www.xunsearch.com/download/xunsearch-full-latest.tar.bz2# 解压 如果报错tar (child): lbzip2: Cannot exec: No such file or directory 则安装bzip2,执行命令: yum -y install bzip2
tar -xjf xunsearch-full-latest.tar.bz2# 安装
cd xunsearch-full-1.3.0/
sh setup.sh
# 中途需要输入安装路径,我这边的安装路径是 /opt/www/xunsearch,记得先创建好路径# 安装完成会提示启动命令,其实就是安装路径下bin/xs-ctl.sh restart
# 启动服务
/opt/www/xunsearch/bin/xs-ctl.sh restart

启动完成后可以输入命令查看服务的运行状态: ps -ef | grep xs-searchd

安装完成

2.PHP使用讯搜

首先创建数据库配置文件,官方建议我们数据库配置文件都统一放在安装路径下/sdk/php/apk/下,我这边创建一个新闻数据库:

/opt/www/xunsearch/sdk/php/apk/news.ini

内容如下:

project.name = news
project.default_charset = utf-8
server.index = 8383
server.search = 8384[pid]
type = id[subject]
type = title[message]
type = body[chrono]
type = numeric

代码中调用讯搜的逻辑是:

(1)新增索引

(2)搜索

代码中调用讯搜必须引入/opt/www/xunsearch/sdk/php/lib/XS.php,下面是新增索引的代码例子:

<?phprequire_once '/opt/www/xunsearch/sdk/php/lib/XS.php';try{$xs = new XS('/opt/www/xunsearch/sdk/php/apk/news.ini');$index = $xs->index;$doc = new XSDocument;// 添加文章1的索引$doc->setFields(array('pid' => 1, // 唯一ID'subject' => '炸带鱼时,拍面粉还是淀粉?原来很多人都做错了,这才是正确方法',  // 文章标题'message' => '', // 内容 因为我这边只希望根据标题搜索,所以内容为空'chrono' => time() // 设置这个值后面排序用到));$index->add($doc);// 添加文章2的索引$doc->setFields(array('pid' => 2,'subject' => '戒烟那么难,为什么还是劝你试?这些好处一个月就能体现','message' => '','chrono' => time()));$index->add($doc);
}catch(XSException $e) {print_r($e);
}

搜索代码例子:

<?phprequire_once '/opt/www/xunsearch/sdk/php/lib/XS.php';try{$xs = new XS('/opt/www/xunsearch/sdk/php/apk/news.ini');// setFuzzy 开启模糊搜索,让搜索结果更加广泛// setSort('chrono') 设置排序为chrono值倒序// setLimit(10, 5) 获取结果最大10条,从第5条开始// search('世界') 搜索关键词$docs = $xs->search->setFuzzy()->setSort('chrono')->setLimit(10, 5)->search('世界');}catch(XSException $e) {print_r($e);
}

获取分词代码例子:

<?phprequire_once '/opt/www/xunsearch/sdk/php/lib/XS.php';try{$xs = new XS('/opt/www/xunsearch/sdk/php/apk/news.ini');$xs_token = new XSTokenizerScws();return $xs_token->getResult('炸带鱼时,拍面粉还是淀粉?原来很多人都做错了,这才是正确方法');}catch(XSException $e) {print_r($e);
}

更多的功能参考官方文档http://www.xunsearch.com/doc/php/guide/start.overview , http://www.xunsearch.com/doc/php/api

下面是实际开发应用整理的使用讯搜的工具类:

<?phprequire_once '/opt/www/xunsearch/sdk/php/lib/XS.php';class MyXS {protected $xs;protected $xs_doc;protected $xs_token;function __construct() {$this->xs = new XS(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'news.ini');$this->xs_doc = new XSDocument;$this->xs_token = new XSTokenizerScws;}/* 添加索引 */public function addIndex($pid, $subject, $chrono = null) {$this->xs_doc->setFields(array('pid' => $pid,'subject' => $subject,'message' => '','chrono' => empty($chrono) ? time() : $chrono));$this->xs->index->add($this->xs_doc);}/* 搜索 */public function search($key, $step = 20, $start = 0) {$docs = $this->xs->search->setFuzzy()->setSort('chrono')->setLimit($step, $start)->search($key);$result = array();foreach ($docs as $key => $value) {$result[$value['pid']] = $value['subject'];}return $result;}/* 分词 */public function getToken($str) {$result = $this->xs_token->getResult($str);$token = array();foreach ($result as $key => $value) {$token[] = $value['word'];}return $token;}/* 清空索引 */public function clearIndex() {$this->xs->index->clean();}}

PHP全文索引 讯搜xunsearch相关推荐

  1. php libevent 问题,安装讯搜xunsearch libevent时遇到的问题,如何解决?

    在unbtun上安装搜索引擎讯搜xunsearch,遇到了安装libevent依赖时的一个坑,下面看看错误,然后是怎么解决的. Checking scws ... 1.2.3 Checking scw ...

  2. 关于使用讯搜(xunsearch)过程中遇到的坑

    1. 在xunsearch中按区间搜索的方法 `$search->addRange('字段名','from','to')` - 第一个参数为字段名 - 第二个参数为区间的起点(如果为null,则 ...

  3. XunSearch(讯搜)的使用教程步骤

    XunSearch(讯搜)的使用教程步骤 2013年7月12日/2条评论 XunSearch是一款很不错的中文全文检索工具使用xunsearch快速构建自己的PHP全文搜索引擎. 需要注意的是XunS ...

  4. 实践中 XunSearch(讯搜)的使用教程步骤

    XunSearch(讯搜)的使用教程步骤 一.安装编译工具 yum install make gcc g++ gcc-c++ libtool autoconf automake imake mysql ...

  5. xunsearch mysql 索引_实践中 XunSearch(讯搜)更新索引方案对比

    检测PHP-SDK的运行条件(查看是否支持XunSearch)   $prefix/sdk/php/util/RequiredCheck.php $prefix #替换成你的安装目录 使用 XunSe ...

  6. linux xunsou_mysql中文分词全文搜索索引讯搜的安装

    迅搜是开源免费.高性能.多功能简单易用的专业全文检索技术方案,帮助一般开发者针对既有的海量数据,快速而方便地建立自己的全文搜索引擎.全文检索可以帮助您降低服务器搜索负荷.极大程度的提高搜索速度和用户体 ...

  7. php 全文搜索引擎-讯搜使用

    相信很多朋友遇到过,需要全文搜索的场景,百度了一圈发现了一个xunsearch 首先本地采集了1万篇文章,发现效率还可以. 使用上也很简单,直接上代码 //接收关键词 $xs = new XS('xp ...

  8. 讯搜全文检索引擎-服务器部署

    ==============[讯搜全文检索引擎-部署服务器]=============== 1.存放在 xxx.xxxxxx.com 项目下的 search 模块,访问域名为:search.xxxxx ...

  9. 讯搜安装报错You need a working C++ compiler to compile Xapian

    上面的错误是因为没有安装必备的编译依赖,按照下面的步骤来就行了. #安装依赖 yum install -y gcc make kernel-headers kernel-devel zlib-deve ...

  10. linux xunsou_Linux下的迅搜(xunsearch)安装使用教程,并设置成开机启动服务

    1.到 /usr/local/src 目录,运行下面指令下载.解压安装包cd /usr/local/src wget http://www.xunsearch.com/download/xunsear ...

最新文章

  1. php读取部分文章显示不出来了,织梦使用PHP5.3环境时遇到部分文章出现”读取附加信息出错“的解决办法jz1...
  2. python新式类和经典类的区别?
  3. hdu 3812 Sea Sky 深搜+剪枝
  4. 《SpringBoot揭秘 快速构建微服务体系》读后感(三)
  5. react vs 2017_我在React Europe 2017上学到了什么
  6. js制定一个单选按钮_【下】每个月整理发票太头疼?手把手教你快速开发一个工具解决!...
  7. javascript for java 一个可以让用户通过JAVA调用JAVASCRIPT的JAVA包
  8. matlab求最大公倍数_小学数学最大公因数最小公倍数练习
  9. BZOJ 2733: [HNOI2012]永无乡
  10. 实现类似美团的下拉分级式菜单
  11. predict函数 R_R包randomForest的随机森林回归模型以及对重要变量的选择
  12. 用了Python这么久,你连这个都没试过?
  13. GB35114---SM3withSM2证书生成及读取(一)
  14. 深圳大学C C++ 数据结构题目答案清单完整题库(含期中模拟 期末模拟 期末真题 考前练习)
  15. socket函数send和recv函数
  16. 零基础学习软件测试必看的python之基础语法
  17. Jsp中9大内建对象
  18. Markdown懒办法排版微信公众号文章
  19. 临床执业助理医师(综合练习)题库【3】
  20. 21天学通Java学习笔记-Day10(网路编程)

热门文章

  1. (day 26 - 广度优先搜索 )剑指 Offer 32 - III. 从上到下打印二叉树 III
  2. python标点符号全是英文吗_python 过滤中文、英文标点特殊符号
  3. 动态分配算法_【原创连载】算法素颜(第4篇):空间复杂度你真的懂了吗?
  4. jq过滤替换敏感词_如何用python简单过滤敏感信息
  5. 03. Django基础:URL和视图函数
  6. Javascript特效:天猫导航
  7. asp.net html 扩展,StaticHtml
  8. 计算机科学家图灵,伟大的计算机科学家图灵
  9. 图像语义分割(2)-DeepLabV1: 使用深度卷积网络和全连接条件随机场进行图像语义分割
  10. 类的继承与派生的基础学习