## XunSearch

XunSearch是一款很不错的中文全文检索工具使用xunsearch快速构建自己的PHP全文搜索引擎。

需要注意的是XunSearch只能在Linux和Unix下运行。官方发布了一个DEMO 直接下载 PHP-SDK 就可以开发测试。

安装服务端

1. 下载&解压安装包:http://www.xunsearch.com/site/download

2. 强烈推荐用 $HOME/xunsearch 或 /usr/local/xunsearch 作为安装目录 ( 以下简称 $prefix) 。无论您是首次安装

xunsearch 还是升级新版本,均只要直接执行我们提供的安装脚本,输入安装目录然后耐心等待即可。

“`

cd xunsearch-full-1.4.10 ;

sh setup.sh

“`

3. 安装完毕后,您就可以通过自带的脚本 ($prefix/bin/xs-ctl.sh) 启动/关闭 xunsearch 服务端了。用法举例:

“`

$prefix/bin/xs-ctl.sh start # 默认启动,绑定本地的 8383/8384 端口

$prefix/bin/xs-ctl.sh -b inet start # 绑定全部 IP ,适合 SDK/服务端 不同服务器的情况

$prefix/bin/xs-ctl.sh stop # 停止服务器,若启动时指定了 -b inet 此处也必须指定

“`

4. 没错,安装就是这么简单。特别提示,搜索的所有索引数据将被保存到 $prefix/data 目录,因此如果您希望数据目录另行安排,请采用软连接形式确保 $prefix/data 链至真实数据目录。此外,如果服务端启动时使用了 -b inet 参数,那么请借助 iptables 或其它防火墙工具进行保护,xunsearch 本身出于性能考虑不做其它验证处理。

PHP-SDK

PHP-SDK 的代码默认包含在服务端安装目录中,即 $prefix/sdk/php 。目录结构如下:

“`

|– doc/ — HTML 格式的文档、API手册

|– app/ — 搜索项目 ini 文件的默认存储目录

|– lib/XS.php — 搜索库唯一文件,所有搜索相关功能均必须引入此文件

— util/ — 辅助工具目录

|– RequireCheck.php — 检测您的 PHP 环境是否符合 xunsearch 运行条件

|– Quest.php — 搜索测试工具

— Indexer.php — 索引管理工具

“`

1. 如果您的搜索应用和服务端在同一机器,则无需其它操作,只需在开发时直接引入$prefix/sdk/php/lib/XS.php 即可。

2. 如果您的搜索应用和服务端不在同一机器,则请复制 $prefix/sdk/php 目录到相应的搜索应用服务器,同时出于安全考虑,建议不要放到 WEB 可访问的目录。

3. 使用 SDK 中的 util 工具要求您的 php(cli) 位于可执行文件默认搜索路径中 ( 即用 which php 可以检测到),如不在请做好软链接至 /usr/local/bin/php

检测运行环境

Xunsearch 要求 PHP 是 5.2.0 及以上版本,强烈推荐使用 5.3.x 系列的 PHP。请在安装完毕后直接执行$prefix/sdk/php/util/RequireCheck.php 看输出即可。如果您的终端编码不是 UTF-8 请在调用时加上 -c gbk 参数。

DEMO 服务器

某些情况下,部分用户未能自己部署安装服务端,而又想体验 xunsearch 。因此,我们从发布 1.3.3 版本起,提供了一台供用户测试的 DEMO 服务器。用户无需安装服务端,直接下载 PHP-SDK 就可以开发测试。特别提示,DEMO 服务器只用于

测试目的,并会不定期重置数据。

单独下载 PHP-SDK

如果您没有安装服务端,想直接体验 DEMO 服务器的,您只要从下面地址下载解压 SDK 压缩包即可。

http://www.xunsearch.com/download/xunsearch-sdk-latest.zip

解压后得到 xunsearch-sdk 目录,相应的搜索库文件为 xunsearch-sdk/php/lib/XS.php

服务器地址

索引服务器:demo.xunsearch.com 端口 9393

搜索服务器:demo.xunsearch.com 端口 9394

开发流程

• 为便于讲解说明,假定 PHP-SDK 代码目录为 $sdk 。

• 分析搜索需求,设计搜索应用必需的字段。

• 编写项目配置文件,项目配置 ini 文件存放在 $sdk/app 目录。

• 引入 $sdk/lib/XS.php 进行搜索功能和界面开发,借助 $sdk/util/*.php 工具进行测试或调试。

认识对象

• XS — 搜索项目总对象,所有相关操作均基于此对象及子方法。

• XSDocument — 搜索结果或索引文档,包括一组字段及值,相当于 SQL 表中的一条记录。

• XSIndex — 索引管理,通过 XS 对象的 index 属性取得。

• XSSearch — 搜索功能,通过 XS 对象的 search 属性取得。

• XSException — 异常类型,必须捕捉此异常以判断操作是否正确,例:

“`

require ‘$sdk/lib/XS.php’; // 引入 xunsearch sdk

try {

$xs = new XS(‘demo’); // demo 为项目名称,配置文件是:$sdk/app/demo.in i

// … 此外为其它 XSIndex/XSSearch 的相关功能代码

} catch (XSException $e) {

echo $e . “n” . $e->getTraceAsString() . “n”; // 发生异常,输出描述

}

“`

编写配置文件

推荐使用我们的在线工具编写:http://www.xunsearch.com/tools/iniconfig

demo 项目的配置如下:

创建索引

获取 XSIndex 对象

“`

require ‘$sdk/lib/XS.php’;

try {

$xs = new XS(‘demo’); // 创建 XS 对象,项目名称为:demo

$index = $xs->index; // 获取索引对象

// … 在此编写过索引处理代码 …

} catch (XSException $e) { }

“`

增删改

“`

$doc = new XSDocument(array( // 创建 XSDocument

‘pid’ => 123, // 主键字段,必须指定

‘subject’ => ‘ 测试文档标题’, ‘message’ => ‘ 测试文档内容’,

’chrono’ => time()

));

$index->add($doc); // 添加文档,不检测便索引库内是否已有同一主键数据

$index->update($doc); // 更新文档,若有同主键数据则替换之

$index->del(‘123’); // 删除主键值为 234 的文档

$index->del(array(‘123’,‘456’)); // 删除主键值为 123 及 456 的文档

“`

清空索引

当搜索字段文件变更或出现严重不同步时,建议清空索引。

1 $index->clean(); // 一执行立即生效

索引同步

出于性能优化设计,上面所看到的索引操作都是异步操作。也就是说您通过 PHP 调用的 API 返回后,索引变动是先保存在服务端的队列中,由服务端根据负荷延迟一并写入索引库。这个时间差我们控制在合理范围内,通常是几秒钟时间。但如果您在批量更新后希望立即同步,可以这样:

1 $index->flushIndex();

使用搜索

获取 XSSearch 对象

“`

require ‘$sdk/lib/XS.php’;

try {

$xs = new XS(‘demo’); // 创建 XS 对象,项目名称为:demo

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

// … 在此编写过搜索处理代码 …

} catch (XSException $e) { }

“`

搜索语法

• 查询语句和流行的搜索引擎相似,通过空格把搜索词、句连接起来即可,字段检索使用 field:XXX 的格式。

• 允许使用 AND/OR/NOT/XOR 等显式地布尔关系组合,可以使用小括号 () 包围表达优先级。

• 支持使用双引号对较长搜索词进行精确匹配,要求字段设计时勾选“精确”项。

$search->search(‘ 杭州 西湖’); // 搜索同时包含这2个词的结果

$search->search(‘ 杭州 OR 西湖’); // 搜索包含其中一个词的结果

$search->search(‘subject:杭州 西湖’); // 包括西湖并且标题包含杭州的结果

获取结果

• 设置数量及偏移

$search->setLimit(5, 15); // 设置最多返回 5 条,并跳过前 15 条,即返回第 16-20 条结果

• 获取搜索结果

“`

$docs = $search->setQuery(‘ 测试’)->search(); // 搜索 ‘ 测试’

foreach ($docs as $doc) {

$subject = $search->highlight($doc->subject); // 高亮处理标题

echo $doc->rank() . ‘. ‘ . $subject . ‘ [‘ . $doc->percent() . ‘%] – ‘ . date(‘Y-m-d’) . “n”;

echo $doc->message . “nn”;

}

“`

• 获取搜索结果数量 ( 估算值)

“`

$count = $search->getLastCount(); // 获取最后一次 $search->search() 的匹配数量

$count = $search->count(‘测试’); // 直接检索包含 ‘ 测试’ 的数量

“`

搜索日志

关于日志

系统内部会自动记录并分析搜索关键词日志,通过日志衍生出相关的扩展功能。日志同样是异步更新的并且延迟较大,如需要强制刷新请调用以下指令或索引 API 。

“`

php $sdk/util/Indexer.php -p demo –flush-log # 通过辅助工具刷新日志

$index->flushLogging(); // 通过索引 API 更新

“`

热门搜索

“`

通过 XSSearch::getHotQuery 方法获取热门搜索词,返回的数组以关键词为键名,搜索指数为值。

$words = $search->getHotQuery(); // 获取前 6 个总热门搜索词

$words = $search->getHotQuery(6, ‘lastnum’); // 获取前 10 个上周热门词

“`

相关搜索

“`

通过 XSSearch::getRelatedQuery 方法获取热门搜索词,返回相关搜索词组成的数组。

$words = $search->getRelatedQuery(); // 获取前 6 个和最近一次 setQuery() 相关的搜索词

$words = $search->getRelatedQuery(‘测试’, 10); // 获取 10 个和 ‘ 测试’ 相关的搜索词

“`

搜索纠错

由于输入过快或拼音输入中文很容易出现错误,XSSearch::getCorrectedQuery 方法返回纠正后的关键词组成的数组。

“`

$docs = $search->setQuery(‘ 侧试’)->search(); // 正常进行搜索误打的 ‘ 侧试’

$corrected = $search->getCorrectedQuery(); // 尝试修正

if (count($corrected) > 0) { // 有修正词则列出

echo “ 您是不是要找:n”;

foreach ($corredted as $word) echo $word . “n”;

}

“`

搜索建议

类似常见搜索引擎那样,当用户在输入框键入少量字、拼音、声母时进行智能补全,可以节省用户的输入时间。

“`

$words = $search->getExpandedQuery(‘c’); // 返回 array(‘ 测试’)

$words = $search->getExpandedQuery(‘ 测’); // 返回 array(‘ 测试’)

$words = $search->getExpandedQuery(‘cs’); // 返回 array(‘ 测试’)

“`

最后编辑:2016-10-27作者:sunny5156

喜欢技术....

讯搜 PHP,XunSearch(讯搜)的使用教程步骤相关推荐

  1. 迅搜 php,XunSearch(迅搜) | 搜索

    1.安装篇 运行下面指令下载.解压安装包 wget http://www.xunsearch.com/download/xunsearch-full-latest.tar.bz2 tar -xjf x ...

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

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

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

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

  4. 讯搜 配置mysql_实例讲解帝国cms整合xunsearch(迅搜)教程

    实例讲解帝国cms整合xunsearch(迅搜)教程 来源:51酷酷 编辑:广告联盟评测网 时间:2017-11-28 16:50:18 帝国CMS安装迅搜_linux系统下 安装迅搜记录 目的:由于 ...

  5. 阿里腾讯裁员冲上热搜,消息称最高涉及30%,官方未回应

    阿里腾讯裁员冲上热搜,消息称最高涉及30%,官方未回应 3月13日,阿里裁员.腾讯裁员的消息集体冲上微博热搜.目前话题阅读量分别为9789万和9520.6万.话题词显示,有消息称腾讯阿里等会在未来几周 ...

  6. 4800余网站涉“黄”被封 新浪搜狐腾讯关栏目

    4800余网站涉"黄"被封 新浪搜狐腾讯关栏目[@more@]4800余网站和网上信息服务栏目因涉"黄"被关闭,1170余起网络淫秽色情违法犯罪案件被警方立案侦 ...

  7. 帝国CMS7.5基于迅搜(Xunsearch)的全文搜索插件

    GXECMS博客 - 帝国CMS7.5基于迅搜(Xunsearch)的全文搜索插件 一.插件演示地址 后台演示地址:https://ecms.gxecms.cf/e/admin/index.php 用 ...

  8. 将Hexo同时部署在github和腾讯云开发者平台或Coding初级实践教程

    写在前面的话 其实我也是这两天才接触到Hexo,之前是用的wordpress在阿里云上挂着.觉得Hexo好像更符合现在我的审美,so, do it! 嗯前面安装git和node.js我这边就省略掉了. ...

  9. 腾讯云代理商:腾讯云数据库成功落地国信证券 承载日均亿级交易额

    腾讯云代理商:腾讯云数据库成功落地国信证券 承载日均亿级交易额 聚搜云是上海聚搜信息技术有限公司旗下品牌,坐落于魔都上海,服务于全球.2019年成为阿里云生态合作伙伴.与阿里云.腾讯云.西部数码.美橙 ...

  10. 《搜搜月历》:搜搜的马斯洛分析

    腾讯soso <搜搜月历>是腾讯公司旗下搜索网站搜搜的一个月度精品内容类产品.创刊于2010年4月15日,并发布了第1期.该刊每月10日左右上线,每期16-18个版面,涵盖每月重要时事.网 ...

最新文章

  1. conda Linux系统下的安装与使用
  2. 2019.03.02
  3. flink中datastream和dataset各自print()的异同
  4. LeetCode 111二叉树的最小深度-简单
  5. 基于JAVA+Swing+MYSQL的在线考试系统
  6. a*算法的优缺点_垃圾回收的常见算法
  7. 华三服务器linux系统安装u盘,华三H3CR4900服务器安装linux系统
  8. maven2 clean 错误的解决
  9. innerHTML和innerText的使用和区别
  10. 找回 Windows 11 丢失的扫雷游戏【新春快乐】
  11. layui调用相册功能和点击按钮调用相册功能
  12. 【软考四】软件知识产权基础知识(做题)
  13. 奥鹏计算机应用基础考前,华东2020年秋季学期《计算机应用基础》在线考试
  14. bootstrap v4 toast轻提示正确用法
  15. 福岛第1核电站2号3号反应堆辐射量急剧上升
  16. 设计了一款 IGBT单脉冲、双脉冲测试波形信号发生器
  17. 弥散圆以及最大弥散圆
  18. 2016百度之星 - 测试赛(热身,陈题) 列变位法解密IP聚合放盘子
  19. Cesium 对象Entity点击查看属性信息
  20. 画图时屏幕闪烁的原因和解决方法

热门文章

  1. 2021年中国食品电商行业企业发展规模、融资规模及食品企业电商营销趋势分析[图]
  2. H - Vlad and Candies
  3. HTML取消图片缝隙,怎么去掉图片之间的缝隙?_html/css_WEB-ITnose
  4. Fortran 语言数组下标默认从1开始,C/C++/Java等其他语言默认从0开始
  5. redis的几种连接方式
  6. Update高并发下变慢分析及semi-consistent read
  7. 异构计算 — CPU+GPU
  8. office2007保存操作当中的一些细节问题
  9. 洛谷 - [USACO09MAR]向右看齐Look Up(单调栈)
  10. Apache下载安装