Sphinx Linux 下安装过程

  之前记录过一篇Sphinx在Windows上的安装步骤,这篇当然就是Linux系统的安装步骤啦

1. 下载sphinx包
下载的是当前最新版3.1.1,我将压缩包存在了/usr/local/src/目录下
wget -q http://sphinxsearch.com/files/sphinx-3.1.1-612d99f-linux-amd64.tar.gz 下载时间可能比较长需要耐心等待一会

压缩包名称

2. 解压
tar zxf sphinx-3.1.1-612d99f-linux-amd64.tar.gz解压
mv sphinx-3.1.1 sphinx 重命名一下,方便操作吧
cd sphinx 进入看下目录列表,其中var是需要后面创建的,请继续往下看
解压后的目录

3. 编辑配置文件
配置文件在etc目录下,有两个配置文件示例,其中sphinx.conf是完整版的配置项,并且有英文注释,有兴趣的可以了解一下,我们这里使用下面的sphinx.conf.dist简洁版
复制一份sphinx.conf.distbin目录下,重命名为sphinx.conf
vi sphinx.conf 打开编辑配置文件,这里我直接贴出我自己的配置内容,可以正常跑起来的,关于其他配置项可以看我的另外一篇Sphinx 配置文件sphinx.conf配置项全解析

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48

//数据源配置,也就是数据来源
source item
{
type = mysql
sql_host = HOST //数据库
sql_user = USER //用户名
sql_pass = PASS //数据库密码
sql_db = poster 数据库名称
sql_port = 3306 # optional, default is 3306
sql_query_pre = SET NAMES utf8
sql_query = \
SELECT id,name,UNIX_TIMESTAMP(ctime) \
FROM item
sql_attr_timestamp = ctime
}

//索引配置
index item
{
source = item //数据源
path = /usr/local/src/sphinx/var/data 索引存放目录
min_word_len = 1
ngram_len = 1
ngram_chars = U+3000..U+2FA1F
}


indexer
{
mem_limit = 128M
}

//搜索服务
searchd
{
listen = 9312
listen = 9306:mysql41
log = /usr/local/src/sphinx/var/log/searchd.log
query_log = /usr/local/src/sphinx/var/log/query.log
read_timeout = 5
max_children = 30
pid_file = /usr/local/src/sphinx/var/log/searchd.pid
seamless_rotate = 1
preopen_indexes = 1
unlink_old = 1
binlog_path = /usr/local/src/sphinx/var/data
}

配置文件中需要配置几个目录.分别是log,query_log,pid_file,binlog_path,我们回到sphinx下,新建一个目录var,然后进入再新建一个data目录和一个log目录
mkdir var
cd var
mkdir data
mkdir log
如图:
var目录

image.png

  1. 建立索引
    首先进入到bin目录下,执行下面的指令
    ./indexer -c sphinx.conf item item为刚才在配置文件中建立的索引名称

这里有个大坑,耽误了好久时间,我用的是ubuntu的系统,当我在执行./indexer -c sphinx.conf item时,出现了一个错误:sql_connect: failed to load libmysqlclient (or libmariadb),加载libmysqlclient失败,然后我在/usr/lib/x86_64-linux-gnu/目录下发现了我的libmysqlclient,并不是没有安装的
libmysqlclient
然后我通过google试着找出问题的答案,然而只有两个相关结果,解决方式是建立软链接,并且将libmysqlclient所在的目录加入到环境变量,我照做了之后发现问题并没有顺利解决,最后,我试着下载所有的依赖
apt-get install libmysqlclient18 libmysqlclient-dev libmysqlcppconn7 libmysqlcppconn-dev
等待完成,然后忽略error,执行
apt-get update
等待结束后,再执行建立索引命令,解决了这个问题

5. 开启搜索服务
./searchd