高性能、全功能的全文检索解决方案-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  访问一下你的骨架搜索文件。

如果你想把生成的骨架文件移动到其它目录也是可以的

 

接下来你做的就是进行融合到你的代码里吧