博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
sphinx的配置和管理
阅读量:6208 次
发布时间:2019-06-21

本文共 5443 字,大约阅读时间需要 18 分钟。

  hot3.png

转自

一、sphinx的配置

1.   sphinx配置文件结构介绍

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

Source和Index都可以配置多个。

2.   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.txtmv thesaurus.txt.uni uni.lib

2、生成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同一目录

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分钟运行一次

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、使用search命令在命令行对索引进行检索

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

转载于:https://my.oschina.net/ptk/blog/390905

你可能感兴趣的文章
system generator学习笔记【01】
查看>>
C# 因IIS回收导致定时器失效的解决方案
查看>>
use crunch compression
查看>>
Hadoop: the definitive guide 第三版 拾遗 第十二章 之Hive分区表、桶
查看>>
如何修改 EM12c 中 SYSMAN 用户的密码?
查看>>
[Leetcode] Trapping Rain Water
查看>>
算法练习 (二)
查看>>
程序员谈学习:我为什么要学习Linux?
查看>>
Oracle Essbase入门系列(一)
查看>>
Python编程-Office操作-操作Excel(上)
查看>>
IOCP数据中间件
查看>>
SQL Server 排名函数 简单应用
查看>>
条件变量
查看>>
su su- sudo
查看>>
HTML5是否已为实际应用做好准备?
查看>>
大叔手记全集
查看>>
Windows phone 应用开发[7]-MEF For Windows phone
查看>>
卓越软件工程--《微软360度》读后感
查看>>
gcc 之 inline
查看>>
ssh ip "WARING:REMOTE HOST IDENTIFICATION HAS CHANGED!"
查看>>