安装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. Java 语言细节

    1.  if(x = 1) 为什么java不会因为这样的笔误代码犯错?  // meant x == 1 因为在C++中,整数0代表布尔值false,非0值相当于布尔值true,在Java中int与布 ...

  2. linux 安装vbox增强工具

    首先在虚拟机控制台点设备--------安装增强功能,这样会用虚拟光驱加载增强功能镜象. 然后打开终端,先转到root身份:=================su================= f ...

  3. 怎样测试TCP&UDP端口

    TCP端口大家都知道,比如80端口,可以使用 telnet ip 80,来验证端口是否正常监听,那UDP端口是否可以同样测试呢?详细如下: 下面我们来进行测试,123端口是服务器42.11.12.13 ...

  4. 20145304 Java第九周学习报告

    20145304<Java程序设计>第九周学习总结 教材学习内容总结 JDBC简介 JDBC全名Java DataBase Connectivity,是Java联机数据库的标准规范.定义了 ...

  5. Leetcode Binary Tree Inorder Traversal

    Given a binary tree, return the inorder traversal of its nodes' values. For example:Given binary tre ...

  6. Codeforces Round #210 (Div. 2) A. Levko and Table

    让对角线的元素为k就行 #include <iostream> using namespace std; int main() { int n,k; cin >> n > ...

  7. codeforces round #234B(DIV2) B Inna and New Matrix of Candies

    #include <iostream> #include <vector> #include <string> #include <algorithm> ...

  8. ACM: The Suspects-并查集-解题报告

    The Suspects Time Limit:1000MS Memory Limit:20000KB 64bit IO Format:%lld & %llu Description 严重急性 ...

  9. [ACM训练] DEV C++如何处理不能调试

    复试上机一定要用DEV C++,使用不熟练,出现一些问题,记录如下: 1.DEV C++ 不能调试 (1)tools->compiler option->settings:linker里设 ...

  10. 【BZOJ】2595: [Wc2008]游览计划

    题意 \(n * m\)的网格,如果\(a_{i, j} = 0\)则表示景点,否则表示这里的需要的志愿者人数.求一种安排志愿者的方案使得所有景点连通且志愿者最少. 分析 本题可以插头dp,然而有一个 ...