网上配置文档众多,但是对着他们的文档来做老是出问题,于是花了点时间研究了一下,写成总结,方便以后查阅。也希望学习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都可以配置多个。
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.txt
mv 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分钟运行一次
/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. 使用search命令在命令行对索引进行检索
/usr/local/coreseek/bin/search --config /usr/local/coreseek/etc/sphinx.conf 游戏
相关推荐
全文搜索配置## 命令行获取信息查询。 ## 我们进行索引一般只会返回主键id,而不会返回表中的所有字段。 ## 但是在调试的时候,我们一般需要返回表中的字段,那这个时候,就需要使用sql_query_info。 ## 同时这个...
分布式sphinx配置文件 支持分词库 支持中文分词库 亲测试可以用
将本文档所在的文件夹解压或拷贝到d:\,即本文档路径是d:\sphinxtrain\Sphinx中文训练教程.txt 1)点击安装ActivePerl-5.16.3.1603-MSWin32-x86-296746.msi和ActivePython-2.7.2.5-win32-x86.msi; 2)解压Sphinx中除...
Sphinx 中文搜索优化和pdf生成方法_20181103.pdf,由于 sphinx 编译 PDF 的过程中使⽤用了了 latexpdf 组件,该组件在 windows/macOS/Linux 上安装⽅方 式和使⽤用⽅方式均有不不同,建议直接使⽤用 Docker 环境来...
windows 下 sphinx 增量索引配置文件 mssql
该资源里有sphinx配置所需资源及整理的配置说明
alabaster, 轻量级,可以配置的Sphinx主题现在,Sphinx默认 ! Alabaster?雪花是一个可视化的( c ) 精简,响应性,可以配置的主题,用于 Sphinx的文档系统。 兼容 python 2 3兼容。它作为第三方主题开始,仍然独立...
Sphinx-完整中文手册 Sphinx-完整中文手册 Sphinx-完整中文手册
1、生成Sphinx中文分词词库 11 ⑴、词典的构造 12 ⑵、词典文件格式 12 ⑶、XX网搜索引擎的中文分词词库 12 2、创建Sphinx主索引文件、增量索引文件存放目录 12 3、创建Sphinx配置文件 13 4、初始化sphinx.conf中...
Sphinx3安装教程以及简单使用配置详解并附带一些容易踩坑点,希望对你有所帮助
sphinx4需要使用连续的声学模型,官网上下载下来的中文声学模型全是半连续的,这里提供能够在sphinx4中使用的中文声学模型
sphinx的安装配置,及其PHP操作sphinx的案例,很详细!里面全是图片形式截图,相信大家更能快速的玩转
linux中 phpcms v9 配置sphinx 好的sphinx.conf文件
sphinx简体中文教程,pdf版本,深入浅出的介绍了sphinx安装配置及应用。
Coreseek 全文检索服务器 2.0 (Sphinx 0.9.8)参考手册和源程序 手册內容: 文档版本:v0.9 目录 1. 简介 1.1. 什么是 Sphinx 1.2. Sphinx 的特性 1.3. 如何获得 Sphinx 1.4. 许可协议 1.5. 作者和贡献者 1.6. ...
Sphinx中文手册 sphinx的安装与使用技巧
Sphinx可以非常容易的与SQL数据库和脚本语言集成。 当前系统内置MySQL和PostgreSQL 数据库数据源的支持,也支持从标准输入读取特定格式的XML数据。通过修改源代码,用户可以自行增加新的数据源(例如:其他类型的...
详细说明sphinx+coreseek安装、配置、php很用
pocketsphinx 声学模型和词典 tdt_sc_8k 支持utf-8格式
该文件有sphinx下载地址,中文站地址,数据表,sphinx.conf已经配通的配置,windows配置命令,php代码以及搜索结果,根据配置流程可以直接配通sphinx。