网上配置文档众多,但是对着他们的文档来做老是出问题,于是花了点时间研究了一下,写成总结,方便以后查阅。也希望学习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. STM32L0开发——ADC多通道采集,IDE和IAR开发注意事项

    keil开发L0系列是免费的,官方提供许可的.因此建议Keil开发,L011F3由于flash只有8K,因此不建议HAL库,建议使用cubemx+LL(或snippets库).0.起初,可以参考官方库 ...

  2. cs229_part7

    PCA 问题背景 回顾一下我们特征选择中的问题.如果特征非常多,而且有一些特征是重复的,那么我们可以想办法剔除掉一些无用的特征.那里我们提到一个计算互信息的方法.那么这里换一种降维方法. 比如说这样的 ...

  3. Bin Paking Problem:简单的构造性算法

    *本文主要记录和分享学习到的知识,算不上原创 *参考文献见链接 目录 BL和BLF算法 BF算法 HR算法 PH算法

  4. poj--2139

    Description The cows have been making movies lately, so they are ready to play a variant of the famo ...

  5. express中间件的next()方法

    next()方法出现在express框架中的中间件部分,由于node异步的原因,我们需要提供一种机制,当当前中间件工作完成之后,通知下一个中间件执行,因此一个基本的中间件应该是这种形式 var mid ...

  6. c++ 一个cpp文件如何调用另一个cpp文件已经定义的类?我不想重复定义

    文件test1.cpp有类class A;文件test2.cpp有类class B.如在test2.cpp中想用A:#include "test1.cpp" 当然一般的做法是将类的 ...

  7. 【U+B+D】三层框架 原理+实例

    导读:三层的学习,也终于得到收获了.这个过程很艰辛,不止一次的想放弃.在这一个学习过程中,真的很感谢师傅的尽心.耐心.费心.其实真的很脆弱,现在回想起来都很不可思议. 一.基本概况 1,什么是三层 我 ...

  8. iOS学习笔记08-Quartz2D绘图

    一.Quartz2D简单介绍 在iOS中常用的绘图框架就是Quartz2D,Quartz2D是Core Graphics框架的一部分,我们日常开发使用的所有UIKit组件都是由Core Graphic ...

  9. 【容器人必看】你一定要来 ECUG Con 2018 的三个理由!

    引领国内云领域风向的高端峰会 ECUG Con 2018,即将在 12 月 22-23 日 深圳南山 全新启程!如果你的工作和容器内容相关联,如果你的兴趣和容器技术有交集,如果你是「容器人」,那么这就 ...

  10. 【bzoj3231】[Sdoi2008]递归数列 矩阵乘法+快速幂

    题目描述 一个由自然数组成的数列按下式定义: 对于i <= k:ai = bi 对于i > k: ai = c1ai-1 + c2ai-2 + ... + ckai-k 其中bj和 cj  ...