Sphinx的配置使用(超详细分析conf)

更新时间:2024-01-31 04:03:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

Sphnix的配置使用手册

概念讲解

Sphinx全文搜索引擎 一般用作大数据量的搜索支持 Sphinx特性

1:Sphinx支持高速建立索引(可达10MB/秒,而Lucene建立索引的速度是1.8MB/秒) 2:高性能的搜索(在2--4GB的文本数据上,平均每次检索响应时间小于0.1秒) 3:高扩展性(实测最高可对100GB的文本建立索引,单一索引可包含1亿条记录) 4:提供了优秀的相关度算法,基于短语相似度和统计(BM25)的复合Ranking方法 5:支持分布式搜索 6:支持短语搜索

7:可作为MySQL的存储引擎提供搜索服务 8:支持布尔、短语、词语相似度等多种检索模式 9:文档支持多个全文检索字段

而我们在这里讲的是Coreseek。

Coreseek是基于Sphinx开发的一款软件,对Sphinx做了一些改动,在中文方面支持得比Sphinx好 如果是做中文的全文搜索引擎,现在用Coreseek.

操作流程

1、

准备工作 (手工) 数据库创建,导入数据

下载coreseek文件,解压到c:/user/local目录中

官方Coreseek下各目录: |-- api |-- bin |-- etc |-- var |-- test.cmd

2、

建立sphinx配置文件xxx.conf (手工) 配置参数详细说明请参照

3、

命令生成索引(手工,执行命令) bin/ indexer -c etc\\xxx.conf --all

4、创建searchd服务 bin/searchd --instal

配置conf文件到服务中 bin/searchd –c etc/xxx.conf (手工,执行命令) 4、

复制api目录下sphinxapi.php文件到程序中。

程序通过调用sphinxapi.php通知sphinx服务器执行全文搜索,详细代码请参照xxxxxx。 获取结果集中matches,然后从matches中取得id 再使用db->query('xxx in ($id)')取得数据。 (手工,执行代码)

**********顺序不能颠倒*******************************************************

使用Sphinx

我要使用Sphinx需要做以下几件事 1)、首先得有数据

2)、建立Sphinx配置文件 .conf 3)、生成索引

4)、启动Sphinx

5)、使用SphinxAPI(调用api或search.exe程序进行查询)

Coreseek是基于Sphinx研发发布的 是一款中文全文检索/搜索软件,以GPLv2许可协议开源发布,基于Sphinx研发并独立发布,专攻中文搜索和信息处理领域,适用于行业/垂直搜索、论坛/站内搜索、数据库搜索、文档/文献检索、信息检索、数据挖掘等应用场景

可以在Coreseek官网http://www.coreseek.cn/products/ft_down/上下载coreseek。 选择Win32版本的coreseek,如果下载源代码模式需要编译后再安装。 windows下Coreseek的安装

1、下载后解压得到源程序目录 coreseek-3.2.14-win32 ,文件夹重命名一下,简单一些,命名为 coreseek; 2、将 coreseek 文件夹移动到 d:\\www\\ 下(根据你个人爱好,放哪都可以);

3、“开始”——>“运行”——>输入cmd,打开命令行窗口——>执行 \回车\——>执行 \www\\coreseek\\\,进入到 coreseek目录下;

4、执行 \。设置path,目的是为了能够调用bin目录下的 cat.exe、iconv.exe 等; 4.4、配置生成索引

---1、配置 mysql 数据源及测试(在 coreseek\\etc\\csft_mysql.conf 文件) ---2、创建索引

在命令行窗口下执行 \,即:创建名为weibo的数据源的索引。如果需要创建 csft_mysql.conf 配置文件中的所有索引,刚使用 --all 替代 weibo。 此时,在 coreseek\\var\\data 下发现,生成6个文件。 ---3、数据测试(命令行下不需要开启 searchd 服务)

测试搜索中文。命令 为“ echo 搜索的词 | iconv -f gbk -t utf-8 | search -c etc\\csft_mysql.conf --stdin | iconv -f utf-8 -t gbk ”

搜索英文,出现乱码是正常的。命令为” bin\\search -c etc\\csft_mysql.conf 搜索词“

5、将 searchd 安装成为一个服务。执行 \

d:/www/coreseek/etc/csft_mysql.conf\,安装成功后命令行窗口会提示\successfully\。注意两点:

(1)、win7下命令行窗口需要以管理员身份运行,否则会出现”fatal openscmanager“错误而无法安装 (2)、如果不把 searchd 安装成为服务,那每次使用 coreseek 全文搜索,都得在命令行窗口打开 searchd 服务且不可关闭或停止(命令行窗口不需要开启,使用api接口时需要)

*****个人理解:csft_mysql.conf是针对mysql数据库的全文搜索配置文件,通过命令注册为服务后,客户端请求,都是调用csft_mysql_conf的索引

首先,需要配置好 index索引后,才可以安装成为一个服务,所以,这点放在这是错误的;

其次,是补充一点,无法正常安装,或安装后启动该服务时出现1067错误,很有可能是路径问题:一是需要注意数据源配置文件里全部使用绝对路径;二是上面的 install命令,也需要使用绝对路径,而且路径用 '/' ,不能是 '\\'。

以上是在服务器端安装配置Coreseek,下面就需要在客户端使用了 第5步:(使用Sphinx)

在web根目录下建立一个search目录(当然不在根目录也行,同样目录名也可以随取),复制

E:\\coreseek\\api\\ sphinxapi.php文件到search目录(sphinxapi.php这个是sphinx官方提供的api),开始php程序的编写。

include 'sphinxapi.php'; // 加载Sphinx API $sc = new SphinxClient(); // 实例化Api

$sc->setServer('localhost', 9312); // 设置服务端,第一个参数sphinx服务器地址,第二个sphinx监听端口

$res = $sc->query('sphinx', 'mysql'); // 执行查询,第一个参数查询的关键字,

// 第二个查询的索引名称,mysql索引名称(这个也是在配置文件中定义的), //多个索引名称以,分开,也可以用*表示所有索引。

print_r($res); ?> 打印结果:

Array (………省略………[matches] => Array([2] => Array([weight] => 2[attrs] => Array([addtime] => 1282622004))[4] => Array([weight] => 2[attrs] => Array([addtime] => 1282622079)))………省略………)

Matches中就是查询的结果了,但是仿佛不是我们想要的数据,比如titile,content字段的内容就没有查询出来,根据官方的说明是Sphinx并没有连接到MySQL去取数据,只是根据它自己的索引内容进行计算,因此如果想用Sphinx提供的API去取得我们想要的数据,还必须以查询的结果为依据,再次查询MySQL从而得到我们想要的数据。

查询结果中键值分别表示2唯一主键weight权重attrs sql_attr_*中配置至此,搜索引擎算是完成一大半了,剩下的大家可以自行完成。 sphnix是怎么保存的? 持久化还是进程内缓存

常用命令

1、创建搜索服务

bin\\searchd --install --config d:/www/coreseek/etc/csft_mysql.conf servicename sphinx 此处执行了两个命令:

1) install命令,安装searchd作为服务 2) config命令,配置sphinx.conf文件 详细请参照下面的searchd命令: 2、启动搜索服务

/usr/local/coreseek/bin/searchd -c /usr/local/coreseek/etc/csft.conf

3、停止搜索服务

/usr/local/coreseek/bin/searchd -c /usr/local/coreseek/etc/csft.conf --stop

4、强制关闭searchd服务

killall -9 searchd

5、建立索引

/usr/local/coreseek/bin/indexer -c /usr/local/coreseek/etc/csft.conf --all

6、更新索引(已启动搜索服务时使用)

/usr/local/coreseek/bin/indexer -c /usr/local/coreseek/etc/csft.conf --all --rotate

7、关键字检索

/usr/local/coreseek/bin/search -c /usr/local/coreseek/etc/csft.conf 网络搜索

常见错误

FATAL: failed to lock /usr/local/coreseek/var/data/mysql.spl: Resource temporarily unavailable, will not index. Try --rotate option.

在已启动searchd服务时执行 建立索引 就会出现如上错误,这时应该用 更新索引 命令,或者先 关闭searchd服务。也可已删除生成的索引文件,一般在/usr/local/coreseek/var/data 目录下 bind() failed on 0.0.0.0, retrying...

在已启动searchd服务时执行 启动搜索服务 就会出现如上错误,请先关闭searchd服务

searched命令

Options are:

-h, --help display this help message

-c, -config read configuration from specified file (default is csft.conf)

--stop send SIGTERM to currently running searchd --status get ant print status variables

(PID is taken from pid_file specified in config file) --iostats log per-query io stats --install install as Windows service --delete delete Windows service

--servicename use given service name (default is 'searchd')

Debugging options are:

--console run in console mode (do not fork, do not log to files) -p, --port listen on given port (overrides config setting) -l, --listen listen on given address, port or path (overrides config settings)

-i, --index only serve one given index

Examples:

searchd --config /usr/local/csft/etc/csft.conf searchd --install --config c:\\csft\\csft.conf

indexer命令

Options are:

--config read configuration from specified file (default is csft.conf)

--all reindex all configured indexes --quiet be quiet, only print errors --noprogress do not display progress

(automatically on if output is not to a tty) --buildstops

build top N stopwords and write them to given file --buildfreqs store words frequencies to output.txt (used with --buildstops only) --merge

merge 'src-index' into 'dst-index' 'dst-index' will receive merge result 'src-index' will not be modified --merge-dst-range

filter 'dst-index' on merge, keep only those documents where 'attr' is between 'min' and 'max' (inclusive) --merge-killlists merge src and dst killlists instead of a pplying src killlist to dst Examples:

indexer --quiet myidx1 reindex 'myidx1' defined in 'csft.conf' indexer --all reindex all indexes defined in 'csft.conf'

sphinx配置文件讲解

我们先要明白几个概念:

?

source:数据源,数据是从什么地方来的。

index:索引,当有数据源之后,从数据源处构建索引。索引实际上就是相当于一个字典检索。有了整本字典内容以后,才会有字典检索。

?

? searchd:提供搜索查询服务。它一般是以deamon的形式运行在后台的。

indexer:构建索引的服务。当要重新构建索引的时候,就是调用indexer这个命令。 attr:属性,属性是存在索引中的,它不进行全文索引,但是可以用于过滤和排序。

?

?

sphinx的配置文件过于冗长,我们把sphinx默认的配置文件中的注释部分去掉,重新进行描述理解,就成下面的样子了:

配置文件

## 数据源src1 source src1 { python

## 有人会奇怪,python是一种语言怎么可以成为数据源呢?

## python作为一种语言,可以操作任意其他的数据来源来获取数据,更多数据请看:## 说明数据源的类型。数据源的类型可以是:mysql,pgsql,mssql,xmlpipe,odbc,

(http://www.coreseek.cn/products-install/python/)

type = mysql

## 下面是sql数据库特有的端口,用户名,密码,数据库名等。 sql_host sql_user sql_pass sql_db

= localhost = test = = test

sql_port = 3306

## 如果是使用unix sock连接可以使用这个。 # sql_sock

= /tmp/mysql.sock

## indexer和mysql之间的交互,需要考虑到效率和安全性。

## 比如考虑到效率,他们两者之间的交互需要使用压缩协议;考虑到安全,他们两者之间

的传输需要使用ssl

## 那么这个参数就代表这个意思,0/32/2048/32768 无/使用压缩协议/握手后切换到

ssl/Mysql 4.1版本身份认证。

# mysql_connect_flags = 32

## 当mysql_connect_flags设置为2048(ssl)的时候,下面几个就代表ssl连接所需要

使用的几个参数。

# mysql_ssl_cert # mysql_ssl_key # mysql_ssl_ca

= /etc/ssl/client-cert.pem

= /etc/ssl/client-key.pem = /etc/ssl/cacert.pem

## mssql特有,是否使用windows登陆 # mssql_winauth

= 1

## mssql特有,是使用unicode还是单字节数据。 # mssql_unicode ## odbc的dsn串 # odbc_dsn

= DBQ=C:\\data;DefaultDir=C:\\data;Driver={Microsoft Text = 1 # request Unicode data from server

Driver (*.txt; *.csv)};

## sql某一列的缓冲大小,一般是针对字符串来说的。 ## 为什么要有这么一种缓冲呢?

## 有的字符串,虽然长度很长,但是实际上并没有使用那么长的字符,所以在Sphinx并

不会收录所有的字符,而是给每个属性一个缓存作为长度限制。

## 默认情况下非字符类型的属性是1KB,字符类型的属性是1MB。 ## 而如果想要配置这个buffer的话,就可以在这里进行配置了。 # sql_column_buffers = content=12M, comments=1M ## indexer的sql执行前需要执行的操作。

# sql_query_pre # sql_query_pre

= SET NAMES utf8

= SET SESSION query_cache_type=OFF

## indexer的sql执行语句 sql_query

= \\

SELECT id, group_id, UNIX_TIMESTAMP(date_added) AS date_added, title,

content \\

FROM documents

## 有的时候有多个表,我们想要查询的字段在其他表中。这个时候就需要对sql_query进

行join操作。

## 而这个join操作可能非常慢,导致建立索引的时候特别慢,那么这个时候,就可以考

虑在sphinx端进行join操作了。

## sql_joined_field是增加一个字段,这个字段是从其他表查询中查询出来的。 ## 这里封号后面的查询语句是有要求的,如果是query,则返回id和查询字段,如果是

payload-query,则返回id,查询字段和权重。

## 并且这里的后一个查询需要按照id进行升序排列。 # sql_joined_field

= tags from query; SELECT docid, CONCAT('tag',tagid)

FROM tags ORDER BY docid ASC

# sql_joined_field

= wtags from payload-query; SELECT docid, tag, tagweight

FROM tags ORDER BY docid ASC

## 外部文件字段,意思就是一个表中,有一个字段存的是外部文件地址,但是实际的字段

内容在文件中。比如这个字段叫做content_file_path。

## 当indexer建立索引的时候,查到这个字段,就读取这个文件地址,然后加载,并进行

分词和索引建立等操作。

## 当数据源数据太大的时候,一个sql语句查询下来往往很有可能锁表等操作。 ## 那么我么就可以使用多次查询,那么这个多次查询就需要有个范围和步长,# sql_file_field

= content_file_path

sql_query_range和sql_range_step就是做这个使用的。

## 获取最大和最小的id,然后根据步长来获取数据。比如下面的例子,如果有4500条数

据,这个表建立索引的时候就会进行5次sql查询。 秒。 排序。

## uint无符号整型属性 sql_attr_uint ## bool属性 # sql_attr_bool ## 长整型属性 # sql_attr_bigint

= my_bigint_id

= is_deleted = group_id

# sql_query_range # sql_range_step

= SELECT MIN(id),MAX(id) FROM documents = 1000

## 而5次sql查询每次的间隔时间是使用sql_ranged_rhrottle来进行设置的。单位是毫

# sql_ranged_throttle = 0 ## 下面都是些不同属性的数据了

## 先要了解属性的概念:属性是存在索引中的,它不进行全文索引,但是可以用于过滤和

## 时间戳属性,经常被用于做排序 sql_attr_timestamp

= date_added

## 字符串排序属性。一般我们按照字符串排序的话,我们会将这个字符串存下来进入到索

引中,然后在查询的时候比较索引中得字符大小进行排序。

## 但是这个时候索引就会很大,于是我们就想到了一个方法,我们在建立索引的时候,先

将字符串值从数据库中取出,暂存,排序。

## 然后给排序后的数组分配一个序号,然后在建立索引的时候,就将这个序号存入到索引

中去。这样在查询的时候也就能完成字符串排序的操作。

## 这,就是这个字段的意义。

# sql_attr_str2ordinal = author_name

## 浮点数属性,经常在查询地理经纬度的时候会用到。 # sql_attr_float # sql_attr_float

= lat_radians = long_radians

引中。 tags

## 多值属性(MVA)

## 试想一下,有一个文章系统,每篇文章都有多个标签,这个文章就叫做多值属性。 ## 我要对某个标签进行查询过滤,那么在建立查询的时候就应该把这个标签的值放入到索

## 这个字段,sql_attr_multi就是用来做这个事情的。 # sql_attr_multi

= uint tag from query; SELECT docid, tagid FROM

# sql_attr_multi # #

= uint tag from ranged-query; \\

SELECT docid, tagid FROM tags WHERE id>=$start AND id<=$end; \\ SELECT MIN(docid), MAX(docid) FROM tags

## 字符串属性。 # sql_attr_string

= stitle

## 文档词汇数记录属性。比如下面就是在索引建立的时候增加一个词汇数的字段 # sql_attr_str2wordcount

= stitle

## 字符串字段,可全文搜索,可返回原始文本信息。 # sql_field_string

= author

## 文档词汇数记录字段,可全文搜索,可返回原始信息 # sql_field_str2wordcount

= title

## 取后查询,在sql_query执行后立即操作。

## 它和sql_query_post_index的区别就是执行时间不同

## sql_query_post是在sql_query执行后执行,而sql_query_post_index是在索引建立

完成后才执行。

## 所以如果要记录最后索引执行时间,那么应该在sql_query_post_index中执行。 # sql_query_post

=

## 参考sql_query_post的说明。

# sql_query_post_index = REPLACE INTO counters ( id, val ) \\ #

VALUES ( 'max_indexed_id', $maxid )

## 命令行获取信息查询。

## 什么意思呢?

## 我们进行索引一般只会返回主键id,而不会返回表中的所有字段。

## 但是在调试的时候,我们一般需要返回表中的字段,那这个时候,就需要使用

sql_query_info。 的。

## 当我要对两个索引进行搜索的时候,哪些数据要按照新的索引来进行查询呢。 ## 这个时候就使用到了这个字段了。

## 这里的例子(http://www.coreseek.cn/docs/coreseek_4.1-sphinx_2.0.1-## 同时这个字段只在控制台有效,在api中是无效的。 sql_query_info

= SELECT * FROM documents WHERE id=$id

## 比如有两个索引,一个索引比较旧,一个索引比较新,那么旧索引中就会有数据是旧

beta.html#conf-sql-query-killlist)给的非常清晰了。 表现。

## SQL数据源解压字段设置 # unpack_zlib

= zlib_column

# sql_query_killlist = SELECT id FROM documents WHERE edited>=@last_reindex ## 下面几个压缩解压的配置都是为了一个目的:让索引重建的时候不要影响数据库的性能

## MySQL数据源解压字段设置

# unpack_mysqlcompress = compressed_column # unpack_mysqlcompress = compressed_column_2 ## MySQL数据源解压缓冲区设置 # unpack_mysqlcompress_maxsize = 16M ## xmlpipe的数据源就是一个xml文档 # type

= xmlpipe

## 读取数据源的命令 # xmlpipe_command

= cat

/home/yejianfeng/instance/coreseek/var/test.xml

## 字段

# xmlpipe_field # xmlpipe_field ## 属性

= subject = content

# xmlpipe_attr_timestamp # xmlpipe_attr_uint ## UTF-8修复设置

= published

= author_id

## 只适用xmlpipe2数据源,数据源中有可能有非utf-8的字符,这个时候解析就有可能

出现问题 }

## sphinx的source是有继承这么一种属性的,意思就是除了父source之外,这个source还有这个特性

source src1throttled : src1 { }

## 索引test1 index test1 {

## 索引类型,包括有plain,distributed和rt。分别是普通索引/分布式索引/增量索sql_ranged_throttle

= 100

## 如果设置了这个字段,非utf-8序列就会全部被替换为空格。 # xmlpipe_fixup_utf8 = 1

引。默认是plain。

# type ## 索引数据源 source

= plain

= src1

## 索引文件存放路径 path

= /home/yejianfeng/instance/coreseek/var/data/test1

## 文档信息的存储模式,包括有none,extern,inline。默认是extern。

## docinfo指的就是数据的所有属性(field)构成的一个集合。 ## 首先文档id是存储在一个文件中的(spa)

## 当使用inline的时候,文档的属性和文件的id都是存放在spa中的,所以进行查询过

滤的时候,不需要进行额外操作。

## 当使用extern的时候,文档的属性是存放在另外一个文件(spd)中的,但是当启动

searchd的时候,会把这个文件加载到内存中。

## extern就意味着每次做查询过滤的时候,除了查找文档id之外,还需要去内存中根据

属性进行过滤。

## 但是即使这样,extern由于文件大小小,效率也不低。所以不是有特殊要求,一般都是

使用extern

docinfo

= extern

## 缓冲内存锁定。

## searchd会讲spa和spi预读取到内存中。但是如果这部分内存数据长时间没有访问,

则它会被交换到磁盘上。

## 设置了mlock就不会出现这个问题,这部分数据会一直存放在内存中的。 mlock ## 词形处理器

## 词形处理是什么意思呢?比如在英语中,dogs是dog的复数,所以dog是dogs的词

= 0

干,这两个实际上是同一个词。

## 所以英语的词形处理器会讲dogs当做dog来进行处理。 morphology

= none

## 词形处理有的时候会有问题,比如将gps处理成gp,这个设置可以允许根据词的长度来

决定是否要使用词形处理器。

# min_stemming_len

= 1

## 词形处理后是否还要检索原词? # index_exact_words

= 1

## 停止词,停止词是不被索引的词。 # stopwords

=

/home/yejianfeng/instance/coreseek/var/data/stopwords.txt

## 自定义词形字典 # wordforms

=

/home/yejianfeng/instance/coreseek/var/data/wordforms.txt 理。

# exceptions

=

## 词汇特殊处理。

## 有的一些特殊词我们希望把它当成另外一个词来处理。比如,c++ => cplusplus来处

/home/yejianfeng/instance/coreseek/var/data/exceptions.txt

## 最小索引词长度,小于这个长度的词不会被索引。 min_word_len

= 1

## 字符集编码类型,可以为sbcs,utf-8。对于Coreseek,还可以有zh_cn.utf-

8,zh_ch.gbk,zh_ch.big5

charset_type

= sbcs

## 字符表和大小写转换规则。对于Coreseek,这个字段无效。 # 'sbcs' default value is # charset_table

= 0..9, A..Z->a..z, _, a..z, U+A8->U+B8, U+B8,

U+C0..U+DF->U+E0..U+FF, U+E0..U+FF

#

# 'utf-8' default value is # charset_table

= 0..9, A..Z->a..z, _, a..z, U+410..U+42F->U+430..U+44F,

U+430..U+44F

## 忽略字符表。在忽略字符表中的前后词会被连起来当做一个单独关键词处理。 # ignore_chars

= U+00AD

## 是否启用通配符,默认为0,不启用 # enable_star

= 1

## min_prefix_len,min_infix_len,prefix_fields,infix_fields都是在enable_star开

启的时候才有效果。

## 最小前缀索引长度 ## 为什么要有这个配置项呢?

## 首先这个是当启用通配符配置启用的前提下说的,前缀索引使得一个关键词产生了多个

索引项,导致索引文件体积和搜索时间增加巨大。

## 那么我们就有必要限制下前缀索引的前缀长度,比如example,当前缀索引长度设置为

5的时候,它只会分解为exampl,example了。

## 词汇展开

## 是否尽可能展开关键字的精确格式或者型号形式 # expand_keywords

= 1

# min_prefix_len

= 0

## 最小索引中缀长度。理解同上。 # min_infix_len

= 0

## 前缀索引和中缀索引字段列表。并不是所有的字段都需要进行前缀和中缀索引。 # prefix_fields # infix_fields

= filename = url, domain

## N-Gram索引的分词技术

## N-Gram是指不按照词典,而是按照字长来分词,这个主要是针对非英文体系的一些语言

来做的(中文、韩文、日文)

## 对coreseek来说,这两个配置项可以忽略。 # ngram_len

= 1

= U+3000..U+2FA1F

# ngram_chars

## 词组边界符列表和步长

## 哪些字符被看做分隔不同词组的边界。 # phrase_boundary

= ., ?, !, U+2026 # horizontal ellipsis

# phrase_boundary_step = 100 ## 混合字符列表 # blend_chars # blend_mode

= +, &, U+23

= trim_tail, skip_pure

## html标记清理,是否从输出全文数据中去除HTML标记。 html_strip

= 0

## HTML标记属性索引设置。 # html_index_attrs

= img=alt,title; a=title;

## 需要清理的html元素

# html_remove_elements = style, script

## searchd是预先打开全部索引还是每次查询再打开索引。 # preopen

= 1

## 字典文件是保持在磁盘上还是将他预先缓冲在内存中。 # ondisk_dict

= 1

## 由于在索引建立的时候,需要建立临时文件和和副本,还有旧的索引 ## 这个时候磁盘使用量会暴增,于是有个方法是临时文件重复利用

## 这个配置会极大减少建立索引时候的磁盘压力,代价是索引建立速度变慢。 # inplace_enable # inplace_hit_gap

= 1

= 0 # preallocated hitlist gap size

# inplace_docinfo_gap = 0 # preallocated docinfo gap size # inplace_reloc_factor = 0.1 # relocation buffer size within arena # inplace_write_factor = 0.1 # write buffer size within arena ## 在经过过短的位置后增加位置值 # overshort_step

= 1

## 在经过 停用词 处后增加位置值 # stopword_step ## 位置忽略词汇列表 # hitless_words # hitless_words

= all

= hitless.txt = 1

## 是否检测并索引句子和段落边界 # index_sp

= 1

}

## 字段内需要索引的HTML/XML区域的标签列表 # index_zones

= title, h*, th

index test1stemmed : test1 {

path

=

/home/yejianfeng/instance/coreseek/var/data/test1stemmed }

index dist1 { } index rt {

morphology = stem_en

type

= distributed = test1 = test1stemmed

local local

## 分布式索引(distributed index)中的远程代理和索引声明 agent agent # agent

= localhost:9313:remote1

= localhost:9314:remote2,remote3 = /var/run/searchd.sock:remote4

## 分布式索引( distributed index)中声明远程黑洞代理 # agent_blackhole

= testbox:9312:testindex1,testindex2

## 远程代理的连接超时时间 agent_connect_timeout = 1000 ## 远程查询超时时间 agent_query_timeout

= 3000

type = rt

}

path = /home/yejianfeng/instance/coreseek/var/data/rt

## RT索引内存限制 # rt_mem_limit ## 全文字段定义 rt_field rt_field

= title = content = 512M

## 无符号整数属性定义 rt_attr_uint

= gid

## 各种属性定义 # rt_attr_bigint # rt_attr_float # rt_attr_timestamp # rt_attr_string

= gpa = ts_added

= author = guid

indexer {

## 建立索引的时候,索引内存限制 mem_limit

= 32M

## 每秒最大I/O操作次数,用于限制I/O操作 # max_iops

= 40

## 最大允许的I/O操作大小,以字节为单位,用于I/O节流 # max_iosize

= 1048576

## 对于XMLLpipe2数据源允许的最大的字段大小,以字节为单位 # max_xmlpipe2_field = 4M ## 写缓冲区的大小,单位是字节 # write_buffer

= 1M

## 文件字段可用的最大缓冲区大小,字节为单位 # max_file_field_buffer

= 32M

}

## 搜索服务配置 searchd {

# listen # listen # listen # listen ## 监听端口 listen listen ## 监听日志 log

= /home/yejianfeng/instance/coreseek/var/log/searchd.log

= 9312

= 9306:mysql41

= 127.0.0.1 = 192.168.0.1:9312 = 9312

= /var/run/searchd.sock

## 查询日志 query_log

= /home/yejianfeng/instance/coreseek/var/log/query.log

## 客户端读超时时间 read_timeout

= 5

## 客户端持久连接超时时间,即客户端读一次以后,持久连接,然后再读一次。中间这个

持久连接的时间。

client_timeout ## 并行执行搜索的数目 max_children ## 进程id文件 pid_file

= 300

= 30

= /home/yejianfeng/instance/coreseek/var/log/searchd.pid

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

= 1000

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

## 当进行索引轮换的时候,可能需要消耗大量的时间在轮换索引上。 ## 但是启动了无缝轮转,就以消耗内存为代价减少轮转的时间 seamless_rotate

= 1

## 索引预开启,是否强制重新打开所有索引文件 preopen_indexes

= 1

## 索引轮换成功之后,是否删除以.old为扩展名的索引拷贝 unlink_old

= 1

## 属性刷新周期

## 就是使用UpdateAttributes()更新的文档属性每隔多少时间写回到磁盘中。 # attr_flush_period ## 索引字典存储方式 # ondisk_dict_default = 1

## 用于多值属性MVA更新的存储空间的内存共享池大小 mva_updates_pool

= 1M = 900

## 网络通讯时允许的最大的包的大小 max_packet_size ## 崩溃日志文件 # crash_log_path

=

= 8M

/home/yejianfeng/instance/coreseek/var/log/crash

## 每次查询允许设置的过滤器的最大个数 max_filters

= 256

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

= 4096

## TCP监听待处理队列长度 # listen_backlog

= 5

## 每个关键字的读缓冲区的大小 # read_buffer

= 256K

## 无匹配时读操作的大小 # read_unhinted

= 32K

## 每次批量查询的查询数限制 max_batch_queries

= 32

## 每个查询的公共子树文档缓存大小 # subtree_docs_cache = 4M ## 每个查询的公共子树命中缓存大小 # subtree_hits_cache = 8M

## 多处理模式(MPM)。 可选项;可用值为none、fork、prefork,以及threads。在Unix类系统为form,Windows系统为threads。 workers

= threads # for RT to work

## 并发查询线程数 # dist_threads = 4

## 二进制日志路径 # binlog_path = # disable logging

# binlog_path

= /home/yejianfeng/instance/coreseek/var/data # binlog.001 etc will be created there ## 二进制日志刷新 # binlog_flush = 2

## 二进制日志大小限制 # binlog_max_log_size = 256M ## 线程堆栈 # thread_stack

= 128K

## 关键字展开限制 # expansion_limit

= 1000

## RT索引刷新周期

# rt_flush_period

= 900

默认

## 查询日志格式

## 可选项,可用值为plain、sphinxql,默认为plain。 # query_log_format ## MySQL版本设置

# mysql_version_string = 5.0.37

= sphinxql

## 插件目录 # plugin_dir

## 服务端默认字符集 # collation_server

## 服务端libc字符集 # collation_libc_locale ## 线程服务看守 # watchdog

## 兼容模式

# compat_sphinxql_magics

}

= /usr/local/sphinx/lib= utf8_general_ci

= ru_RU.UTF-8

= 1

= 1

本文来源:https://www.bwwdw.com/article/afjw.html

Top