Sphinx-安装和配置

本例是在Linux下, 环境 CentOS6.5 + PHP5.6.8 + MySQL5.6.13 + Sphinx2.3.1-beta

官网下载对应环境的安装包, 按照官方文档指定步骤进行安装

  第一种方式是采用API调用, 我们可以使用PHP, Python, Perl, Ruby等编程语言的API函数进行查询, 这种方式不必重新编译MySQL, 模块间改动比较少, 相对灵活

  第二种需要重新编译MySQL, 将Sphinx以插件的方式编译到MySQL中去, 这种方式对程序改动比较少, 仅仅需要改动SQL语句即可, 但前提是你的MySQL版本必须在5.1以上

  Linux下源码安装:

    yum -y install make gcc g++ gcc-c++ libtool autoconf automake imake mysql-devel libxml2-devel expat-devel

    ./configure --prefix /usr/local/sphinx --with-mysql=/usr/local/mysql  --enable-id64

    make && make install

  安装完毕, 目录如下:

    bin: 可执行文件目录

      indexer 用来生成索引数据, 创建索引, 收集要被检索的数据

      searchd 后台进程, 使用 indexer 生成的数据做查询

    etc: 配置文件目录

    var: 索引等数据存放目录

配置, Sphinx默认使用 etc/sphinx.conf, 如果没有, 则拷贝sphinx.conf.dist一份到sphinx.conf:

#设置主数据源配置, 与增量数据源分开, 避免重复建立索引, 只为增量数据源建立索引即可
source src1
{
    type            = mysql     #数据库类型
    sql_host        = localhost
    sql_user        = root
    sql_pass        =
    sql_db            = test
    sql_port        = 3306    # optional, default is 3306
    sql_sock        = /tmp/mysqld.sock  #如果是Linux下需要开启, 指定sock文件
    sql_query_pre        = SET NAMES utf8    #预执行语句
    sql_query_pre       = SET SESSION query_cache_type=OFF  #关闭缓存
    sql_query        = \
        SELECT id, title, content FROM post #获取数据的SQL语句

    sql_query_info  = SELECT * FROM post WHERE id=$id   #必须要有 此处id与sql_query中的id键名相同
    
    #sql_attr_uint        = group_id  #对排序字段进行注释 原自带表中的字段
    #sql_attr_timestamp    = date_added    #对排序字段进行注释 原自带表中的字段
    
    sql_ranged_throttle    = 0
}
#src1主数据源的增量数据源, 继承主数据源
#source src1throttled : src1
#{
#    sql_ranged_throttle    = 100
#}
#建立主数据索引test1
index test1
{
    source            = src1  #索引的数据源
    path            = /usr/local/sphinx/var/data/test1 #索引文件所放目录
    docinfo            = extern
    dict            = keywords
    mlock            = 0
    morphology        = none
    min_word_len        = 1
    
    html_strip        = 0
    
    charset_type    = utf-8
    charset_table   = utf-8
}
#主数据索引test1的增量数据索引
#index test1stemmed : test1
#{
#    path            = /usr/local/sphinx/var/data/test1stemmed
#    morphology        = stem_en
#}
#建立主数据索引dist1
#index dist1
#{
##    type            = distributed
#    local            = test1
#    local            = test1stemmed
#    agent            = localhost:9313:remote1
#    agent            = localhost:9314:remote2,remote3
#    agent_connect_timeout    = 1000
#    agent_query_timeout        = 3000
#}
##建立主数据索引rt
#index rt
#{
#    type            = rt
#    path            = /usr/local/sphinx/var/data/rt
#    rt_field        = title
#    rt_field        = content
#    rt_attr_uint        = gid
#}
#索引器的配置, 主要用来设置索引器所占内存
indexer
{
    mem_limit        = 128M
}
#服务进程的配置
searchd
{
    listen            = 9312
    listen            = 9306:mysql41
    log            = /usr/local/sphinx/var/log/searchd.log
    query_log        = /usr/local/sphinx/var/log/query.log
    read_timeout        = 5
    client_timeout        = 300
    max_children        = 30
    persistent_connections_limit    = 30
    pid_file        = /usr/local/sphinx/var/log/searchd.pid
    seamless_rotate        = 1
    preopen_indexes        = 1
    unlink_old        = 1
    mva_updates_pool    = 1M
    max_packet_size        = 8M
    max_filters        = 256
    max_filter_values    = 4096
    max_batch_queries    = 32
    workers            = threads # for RT to work
    
}
common
{
}

a

posted on 2015-08-14 16:56  John_ABC  阅读(501)  评论(0编辑  收藏  举报

导航