高性能、全功能的全文检索解决方案-xunsearch 的安装、索引、导入和骨架的生成
xunsearch 是一个高性能、全功能的全文检索解决方案。 旨在帮助一般开发者针对既有的海量数据,快速而方便地建立自己的全文搜索引擎。
今天折腾itsns.net.cn 集成 XunSearch 全文搜索引擎,这里记录一下笔记本。
XunSearch 介绍:
Xunsearch 是一个高性能、全功能的全文检索解决方案。 旨在帮助一般开发者针对既有的海量数据,快速而方便地建立自己的全文搜索引擎。 采用结构化分层设计,包含后端服务、前端开发包两大部分,层次清晰而不交叉。 其中后端是采用 C/C++ 编写的守护进程,而前端采用最为流行的脚本语言 PHP ,对于 web 搜索项目更为方便。 具体参见架构设计。并且全面开源,并使用最流行的开源许可协议 GPL 发布。您可以免费获取本项目的全部源代码, 自由的使用它,并在许可条件下修改和再分发。( XunSearch 下载地址 )
XunSearch 布署架构:
Xunsearch 分为后端服务和前端开发包两大部分,这两个部分允许部署在不同服务器中。后端是采用 C/C++ 开发的守护进程,包括索引服务器(xs-indexd)、搜索服务器(xs-searchd)。 索引服务器用于集中处理索引变动,并自动调用工具程序优化和更新数据库;搜索服务器 借鉴了 nginx 的作法,使用进程、线程混合工作模式处理高并发的搜索请求。
==============================
| Your Search Application |
==============================
/\ /\
................ /||\ ............ /||\ ....................
: || || :
: +-----------------------------+ :
: | [PHP] | other lang (TODO) | :
: |-----------------------------| :
: | SDK: (xunsearch devkit) | :
: +-----------------------------+ :
: / \ :
: / \ :
: +-----------------+ +-------------------+ :
: | Index-server | | Search-server | :
: |-----------------| |-------------------| :
: | xs-indexd | | xs-searchd | :
: | xs-import | | 1*master | :
: | xs-logging | | N*worker(M*thread)| :
: +-----------------+ +-------------------+ :
: | | :
: | | :
: +-----------------------------+ :
: | Xapian-core + scws | :
: +-----------------------------+ :
: | | | :
: +------------+ +--------+ +---------------+ :
: | Local Disk | | Memory | | Remote socket | :
: +------------+ +--------+ +---------------+ :
: :
...................... Xun Search ..........................
开始安装工作:
首先交代一下基础环境
系统:centos 7
xunsearch版本:1.4.9
PHP版本:7.1
php、mysql和apache的安装和启动我这里就不说了,直接说xunsearch
1.安装基础工具和库
yum -y install make gcc gcc-c++ libtool autoconf automake zlib-devel
2.下载xunsearch
切换到/usr/local/src目录,这是我的个人喜好,你也可以到其他目录下载
# cd /usr/local/src
# wget -c -t 1 http://www.xunsearch.com/download/xunsearch-full-latest.tar.bz2
解压文件
# tar -xjf xunsearch-full-latest.tar.bz2
切换到解压的目录
# cd xunsearch-full-1.4.9/
3.运行安装脚本
# sh setup.sh
中途会让你选择安装目录,他默认目录在/usr/local/xunsearch中,如果不需要更改,可以直接按enter键,然后输入y即可
选择完目录,就等待完成安装即可
安装完成后会提示如下信息:
+=================================================+
| Installation completed successfully, Thanks you |
| 安装成功,感谢选择和使用 xunsearch |
+-------------------------------------------------+
| 说明和注意事项: |
| 1. 开启/重新开启 xunsearch 服务程序,命令如下: |
| /usr/local/xunsearch/bin/xs-ctl.sh restart
| 强烈建议将此命令写入服务器开机脚本中 |
||
| 2. 所有的索引数据将被保存在下面这个目录中: |
| /usr/local/xunsearch/data
| 如需要转移到其它目录,请使用软链接。 |
||
| 3. 您现在就可以在我们提供的开发包(SDK)基础上 |
| 开发您自己的搜索了。 |
| 目前只支持 PHP 语言,参见下面文档: |
| /usr/local/xunsearch/sdk/php/README
+=================================================+
4、启动xunsearch服务
出于性能和多数需求考虑 xunsearch 服务端和 SDK API 通讯时没有加密和验证处理, 并且默认情况 xs-ctl.sh 启动的服务程序是绑定并监听在 127.0.0.1 上。如果您的 SDK 调用和 xunsearch 服务端不在同一服务器,请使用 -b inet 方式启动脚本, 并注意借助类似 iptables 的防火墙来控制 xunsearch 的 8383/8384 两个端口的访问权限。 启动脚本用法举例如下,以下均为合法使用方式:
/usr/local/xunsearch/bin/xs-ctl.sh -b local start // 监听在本地回环地址 127.0.0.1 上
/usr/local/xunsearch/bin/xs-ctl.sh -b inet start // 监听在所有本地 IP 地址上
/usr/local/xunsearch/bin/xs-ctl.sh -b 10.10.58.100 start // 监听在指定 IP 上
/usr/local/xunsearch/bin/xs-ctl.sh -b unix start // 分别监听在 tmp/indexd.sock 和 tmp/searchd.sock
5、查看xunsearch 运行情况
[root@xunsearch ~]# netstat -anlpt #执行查看端口命令
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 10.10.58.100:8383 0.0.0.0:* LISTEN 1098/xs-indexd: ser
tcp 0 0 10.10.58.100:8384 0.0.0.0:* LISTEN 1270/xs-searchd: ma
[root@xunsearch ~]#
1.创建项目配置:
官方的配置教程:http://www.xunsearch.com/doc/php/guide/ini.first
官方的配置辅助工具:http://www.xunsearch.com/tools/iniconfig
我这里的配置如下:
project.name = blog
server.index = 8383
server.search = 8384
[cid]
type = id
[title]
type = title
[text]
type = body
我的配置的几点说明:
(1).配置内容存放在php-sdk/php/app/blog.ini中
(2).配置的项目名为blog
(3).cid字段是主键、title字段是我的文章标题、text字段是我的文章内容,这些东西根据你的实际情况你们都可以该,而且字段数可多可少,但必须要有个主键字段
2.建立索引,这部分是用xunsearch自带的工具为原有的数据创建索引,如果原来没有数据,创建索引也没多少意义
执行创建索引命令格式:
util/Indexer.php --rebuild --source=mysql://你的数据库用户名:你的数据库密码@你的数据库IP/你的数据库名 --sql="你要执行的SQL语句" --filter=debug --project=你的项目名 >日志文件名
切换到sdk目录
cd /usr/local/xunsearch/sdk/php
我们来为我们的例子创建索引
util/Indexer.php --rebuild --source=mysql://root:@localhost/our --sql="SELECT cid,title,text FROM test" --filter=debug --project=blog >log.txt
说明:我是在本机装的,用的是root用户,无密码,our数据库,test数据表,日志写到当前目录下的log.txt文件内
以下部分是生成搜索骨架
如果你当前在/usr/local/xunsearch/sdk/php目录下就可以直接执行生成骨架命令,如果不在,那现切换到该目录下,切换命令:
cd /usr/local/xunsearch/sdk/php
生成骨架命令格式:
util/SearchSkel.php -p 项目名 -o 生成的目录
我们生成一下我们的例子的骨架:
util/SearchSkel.php -p blog -o /var/www/html
命令执行完会在/var/www/html目录下生成一个blog文件夹
可以通过 http://localhost/blog/search.php 访问一下你的骨架搜索文件。
如果你想把生成的骨架文件移动到其它目录也是可以的
接下来你做的就是进行融合到你的代码里吧