CoreSeek+sphinx环境搭建[转]

CoreSeek环境搭建

编辑

1.   Sphinx简介

编辑

Sphinx是一个基于SQL的全文检索引擎,可以结合MySQL,PostgreSQL做全文搜索,它可以提供比数据库本身更专业的搜索功能,使得应用程序更容易实现专业化的全文检索。Sphinx特别为一些脚本语言设计搜索API接口,如PHP,Python,Perl,Ruby等,同时为MySQL也设计了一个存储引擎插件。

Sphinx 单一索引最大可包含1亿条记录,在1千万条记录情况下的查询速度为0.x秒(毫秒级)。Sphinx创建索引的速度为:创建100万条记录的索引只需 3~4分钟,创建1000万条记录的索引可以在50分钟内完成,而只包含最新10万条记录的增量索引,重建一次只需几十秒。

2.   CoreSeek简介

编辑

Sphinx只支持英文的全文检索,但是对于中文却并不支持,所以有了CoreSeek。

人们选择基于Sphinx、结合MMSeg(中文分词器)开发出CoreSeek中文搜索引擎。

下面我们将详细介绍CoreSeek的环境搭建。

3.   CoreSeek安装测试配置

编辑

软件版本:coreseek-4.1-beta 

mmseg-3.2.14

3.1     安装前环境准备

3.1.1 yum安装编译环境和mysql开发包

# yum install   libtool gcc-c++

# yum install   mysql-devel libxml2-devel expat-devel

 

3.1.2 编译安装autoconf(大部分机器已经安装,可以跳过)

autoconf automake手工编译安装(因aclocal.m4文件由autoconf 2.64生成)。

# tar xzvf autoconf-2.64.tar.gz

# ./configure

# make

# make install

 

3.1.3 编译安装automake(大部分机器已经安装,可以跳过)

# tar xzvf automake-1.11.2.tar.gz

# cd automake-1.11.2

# ./configure

# make

# make install

 

3.2     安装CoreSeek

3.2.1 安装mmseg

# wget http://www.coreseek.cn/uploads/csft/4.0/coreseek-4.1-beta.tar.gz #下载CoreSeek

# tar -zxvf coreseek-4.1-beta.tar.gz

# cd coreseek-4.1-beta

# cd mmseg-3.2.14

# ./bootstrap    #输出的warning信息可以忽略,如果出现error则需要解决

# ./configure --prefix=/usr/local/mmseg

# make

# make install

 

3.2.2 安装coreseek

# cd csft-4.1

检查系统环境

# sh buildconf.sh    #输出的warning信息可以忽略,如果出现error则需要解决

配置时要加上mysql数据源的支持

# ./configure --prefix=/usr/local/coreseek  --without-unixodbc --with-mmseg --with-mmseg-includes=/usr/local/mmseg/include/mmseg/ --with-mmseg-libs=/usr/local/mmseg/lib/ --with-mysql

# make

# make install

# cd ..

 

3.3     mmseg中文分词测试

# cd testpack

此时应该正确显示中文,需要预先设置好字符集为zh_CN.UTF-8,确保正确显示中文。

# cat var/test/test.xml

中文分词测试

# /usr/local/mmseg/bin/mmseg -d /usr/local/mmseg/etc/ /root/coreseek/mmseg-3.2.14/src/t1.txt

# /usr/local/mmseg/bin/mmseg -d /usr/local/mmseg/etc/ /root/coreseek/testpack/var/test/test.xml

 

分词结果:

 

3.4     CoreSeek中文全文检索测试

3.4.1 修改testpack/etc/csft.conf配置文件(红色部分为修改部分)

#XML数据源配置,详情请查看:http://www.coreseek.cn/products-install/datasource/

 

#源定义

source xml

{

    type                    = xmlpipe2

    xmlpipe_command = cat /root/sphinx/coreseek/testpack/var/test/test.xml

    #请修改为实际使用的绝对路径,例如:cat /usr/local/coreseek/var/...

}

 

#index定义

index xml

{

    source            = xml            #对应的source名称

    path            = /root/sphinx/coreseek/testpack/var/data/xml #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/...

    docinfo            = extern

    mlock            = 0

    morphology        = none

    min_word_len        = 1

    html_strip                = 0

 

    #中文分词配置,详情请查看:http://www.coreseek.cn/products-install/coreseek_mmseg/

    charset_dictpath = /usr/local/mmseg/etc/ #BSD、Linux环境下设置,/符号结尾

    #charset_dictpath = etc/                             #Windows环境下设置,/符号结尾,最好给出绝对路径,例如:C:/usr/local/coreseek/etc/...

    charset_type        = zh_cn.utf-8

}

 

#全局index定义

indexer

{

    mem_limit            = 128M

}

 

#searchd服务定义

searchd

{

    listen                  =   9312

    read_timeout        = 5

    max_children        = 30

    max_matches            = 1000

    seamless_rotate        = 0

    preopen_indexes        = 0

    unlink_old            = 1

    pid_file = var/log/searchd_xml.pid  #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/...

    log = var/log/searchd_xml.log        #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/...

    query_log = var/log/query_xml.log #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/...

    binlog_path =                                #关闭binlog日志

}

 

3.4.2 建索引

# /usr/local/coreseek/bin/indexer -c /root/sphinx/coreseek/testpack/etc/csft.conf --all

 

3.4.3 测试搜索

# /usr/local/coreseek/bin/search -c /root/sphinx/coreseek/testpack/etc/csft.conf -a 百度搜索

 

3.5     配置测试MySQL数据源搜索

3.5.1 准备MySQL环境

登录MySQL环境,导入测试数据

source /root/coreseek/testpack/var/test/documents.sql

3.5.2 修改配置文件(红色部分为需要修改项)

#MySQL数据源配置,详情请查看:http://www.coreseek.cn/products-install/mysql/

#请先将var/test/documents.sql导入数据库,并配置好以下的MySQL用户密码数据库

 

#源定义

source mysql

{

    type                    = mysql

 

  sql_host                = 172.172.177.9

    sql_user                = wrh

    sql_pass                = haiziwang@wrh

    sql_db                    = test

    sql_port                = 3307

   sql_query_pre            = SET NAMES utf8

 

    sql_query                = SELECT id, group_id, UNIX_TIMESTAMP(date_added) AS date_added, title, content FROM documents

                                                              #sql_query第一列id需为整数

                                                              #title、content作为字符串/文本字段,被全文索引

    sql_attr_uint            = group_id           #从SQL读取到的值必须为整数

    sql_attr_timestamp        = date_added #从SQL读取到的值必须为整数,作为时间属性

 

    sql_query_info_pre      = SET NAMES utf8                                        #命令行查询时,设置正确的字符集

    sql_query_info            = SELECT * FROM documents WHERE id=$id #命令行查询时,从数据库读取原始数据信息

}

 

#index定义

index mysql

{

    source            = mysql             #对应的source名称

    path            = /root/sphinx/coreseek/testpack/var/data/mysql #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/...

    docinfo            = extern

    mlock            = 0

    morphology        = none

    min_word_len        = 1

    html_strip                = 0

 

    #中文分词配置,详情请查看:http://www.coreseek.cn/products-install/coreseek_mmseg/

    charset_dictpath = /usr/local/mmseg/etc/ #BSD、Linux环境下设置,/符号结尾

    #charset_dictpath = etc/                             #Windows环境下设置,/符号结尾,最好给出绝对路径,例如:C:/usr/local/coreseek/etc/...

    charset_type        = zh_cn.utf-8

}

 

#全局index定义

indexer

{

    mem_limit            = 128M

}

 

#searchd服务定义

searchd

{

    listen                  =   9312

    read_timeout        = 5

    max_children        = 30

    max_matches            = 1000

    seamless_rotate        = 0

    preopen_indexes        = 0

    unlink_old            = 1

    pid_file = /usr/local/coreseek/var/log/searchd_mysql.pid  #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/...

    log = /usr/local/coreseek/var/log/searchd_mysql.log        #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/...

    query_log = /usr/local/coreseek/var/log/query_mysql.log #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/...

    binlog_path =                                #关闭binlog日志

}

 

3.5.3 建索引

# /usr/local/coreseek/bin/indexer -c /root/sphinx/coreseek/testpack/etc/csft_mysql.conf --all --rotate

3.5.4 启动搜索引擎

# /usr/local/coreseek/bin/searchd -c /root/sphinx/coreseek/testpack/etc/csft_mysql.conf

# /usr/local/coreseek/bin/searchd -c /root/sphinx/coreseek/testpack/etc/csft_mysql.conf --stop

3.5.6 测试搜索引擎

# cd /root/sphinx/coreseek/testpack/api

# php test.php -h localhost 百度搜索

 

你可能感兴趣的:(sphinx)