安装Sphinx全文检索服务器

Sphinx默认不支持中文索引及检索, 以前用Coreseek的补丁来解决,目前Coreseek 不单独提供补丁文件,而基于sphinx开发了Coreseek 全文检索服务器,Coreseek应该是现在用的最多的sphinx中文全文检索,它提供了为Sphinx设计的中文分词包LibMMSeg包含mmseg中文分词,其实coreseek-3.2.14.tar.gz中已经包含了sphinx,前面安装SphinxSE时也可以使用这个压缩包里的mysqlse。

我们来看一下的安装过程:

安装autoconf

tar zxvf autoconf-2.64.tar.gz

cd autoconf-2.64

./configure --prefix=/usr

make

make install

cd ..

安装Coreseek

tar zxvf coreseek-3.2.14.tar.gz

cd coreseek-3.2.14

cd mmseg-3.2.14/

./bootstrap

./configure --prefix=/usr/local/mmseg3

make

make install

cd ../csft-3.2.14/

sh buildconf.sh

./configure --prefix=/usr/local/coreseek --without-python --without-unixodbc --with-mmseg --with-mmseg-includes=/usr/local/mmseg3/include/mmseg/ --with-mmseg-libs=/usr/local/mmseg3/lib/ --with-mysql --host=arm

make

make install

cd /usr/local/coreseek/etc

进入配置目录通过命令ls可以看到3个文件

example.sql  sphinx.conf.dist  sphinx-min.conf.dist

其中example.sql是示例sql脚本我们将其导入到数据库中的test数据库中作为测试数据(会创建两张表 documents和tags)

vi sphinx.conf

输入以下内容

source src1

{

type = mysql

sql_host = localhost

sql_user = root

sql_pass =12345678

sql_db = test

sql_port = 3306 # optional, default is 3306

sql_sock                              = /tmp/mysql.sock

sql_query_pre = SET NAMES utf8

sql_query = \

SELECT id, group_id, UNIX_TIMESTAMP(date_added) AS date_added, title, content \

FROM documents

sql_attr_uint = group_id

sql_attr_timestamp = date_added

sql_query_info = SELECT * FROM documents WHERE id=$id

}

index test1

{

source = src1

path = /usr/local/coreseek/var/data/test1

docinfo = extern

charset_type = zh_cn.utf-8

mlock = 0

morphology = none

min_word_len = 1

html_strip = 0

charset_dictpath = /usr/local/mmseg3/etc/

ngram_len                    = 0

}

indexer

{

mem_limit = 32M

}

searchd

{

port = 9312

log = /usr/local/coreseek/var/log/searchd.log

query_log = /usr/local/coreseek/var/log/query.log

read_timeout = 5

max_children = 30

pid_file = /usr/local/coreseek/var/log/searchd.pid

max_matches = 1000

seamless_rotate = 1

preopen_indexes = 0

unlink_old = 1

}

说明:

代码段source src1{***} 代表数据源里面主要包含了数据库的配置信息,src1表示数据源名字,可以随便写。

代码段index test1{***} 代表为哪个数据源创建索引,与source *** 是成对出现的,其中的source参数的值必须是某一个数据源的名字。

其他参数可以查看手册,这里不再赘述。

生成索引

/usr/local/coreseek/bin/indexer -c /usr/local/coreseek/etc/sphinx.conf --all

#测试mmseg分词,coreseek搜索(需要预先设置好字符集为zh_CN.UTF-8,确保正确显示中文)

cd ../testpack/

cat var/test/test.xml         #此时应该正确显示中文

/usr/local/mmseg3/bin/mmseg -d /usr/local/mmseg3/etc var/test/test.xml

/usr/local/coreseek/bin/indexer -c etc/csft.conf --all  ——》/usr/local/coreseek/bin/indexer: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object file: No such file or directory

发现sphinx indexer依赖库ibmysqlclient.so.18找不到,通过编辑此文件来修复这个错误 /etc/ld.so.conf
vi /etc/ld.so.conf
将下面这句加到文件到尾部,并保存文件
/usr/local/mysql/lib
然后运行下面这个命令即可

ldconfig

在使用Sphinx服务时,检查到错误返回,类似: “failed to send client protocol version”.

什么原因,Google了一下,找到下面的web:

sphinxsearch returns “failed to send client protocol version”

提问者的疑难得到解决,原因是sphinx服务未正常启动.

可是,在我的使用中,sphinx服务是确实启动了的.那么可能就是客户端使用服务不正常了.因此先检查了服务进程,然后检查配置文件.找到原因所在,客户端代码中指定的服务端口与配置文件中的不一

其中参数--all表示生成所有索引

当然也可以是索引的名字例如:/usr/local/coreseek/bin/indexer -c /usr/local/coreseek/etc/sphinx.conf test1

执行后可以在/usr/local/coreseek/var/data目录中看到多出一些文件,是以索引名为文件名的不同的扩展名的文件

在不启动sphinx的情况下即可测试命令:

/usr/local/coreseek/bin/search -c /usr/local/coreseek/etc/sphinx.conf number

可以看到将内容中含有number数据的数据查询出来。

过滤查询

/usr/local/coreseek/bin/search -c /usr/local/coreseek/etc/sphinx.conf number --filter group_id 2

限定group_id 为2 返回一条记录

同样也可以测试中文(需将命令行终端编码调整为utf-8)

/usr/local/coreseek/bin/search -c /usr/local/coreseek/etc/sphinx.conf 研究生创业

可以看到我们输入的查询文字已经被拆分成了两个词,只是因为我们的测试数据中没有中文数据查询结果为空。我们插入几条新数据。

INSERT INTO `test`.`documents` (

`id` ,

`group_id` ,

`group_id2` ,

`date_added` ,

`title` ,

`content`

)

VALUES (

NULL , '2', '3', '2011-02-01 00:37:12', '研究生的故事', '研究生自主创业'

), (

NULL , '1', '1', '2011-01-28 00:38:22', '研究', '为了创业而研究生命科学'

);

遇到的问题:

1.安装mmseg时出现编译不通过的情况,yum install -y libtools

aclocal

libtoolize --force

automake --add-missing

autoconf

autoheader

make clean

make

makeinstall

2安装csft出现问题 更改config文件 define USE_LIBICONV 1 改为define USE_LIBICONV 0

安装完成

安装sphinx的更多相关文章

  1. CentOS6.5 安装Sphinx 配置MySQL数据源

      前提安装完mysql,并创建测试表和数据 DROP TABLE IF EXISTS `documents`; CREATE TABLE IF NOT EXISTS `documents` ( `i ...

  2. CentOS6.4 安装Sphinx 配置MySQL数据源

    前提安装完mysql,并创建测试表和数据 DROP TABLE IF EXISTS `documents`; CREATE TABLE IF NOT EXISTS `documents` ( `id` ...

  3. linux环境下安装sphinx中文支持分词搜索(coreseek+mmseg)

     linux环境下安装sphinx中文支持分词搜索(coreseek+mmseg) 2013-11-10 16:51:14 分类: 系统运维 为什么要写这篇文章? 答:通过常规的三大步(./confi ...

  4. centos 安装sphinx

    官网下载 :http://sphinxsearch.com/downloads/sphinx-2.2.10-release.tar.gz/thankyou.html 安装sphinx 解压 tar z ...

  5. linux 下安装 sphinx 服务器

    准备工作:安装需要的扩展文件 yum install make gcc g++ gcc-c++ libtool autoconf automake imake libxml2-devel expat- ...

  6. 0622通过插件的方式来热安装sphinx

    1.查看当前运行的mysql版本 mysqldump --version 我的Mysql版本5.5.32 2.下载对应的mysql 5.5.32 (版本号一定不能错,要不安装不成功)源码,并解压 下载 ...

  7. php 安装 sphinx

    我的环境是 ubuntun ,所以 第一步 sudo apt-get install pear 第二,根据 php.net 里说的,去下载 sphinx. 第三,pecl install sphinx ...

  8. 安装sphinx和coreseek

    sphinx简介 Sphinx是由俄罗斯人Andrew Aksyonoff开发的一个全文检索引擎.意图为其他应用提供高速.低空间占用.高结果 相关度的全文搜索功能.Sphinx可以非常容易的与SQL数 ...

  9. linux下安装sphinx

    1.下载sphinx源码包 上面截图的这个网址   复制链接地址   在putty终端使用:wget http://sphinxsearch.com/files/sphinx-2.3.1-beta.t ...

随机推荐

  1. Python学习笔记06

      源代码文件第一行添加:#coding:utf-8,这样就可以避免了 或者:#-*- coding: UTF-8 -*-   dict:实际就是哈希表,其键只能是不可变类型,如string,bool ...

  2. POJ 1222 (开关问题+高斯消元法)

    题目链接: http://poj.org/problem?id=1222 题目大意:一堆开关,或开或关.每个开关按下后,周围4个方向开关反转.问使最后所有开关都关闭的,开关按法.0表示不按,1表示按. ...

  3. ACM BUYING FEED

    BUYING FEED 时间限制:3000 ms  |  内存限制:65535 KB 难度:4   描述 Farmer John needs to travel to town to pick up ...

  4. javascript 时间操作

    javascript时间函数 javascript提供了Date对象来进行时间和日期的计算.Date对象有多种构造函数: 1.dateObj=new Date() //当前时间 2.dateObj=n ...

  5. java使用poi读取ppt文件和poi读取excel、word示例

    java使用poi读取ppt文件和poi读取excel.word示例 http://www.jb51.net/article/48092.htm

  6. Oracle中"行转列"的实现方式

    在报表的开发当中,难免会遇到行转列的问题. 以Oracle中scott的emp为例,统计各职位的人员在各部门的人数分布情况,就可以用"行转列": scott的emp的原始数据为: ...

  7. linux文件描述符数量的坑

    ulimit -n  查看 单进程或线程,可打开的最大文件描述符数 通过ulimit -n 10240 设置文件描述符数: (当前shell生效,这真是个坑啊) 永久生效:(需要重启系统,也是个坑,好 ...

  8. sql语句左右表连接理解

    一句话,左连接where只影响坐标,右连接where只影响右表

  9. 导入excle数据将excle数据插入到数据库

    实现功能是,用户可以直接导入对应数据,或者用户下载模板,填写数据,导入模板数据.easyui实现 前台页面 { text : '日清导入', iconCls : 'icon-print', handl ...

  10. 使用文件模拟ASM磁盘

    尽管Oracle缺省都是使用裸设备来创建ASM磁盘,但其实Oracle也允许使用普通文件来创建ASM磁盘, 当然这种方法最好只用在测试环境下或者学习环境下,不能用在生产环境下.之所以必须要用裸设备, ...