网上配置文档众多,但是对着他们的文档来做老是出问题,于是花了点时间研究了一下,写成总结,方便以后查阅。也希望学习sphinx的朋友能少走弯路。Coreseek的安装请参考:http://blog.chinaunix.net/uid-20639775-id-3261834.html

一、sphinx的配置

  1. sphinx配置文件结构介绍

Sphinx的配置文件结构如下:

Source 源名称1{
#添加数据源,这里会设置一些连接数据库的参数比如数据库的IP、用户名、密码等
#设置sql_query、设置sql_query_pre、设置sql_query_range等后面会结合例子做详细介绍
……
}
Index 索引名称1{
Source=源名称1
#设置全文索引
……
}
Indexer{
#设置Indexer程序配置选项,如内存限制等
……
}
Searchd{
#设置Searchd守护进程本身的一些参数
……
}

Source和Index都可以配置多个。

  1. spinx配置案例详细解释

接下来就来针对一个配置案例来做详细的配置介绍:

#定义一个数据源
source search_main
{
#定义数据库类型
type = mysql
#定义数据库的IP或者计算机名
sql_host = localhost
#定义连接数据库的帐号
sql_user = root
#定义链接数据库的密码
sql_pass = test123
#定义数据库名称
sql_db = test
#定义连接数据库后取数据之前执行的SQL语句
sql_query_pre = SET NAMES utf8
sql_query_pre = SET SESSION query_cache_type=OFF
#创建一个sph_counter用于增量索引
sql_query_pre = CREATE TABLE IF NOT EXISTS sph_counter \
( counter_id INTEGER PRIMARY KEY NOT NULL,max_doc_id INTEGER NOT NULL)
#取数据之前将表的最大id记录到sph_counter表中
sql_query_pre = REPLACE INTO sph_counter SELECT , MAX(searchid) FROM v9_search
#定义取数据的SQL,第一列ID列必须为唯一的正整数值
sql_query = SELECT searchid,typeid,id,adddate,data FROM v9_search where \
searchid<( SELECT max_doc_id FROM sph_counter WHERE counter_id= ) \
and searchid>=$start AND searchid<=$end
# sql_attr_uint和sql_attr_timestamp用于定义用于api过滤或者排序,写多行制定多列
sql_attr_uint = typeid
sql_attr_uint = id
sql_attr_timestamp = adddate
#分区查询设置
sql_query_range = SELECT MIN(searchid),MAX(searchid) FROM v9_search
#分区查询的步长
sql_range_step =
#设置分区查询的时间间隔
sql_ranged_throttle =
#用于CLI的调试
sql_query_info = SELECT * FROM v9_search WHERE searchid=$id
}
#定义一个增量的源
source search_main_delta : search_main
{
sql_query_pre = set names utf8
#增量源只查询上次主索引生成后新增加的数据
#如果新增加的searchid比主索引建立时的searchid还小那么会漏掉
sql_query = SELECT searchid,typeid,id,adddate,data FROM v9_search where \
searchid>( SELECT max_doc_id FROM sph_counter WHERE counter_id= ) \
and searchid>=$start AND searchid<=$end
sql_query_range = SELECT MIN(searchid),MAX(searchid) FROM v9_search where \
searchid>( SELECT max_doc_id FROM sph_counter WHERE counter_id= )
} #定义一个index_search_main索引
index index_search_main
{
#设置索引的源
source = search_main
#设置生成的索引存放路径
path = /usr/local/coreseek/var/data/index_search_main
#定义文档信息的存储模式,extern表示文档信息和文档id分开存储
docinfo = extern
#设置已缓存数据的内存锁定,为0表示不锁定
mlock =
#设置词形处理器列表,设置为none表示不使用任何词形处理器
morphology = none
#定义最小索引词的长度
min_word_len =
#设置字符集编码类型,我这里采用的utf8编码和数据库的一致
charset_type = zh_cn.utf-
#指定分词读取词典文件的位置
charset_dictpath = /usr/local/mmseg3/etc
#不被搜索的词文件里表。
stopwords = /usr/local/coreseek/var/data/stopwords.txt
#定义是否从输入全文数据中取出HTML标记
html_strip =
}
#定义增量索引
index index_search_main_delta : index_search_main
{
source = search_main_delta
path = /usr/local/coreseek/var/data/index_search_main_delta
} #定义indexer配置选项
indexer
{
#定义生成索引过程使用索引的限制
mem_limit = 512M
} #定义searchd守护进程的相关选项
searchd
{
#定义监听的IP和端口
#listen = 127.0.0.1
#listen = 172.16.88.100:
listen =
listen = /var/run/searchd.sock
#定义log的位置
log = /usr/local/coreseek/var/log/searchd.log
#定义查询log的位置
query_log = /usr/local/coreseek/var/log/query.log
#定义网络客户端请求的读超时时间
read_timeout =
#定义子进程的最大数量
max_children =
#设置searchd进程pid文件名
pid_file = /usr/local/coreseek/var/log/searchd.pid
#定义守护进程在内存中为每个索引所保持并返回给客户端的匹配数目的最大值
max_matches =
#启用无缝seamless轮转,防止searchd轮转在需要预取大量数据的索引时停止响应
#也就是说在任何时刻查询都可用,或者使用旧索引,或者使用新索引
seamless_rotate =
#配置在启动时强制重新打开所有索引文件
preopen_indexes =
#设置索引轮转成功以后删除以.old为扩展名的索引拷贝
unlink_old =
# MVA更新池大小,这个参数不太明白
mva_updates_pool = 1M
#最大允许的包大小
max_packet_size = 32M
#最大允许的过滤器数
max_filters =
#每个过滤器最大允许的值的个数
max_filter_values =
}

二、sphinx的管理

  1. 生成Sphinx中文分词词库(新版本的中文分词库已经生成在了/usr/local/mmseg3/etc目录下)

    cd /usr/local/mmseg3/etc
    /usr/local/mmseg3/bin/mmseg -u thesaurus.txt
    mv thesaurus.txt.uni uni.lib
  2. 生成Sphinx中文同义词库#同义词库是说比如你搜索深圳的时候,含有深圳湾等字的也会被搜索出来

    #同义词库是说比如你搜索深圳的时候,含有深圳湾等字的也会被搜索出来

  3. 生成全部索引
    /usr/local/coreseek/bin/indexer --config /usr/local/coreseek/etc/sphinx.conf –all

    若此时searchd守护进程已经启动,那么需要加上—rotate参数:

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

    4.启动searchd守护进程

    /usr/local/coreseek/bin/searchd --config /usr/local/coreseek/etc/sphinx.conf

    5.

    生成主索引

    写成shell脚本,添加到crontab任务,设置成每天凌晨1点的时候重建主索引

    /usr/local/coreseek/bin/indexer --config /usr/local/coreseek/etc/sphinx.conf --rotate index_search_main

    6.

    生成增量索引

    写成shell脚本,添加到crontab任务,设置成每10分钟运行一次

    /usr/local/coreseek/bin/indexer --config /usr/local/coreseek/etc/sphinx.conf --rotate index_search_main_delta

    7.

    增量索引和主索引的合并

    写成shell脚本,添加到计划任务,每15分钟跑一次

    /usr/local/coreseek/bin/indexer --config /usr/local/coreseek/etc/sphinx.conf --merge index_search_main index_search_main_delta --rotate

    8.

    1. 使用search命令在命令行对索引进行检索

    /usr/local/coreseek/bin/search --config /usr/local/coreseek/etc/sphinx.conf  游戏

    三、参考文章链接:

    http://baobeituping.iteye.com/blog/870354

    http://www.sphinxsearch.org/sphinx-tutorial

    http://blog.s135.com/post/360/

    http://youngerblue.iteye.com/blog/1513140

     
     

sphinx的配置和管理的更多相关文章

  1. sphinx的配置和管理.No2

    网上配置文档众多,但是对着他们的文档来做老是出问题,于是花了点时间研究了一下,写成总结,方便以后查阅.也希望学习sphinx的朋友能少走弯路.Coreseek的安装请参考:http://blog.ch ...

  2. Sphinx安装配置应用

    Sphinx 是由俄罗斯人Andrew Aksyonoff开发的一个全文搜索引擎.意图为其他应用提供高速.地空间占用.高结果相关度的全文搜索功能.Sphinx可以非常容易的与SQL数据库和脚本语言集成 ...

  3. Azure Redis Cache (4) 配置和管理Redis Cache

    <Windows Azure Platform 系列文章目录> 我们在创建完Azure Redis Cache后,经常需要切换Redis Cache的服务级别,这里我简单介绍一下使用Azu ...

  4. mysql多实例的配置和管理

    原文地址:mysql多实例的配置和管理 作者:飞鸿无痕 多实例mysql的安装和管理 mysql的多实例有两种方式可以实现,两种方式各有利弊.第一种是使用多个配置文件启动不同的进程来实现多实例,这种方 ...

  5. 分享:linux下apache服务器的配置和管理

    linux下apache服务器的配置和管理. 一.两个重要目录: Apache有两个重要的目录:1.配置目录/etc/httpd/conf:2.文档目录/var/www: 二.两种配置模式: Apac ...

  6. 关于spring3中No Session found for current thread!and Transaction的配置和管理(转)

    今天我是特别的郁闷,本来项目做到一半,以前都好好的,结果下午就出现问题,苦逼的到现在才解决.它出现问题的时候都一声不坑, ,(天啦,现在才发现CSDN啥时候把QQ表情给整过来了)就在注册用户的时候,咦 ...

  7. 增加配置Apache2 管理 SVN 访问权限

    继续之前的 文章里的配置 配置Apache2 管理 SVN 一.修改配置/etc/httpd/conf.d/ subversion.conf <Location /svn/> DAV sv ...

  8. RabbitMQ_安装配置与管理

    RabbitMQ 安装配置与管理 安装 安装erlang虚拟机 Rabbitmq基于erlang语言开发,所有需要安装erlang虚拟机 #wget  http://www.erlang.org/do ...

  9. Spring事物管理--相关要点及配置事物管理器

    事务的四大特征 1.原子性:一个事务中所有对数据库的操作是一个不可分割的操作序列,要么全做要么全不做 2.一致性:数据不会因为事务的执行而遭到破坏 3.隔离性:一个事物的执行,不受其他事务的干扰,即并 ...

随机推荐

  1. poj 1502

    MPI Maelstrom Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 12087   Accepted: 7464 De ...

  2. 循环链表的C风格实现(单向)

    头文件: #ifndef _CIRCLELIST_H_ #define _CIRCLELIST_H_ typedef void CircleList; // typedef struct _tag_C ...

  3. Python第三方库之openpyxl(7)

    Python第三方库之openpyxl(7) 散点图 散点或xy图表类似于一些折线图.主要的区别在于,一个系列的值被绘制在另一个值上.当值未排序时,这是有用的. from openpyxl impor ...

  4. Dell Omsa在Linux服务器上安装部署

    前言 本页详述了在一台Linux(RHEL6.4 x86_64)服务器上部署安装OMSA的通用做法,包括OMSA软件的获取方法和安装步骤. 演示环境: PowerEdge R620, RHEL 6.4 ...

  5. windows和ubuntu14.04双系统设置默认启动项

    首先开机或者重启,在启动项选择菜单处记住win7对应的序号,从上至下的序号从0开始计数,我的win7系统选项处于第5个,那么序号就应该是4,记住后,打开ubuntu系统. 2 按下Ctrl+alt+T ...

  6. 【UML】UML图的发展和体系结构

    导读:上次给徒弟验收UML的项目,在验收的时候提出了很多问题,徒弟也暴露了一些问题.说好我们一起总结成长的,由于最近的事儿,比较忙,所以现在进行总结.上次会议中说到要用门卫思维去总结这部分的知识点,用 ...

  7. POJ-1743 Musical Theme,后缀数组+二分!

                                                        Musical Theme 人生第一道后缀数组的题,采用大众化思想姿势极其猥琐. 题意:给你n个 ...

  8. Python之注册表增删改查(干货)

    在Windows平台下,对注册表的增删改查的需求比较多,微软提供了很多用于访问,修改注册表等的API,我们可以使用诸如bat,或者C++等各种方式去访问修改注册表.无所不能的python下如何完成这些 ...

  9. 【Luogu】P2894酒店Hotel(线段树)

    题目链接 我好蒻啊   题题看题解 线段树维护从左端点开始的最长连续空房.右端点结束的最长连续空房.整段区间的最长连续空房.区间非空房的个数. http://blog.csdn.net/qq_3955 ...

  10. 小Z的袜子(bzoj 2038)

    Description 作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿.终于有一天,小Z再也无法忍受这恼人的找袜子过程,于是他决定听天由命……具体来说,小Z把这N只袜 ...