网上配置文档众多,但是对着他们的文档来做老是出问题,于是花了点时间研究了一下,写成总结,方便以后查阅。也希望学习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 1, 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=1 ) \

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       = 1000

#设置分区查询的时间间隔

sql_ranged_throttle  = 0

#用于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=1 ) \

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=1 )

}

#定义一个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             = 0

#设置词形处理器列表,设置为none表示不使用任何词形处理器

morphology        = none

#定义最小索引词的长度

min_word_len      = 1

#设置字符集编码类型,我这里采用的utf8编码和数据库的一致

charset_type      = zh_cn.utf-8

#指定分词读取词典文件的位置

charset_dictpath  = /usr/local/mmseg3/etc

#不被搜索的词文件里表。

stopwords       = /usr/local/coreseek/var/data/stopwords.txt

#定义是否从输入全文数据中取出HTML标记

html_strip       = 0

}

#定义增量索引

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:3312

listen            = 3312

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       = 5

#定义子进程的最大数量

max_children       = 300

#设置searchd进程pid文件名

pid_file           = /usr/local/coreseek/var/log/searchd.pid

#定义守护进程在内存中为每个索引所保持并返回给客户端的匹配数目的最大值

max_matches        = 100000

#启用无缝seamless轮转,防止searchd轮转在需要预取大量数据的索引时停止响应

#也就是说在任何时刻查询都可用,或者使用旧索引,或者使用新索引

seamless_rotate    = 1

#配置在启动时强制重新打开所有索引文件

preopen_indexes    = 1

#设置索引轮转成功以后删除以.old为扩展名的索引拷贝

unlink_old         = 1

# MVA更新池大小,这个参数不太明白

mva_updates_pool   = 1M

#最大允许的包大小

max_packet_size    = 32M

#最大允许的过滤器数

max_filters        = 256

#每个过滤器最大允许的值的个数

max_filter_values  = 4096

}

二、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

  1. 生成Sphinx中文同义词库

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

/data/software/sphinx/coreseek-3.2.14/mmseg-3.2.14/script/build_thesaurus.py unigram.txt > thesaurus.txt

/usr/local/mmseg3/bin/mmseg -t thesaurus.txt

将thesaurus.lib放到uni.lib同一目录

  1. 生成全部索引

/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

  1. 启动searchd守护进程

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

  1. 生成主索引

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

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

  1. 生成增量索引

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

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

  1. 增量索引和主索引的合并

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

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

  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的配置和管理.No2的更多相关文章

  1. sphinx的配置和管理

    网上配置文档众多,但是对着他们的文档来做老是出问题,于是花了点时间研究了一下,写成总结,方便以后查阅.也希望学习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. pyv8使用总结

    在使用python爬虫的过程中,难免遇到要加载原网站的js脚本并执行.但是python本身无法解析js脚本. 不过python这么猛的语言,当然设置了很多方法来执行js脚本.其中一个比较简单的方法是使 ...

  2. [转]SQL Server 「逾时过期」的处理方式

    基本上 SQL Server 只要在处理大量数据的指令,如 INSERT INTO A SELECT * FROM B 在数据量很大的时候,很容易发生 Timeout ,也就是常见的「逾期过时」错误. ...

  3. usb 转 uart cp210x 驱动解析

    USB 转 uart (cp210x.c) 驱动解析 * usb_serial_driver 结构体解析 include/linux/usb/serial.h /** 描述一个usb 串口设备驱动 * ...

  4. laravel 参数配置

    1:在项目根目录下有个叫.env的文件.这个文件是配置配置.由config文件下的app.php 直接读取. #参数解释 APP_ENV=local #访问地址 APP_DEBUG=true #是否开 ...

  5. thinkphp 前台测试

    配置文件 <?php return array( 'DB_TYPE' => 'mysql', // 数据库类型 'DB_HOST' => 'localhost', // 服务器地址 ...

  6. MongoDB C Driver Building on Windows

    一.编译mongodb c driver: 需要先安装OpenSSL:(参见:http://bbs.aircheng.com/read-2222-1) 步骤:(MongoDB步) 1.下载Active ...

  7. getaddrinfo ENOTFOUND https://api.weixin.qq.com https://api.weixin.qq.com:443

    原因:这是由于你当前的主机不能够连接到你填写的url. 解决方法: 先ping api.weixin.qq.com ping不通的话,就是外网访问的问题. 开通外网访问就可以了.

  8. OpenCV_基于局部自适应阈值的图像二值化

    在图像处理应用中二值化操作是一个很常用的处理方式,例如零器件图片的处理.文本图片和验证码图片中字符的提取.车牌识别中的字符分割,以及视频图像中的运动目标检测中的前景分割,等等. 较为常用的图像二值化方 ...

  9. (转)Spring开启Annotation<context:annotation-config> 和 <context:component-scan>诠释及区别

    转自:https://www.cnblogs.com/leiOOlei/p/3713989.html <context:annotation-config> 和 <context:c ...

  10. localhost 和 127.0.0.1

    转自:http://ordinarysky.cn/?p=431localhost与127.0.0.1的区别是什么?相信有人会说是本地ip,曾有人说,用127.0.0.1比localhost好,可以减少 ...