网上配置文档众多,但是对着他们的文档来做老是出问题,于是花了点时间研究了一下,写成总结,方便以后查阅。也希望学习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. LDAP学习小结【仅原理和基础篇】

    此篇文章花费了好几个晚上,大部分是软件翻译的英文文档,加上自己的理解所写,希望学习者能尊重每个人的努力. 我有句话想送给每个看我文章的人: 慢就是快,快就是慢!!! 另外更希望更多人能从认真从原理学习 ...

  2. hdu3594 Cactus

    仙人掌入门简单题. 先看一篇文档. #include <iostream> #include <cstring> #include <cstdio> using n ...

  3. 用Go编写的本地文件服务器

    本文来自网易云社区,转载务必请注明出处. 一.前言 一切问题的起源就是来自一个问题"为什么我打的jar包没有注解?",带着这个疑问查了一圈资料,原来问题主要是在没有将源码中的注释进 ...

  4. UIDatePicker 显示时间和打印时间不一样

    默认是时区为0,如下格式化一下就好啦 UIDatePicker *datePiker = [[UIDatePicker alloc] initWithFrame:CGRectMake(0, 100, ...

  5. linux下连接到远程主机,用图像界面(想在远程服务器上用cmake)

    1. 需要通过SSH -X username@ip登陆服务器后,再用图形界面,比如用cmake 2.直接用 SSH username@ip命令登陆服务器后,不能用cmake

  6. 九度oj 题目1354:和为S的连续正数序列

    题目描述: 小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100.但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数).没多久, ...

  7. 九度oj 题目1100:最短路径

    题目描述: N个城市,标号从0到N-1,M条道路,第K条道路(K从0开始)的长度为2^K,求编号为0的城市到其他城市的最短距离 输入: 第一行两个正整数N(2<=N<=100)M(M< ...

  8. ios弹性头部

    很久没写博客了,金天有点时间来写下,一直觉得弹性头部很炫,看起来高大上,写起来蛮简单的 层次分析 一共有3层,最底部是图像层,中间是scrollView或者它的子类,最上层是scrollView上面添 ...

  9. Mychael原创题 洛谷T23923 Mychaelの水题 【题解】

    原题链接 题目大意: 有来自三个地区的人各a,b,c位,他们排成了一排.请问有多少种不同类型的排法,使得相邻的人都来自不同的地区 \(a,b,c<=200\) 答案取模 题解 弱弱的标程解法 设 ...

  10. 【2017.12.18】Dijkstra专题

    先友情提示一下,作者很早就会这个算法了,只不过这么久以来没怎么写过博客.现在正在学习它的拓展,干脆就把这个算法相关的内容整个敲一遍吧!本章把迪杰斯特拉从基础到拓展全都说一遍咯. 下面是优先队列(堆)优 ...