今天鼓捣了xunsearch,感觉官方指南写得挺详细,于是按照指南一步一步走,但是感觉越看越凌乱,像看API一样,新手看得特费劲,网上也少有新手教程,于是略过今天的歪路,记录一下我的安装步骤。

Xunsearch PHP-SDK 是与 xunsearch 后端服务协同工作的,所以后先必须先在您的服务器 上安装服务端,服务器操作系统要求必须是 Linux、BSD 或其它类 UNIX 系统,同时安装了 gcc、make 等基础编译环境。[官文]

一,软件准备

PHP5.2.0以上,php已经配置到linux环境变量。

二,傻瓜式安装

#获取wget http://www.xunsearch.com/download/xunsearch-full-latest.tar.bz2

#解压tar -xjf xunsearch-full-latest.tar.bz2

#安装

cd xunsearch-full-1.4.9/

sh setup.sh

接下来提示确认安装目录,默认/usr/local/xunsearch,直接回车确认,y,一个泡面的时间安装完成。

安装完成后,启动/重启xunsearch后台服务,并建议将下面命令添加到 /etc/rc.local 开机脚本中。

/usr/local/xunsearch/bin/xs-ctl.sh start

搜索系统将所有数据保存在 xunsearch安装目录/data 目录中。 如果您希望数据目录另行安排或转移至其它分区,请将 xunsearch安装目录/data 作为软链接指向真实目录。

安装 PHP-SDK:

PHP-SDK 的代码不需要另行下载,已经包含在 xunsearch 的安装结果中了,在此假设您将 xunsearch 安装在$prefix 目录,那么 $prefix/sdk/php 即是 PHP-SDK 的代码目录。目录结构及功能逻列如下:

_|- doc/离线 HTML 版相关文档|- app/用于存放搜索项目的 ini 文件|- lib/XS.php 入口文件,所有搜索功能必须且只需包含此文件

\- util/辅助工具程序目录|-RequireCheck.php 用于检测您的 PHP 环境是否符合运行条件|-IniWizzaard.php 用于帮助您编写 xunsearch 项目配置文件|-Quest.php 搜索测试工具

\- Indexer.php 索引管理工具

如果您的搜索应用程序和 xunsearch 在同一台服务器,则无需复制任何代码,在开发的时候直接包含 入口文件$prefix/sdk/php/lib/XS.php 即可。代码如下:

require_once '$prefix/sdk/php/lib/XS.php';

shell测试xunsearch的php运行环境,运行后会出现配置提示:

#如果php没有配置到linux环境变量/path-to-php/bin/php /usr/local/xunsearch/sdk/php/util/RequiredCheck.php

#已经配置过php环境变量/usr/local/xunsearch/sdk/php/util/RequiredCheck.php

Δ想在shell下测试体验xunsearh的搜索,可以点击体验demo项目。

三,简单使用xunsearch

首先理清xunsearch的使用流程:

配置项目ini(一个sql表对应一个搜索项目ini)

使用Indexer索引管理(shell方式连接数据库表,建立索引)

使用XSsearch搜索对象(在项目中搜索已经建立索引的表,取出数据)

为了方便调试,我这里将整个php-sdk目录复制到本地服务器根目录下,我使用的是(nginx 默认html目录)

cp -R /usr/local/xunsearch/sdk/php /path-to-nginx/html/

至此,我使用PHP-SDK作为php-sdk所在的目录。

下面以一个小例子简单讲解。

项目要求:新闻搜索,可以添加文章,可以根据关键字搜索。

使用mysql,test_xs数据库,表名news,字段如下:

+---------+------------------+------+-----+---------+----------------+

| Field | Type | Null | Key | Default | Extra |

+---------+------------------+------+-----+---------+----------------+

| id | int(10) unsigned | NO | PRI | NULL | auto_increment |

| title | varchar(20) | NO | | | |

| content | varchar(200) | NO | | | |

| addtime | int(10) unsigned | YES | | 0 | |

+---------+------------------+------+-----+---------+----------------+

#此处先导入测试数据

mysql> insert into news (title,content,addtime) values('第一个新闻','今天天气非常好,适合搞搜索',unix_timestamp(now())),('第二个新闻','据新华社今天报道,xunsearch搜索引擎很强大非常好',unix_timestamp(now())),('第三个新闻','天文台预测,今天将启动新一轮的降雨',unix_timestamp(now()));

1,配置项目ini

项目配置ini位于 PHP-SDK/sdk/php/app目录下,xunsearch给了一个demo项目的配置:demo.ini,你可以打开参考其写法,具体配置的详细,你可以点此到官网查看,有例子讲解,这里不累叙,官网还提供了ini配置在线编写器,非常方便。

我这里简单写了一份:news.ini

project.name =news

[id]

type= idtokenizer=full

[title]

type=title

[content]

type=body

[addtime]

type= numeric

View Code

2,使用Indexer索引管理器

每一个项目配置ini配置对应数据库中的一个表,作为一个全文检索工具,必须首先建立索引。Xunsearch提供了使用php编写的Indexer索引管理工具,位于PHP-SDK/util/Indexer.php,提供了(shell下)批量索引导入、清空索引、刷新索引队列、日志等各项功能,具体语法可以点此到官网查看。

此处作为连接数据库,导入索引用。由于我是pdo方式连接mysql,因此写法比较特殊:

PHP-SDK/util/Indexer.php --source=pdo.MySQL://root:123@localhost/test_xs --sql="select * from news" --project=news

将会提示:

初始化数据源 ... pdo.MySQL://root:123@localhost/test_xs

开始批量导入数据 (请直接输入数据) ...

完成索引导入:成功 3 条,失败 0 条

刷新索引提交 ...

索引建立后,可以先用Quest搜索工具测试索引是否建立成功,位于PHP-SDK/util/Quest.php,Quest具体语法点此官网查看。

这里小测一个 PHP-SDK/util/Quest.php news 非常好

在 3 条数据中,大约有 2 条包含 非常好 ,第 1-2 条,用时:0.1118 秒。

1. 第一个新闻 #1# [100%,0.55]

今天天气非常好,适合搞搜索

Addtime:1461037973

2. 第二个新闻 #2# [90%,0.50]

据新华社今天报道,xunsearch搜索引擎很强大非常好

Addtime:1461037973

可见,项目配置news.ini中有提及的字段,搜索结果都展示出来了。

3,使用XSSearch搜索对象

关于XS的基础对象,可以点此到官网查看,此处极其简单的新闻添加,搜索页。

1,newsget.php 在浏览器上输入 XXX/newsget.php?key=关键字 搜索查看

1 <?php2 /*

3 newsget.php4 usage:newsget.php?key=keyword5 */

6

7 $key=trim($_GET['key']);8 require 'php/lib/XS.php';9 try

10 {11 $xs = new XS('news'); //实例化XS对象12 $search=$xs->search; //获取XSSearch搜索对象,了解跟多,点此到官网查看13 $docs=$search->search($key); //通过XSsearch获取XSDocment文档对象14 foreach ($docs as $doc) //循环获取文档内容,获取更多XSDocument文档内容,点此到官网查看15 {16 echo '第'.$doc->rank().'条结果 , 匹配度[' . $doc->percent() . "%]\n
";17 echo 'id:'.$doc->docid().',标题:'.$doc->title.', 搜索内容:'.$doc->content . "\n
"; //使用类似php __get的方式获取文档的字段内容18 echo '
';19 }20 }21 catch (XSException $e)22 {23 echo $e; //直接输出异常描述

24 if (defined('DEBUG')) //如果是 DEBUG 模式,则输出堆栈情况

25 echo "\n" . $e->getTraceAsString() . "\n";26 }

2,newsadd.php 在浏览器上输入XXX/newsadd.php?title=标题&&content=内容 添加内容到数据库和更新到索引中

1 <?php2 /*

3 newsadd.php4 usage:newsadd.php?title=title&&content=content5 */

6

7 $title=trim($_GET['title']);8 $content=trim($_GET['content']);9 //pdo方式连接数据库,添加数据

10 $mysql=new PDO("mysql:localhost;dbname=test_xs",'root','123');11 $mysql->query('set names utf8');12 $mysql->query('use test_xs');13 $addtime=time();14 $id=0;15 $sql="insert into news (title,content,addtime) values('$title','$content',$addtime)";16 if(!$mysql->query($sql))17 {18 die('mysql add err');19 }20 else

21 {22 $id=$mysql->lastInsertId();23 }24 //添加数据到数据库后,导入新索引

25 require 'php/lib/XS.php';26 try

27 {28 $xs = new XS('news');29 $doc = newXSDocument; //关于XSDocument文档对象及操作方式,点此到官网查看30 $doc['id']=$id;  //数组方式赋值

31 $doc->title=$title;//对象方式赋值

32 $doc->setFields(array('content'=>$content,'addtime'=>$addtime));//数据方式批量赋值

33 if($xs->index->add($doc))//将文档添加到索引中,这里的索引更新是异步的,因此不会立即生效,xunsearch搜索系统会在合适的时间内更新,关于index对象,点此到官网查看

34 {35 echo '添加成功';36 }37 else

38 {39 echo '数据添加成功但索引失败';40 }41 }42 catch (XSException $e)43 {44 echo $e; //直接输出异常描述

45 if (defined('DEBUG')) //如果是 DEBUG 模式,则输出堆栈情况

46 echo "\n" . $e->getTraceAsString() . "\n";47 }

完成上面,就差不多算入门了,深入了解Xunsearch,还是到官网转转。

讯搜 配置mysql_Xunsearch迅搜(基于 xapian+scws 的开源中文搜索引擎)安装与简单使用...相关推荐

  1. 讯搜 配置mysql_迅搜使用指南

    迅搜使用指南 帮助一般开发者针对既有的海量数据,快速而方便地建立自己的全文搜索引擎.全文检索可以帮助您降低服务器搜索负荷.极大程度的提高搜索速度和用户体验 1.安装 wget http://www.x ...

  2. 讯搜 配置mysql_迅搜,十分钟搭建一个搜索引擎

    假设有一堆词,也有一堆内容.现在想知道: 每个词的相关词有哪些? 每个词的相关内容有哪些? 每个内容的相关内容有哪些? 利用上述词与词.词与内容.内容与内容的关联,来优化页面的推荐信息,使用户和搜索引 ...

  3. 讯搜 配置mysql_迅搜创建数据库索引

    1.Ubuntu环境下安装: 1)LNMP安装:参考https://lnmp.org/install.html #wget -c http://mirrors.duapp.com/lnmp/lnmp1 ...

  4. xunsearch mysql_xunsearch迅搜体验

    安装与启动 http://www.xunsearch.com/doc/php/guide/start.installation 编写配置文件 http://www.xunsearch.com/doc/ ...

  5. 基于HTTP协议的开源中文分词系统:HTTPCWS 1.0.0 发布

    基于HTTP协议的开源中文分词系统:HTTPCWS 1.0.0 发布[原创] 发布版本: httpcws 1.0.0 (最新版本:2009-08-10发布) 程序网址:http://code.goog ...

  6. 基于macos M1 python3.8的tensorflow安装(简单方便几步完成)

    基于macos M1 python3.8的tensorflow安装: 基于macos M1 ,ios12,anaconda3,python3.8 问题描述: 之前安装tensorflow走了tm的好多 ...

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

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

  8. 虚拟服务器 端口管理,Apache服务配置虚拟主机(基于域名、端口、IP地址)与简单访问权限管理...

    虚拟Web主机 在同一台物理服务器中运行多个Web站点,其中每一一个站点并不独立占用一台真正的计算机. httpd支持的虚拟主机类型 基于域名的虚拟主机 基于IP地址的虚拟主机 基于端口的虚拟主机 构 ...

  9. [腾讯社区开放平台].NET SDK基于New BSD协议开源

    "QQ登录"使用户能使用QQ账号一键登录接入网站,大大降低了注册.登录的门槛.借助庞大的QQ用户群,给第三方网站带来更多新用户.已登录用户还可以将在第三方网站发布.分享的信息即时同 ...

最新文章

  1. 如何用视觉的方法量身高?
  2. BZOJ3670 [Noi2014]动物园 【KMP计数】
  3. Linux 下 zip unzip压缩与解压
  4. Codeforces 1264C/1265E Beautiful Mirrors with queries (概率期望、DP)
  5. 两种解法-树形dp+二分+单调队列(或RMQ)-hdu-4123-Bob’s Race
  6. Android 国际化
  7. 低功耗无线模块超远距离无线传输实现中继的方法
  8. 网站开启https后很慢_网站优化中哪些设置会影响蜘蛛的抓取?对网站SEO产生什么影响...
  9. php编程模式,PHP编程之-设计模式简单实例
  10. python如何给一组数据打标签_给数据集打标签python代码实现(1)
  11. [转]Spring Cloud在国内中小型公司能用起来吗?
  12. 【leetcode】Minimum Path Sum
  13. 更多有关iPhone 13的产品细节曝光
  14. 20150401--Dede+搜索页面,评论
  15. 业务需求访谈中需要注意的重要法则(转)
  16. 性能测试之LoadRunner11安装步骤
  17. 怎么用软件测试iPad,Apple:如何在iphone、ipad上安装一些常用命令行命令
  18. 简单算法-割点和割边
  19. 软件工程实践 Blog11
  20. 耳机插入电脑没反应 控制面板也找不到realtek音频管理器的解决方案

热门文章

  1. 华为交换机重制_华为交换机怎么恢复出厂设置
  2. 使用PyPI来发布FPGA Overlays
  3. 20 Babylonjs入门进阶 弧形旋转相机的更多设置
  4. Web矢量图设计器的应用场景
  5. 一些常用命令和快捷键总结,详见目录
  6. 感谢你们为科技创新和社会进步做出的贡献
  7. 批量随机修改flash 库元件
  8. JavaScript 弹窗(对话框)警告框、确认框、提示框.
  9. python 计算一个字符串中所有数字的和
  10. 《基于MVC的JavaScript Web富应用开发》 电子工业出版社 (一)