sphinx安装使用教程及配置详解

sphinx有两种方法:

一种是php装扩展,

一种是调用sphinx服务


一、下载安装

官网下载 http://www.sphinxsearch.com,选择合适的版本

图片.png



下载后解压:tar -xzvf sphinx.tar.gz 

然后复制一份到息的目录。改名为sphinx




二、复制etc下面的sphinx.mini.conf.dist  为 sphinx.conf   可自己命名;

$ cp /sphinx/etc/sphinx-mini.conf.dist /sphinx/etc/sphinx.conf


编辑 sphinx.conf文件,配置源数据信息

vim /sphinx/etc/sphinx.conf

图片.png


三、创建数据目录

# mkdir -p /sphinx/var/data  /sphinx/var/log
# chmod 777 -R /var


四、再编辑配置文件 sphinx.conf,修改对应的文件存放目录

/sphinx/etc/sphinx.conf

图片.png


四、进入bin目录 生成索引文件

./indexer --config ../etc/test1.conf --all


图片.png


这样就可以了。


五、PHP调用


进入Sphinx安装目录,将$ sphinx/api/sphinxapi.php拷贝到ThinkPHP框架的extend 或Vendor目录中;
在ThinkPHP  调用

$sphinx = new \SphinxClient();
        $sphinx->SetServer('localhost',9312);
        //$sphinx->SetMatchMode(SPH_MATCH_ANY);
        $sphinx->SetArrayResult ( true );
        $res = $sphinx->Query($_GET['key'],'test1');
        echo '<pre>';
        print_r($res);



六、配置说明


ource 源名称1{                //指定数据源

一些配置

}

Index 索引名称1{

Source=源名称1

}

Source 源名称2{

一些配置

}

Index 索引名称2{

Source=源名称2

}

Indexer{

mem_limit = 32M

}

Searchd{                             //配置 searchd 守护程序本身

}


Source 源名称 相关配置说明

ype=数据库类型(Mysql 或SQL);

Sql_host=              数据库主机地址(如果是外网,请确保防火墙允许链接)

Sql_user=                     数据库用户名

Sql_pass=                     数据库密码

Sql_db=                 数据库名称

Sql_port=               数据库端口

Sql_query_pre=      执行SQL前设置的编码 (SET NAMES UTF8)

Sql_query=            全文检索要显示的内容,据官方说法:尽可能不要使用WHERE或GROUPBY ,将其交给SPHINX效率会更高;select 出来的字段必须包含至少一个唯一主键,以及全文检索的字段 sphinx 会对SELECT 中的 字段1 ,字段2 建立sphinx自己的索引 及 在查询的字段中查找关键字

1.Sql_query_info= SELECT * FROM Inventory WHERE id=$id  来查找匹配记录 在查询中,$id 被替换为 searchd 返回的每个主键 (调试是使用 建议注释此项)


Strip_html= 0/1      是否去掉HTML标签

Sql_attr_uint=         无符号整数属性,可以设置多个,设置数据库字段,设置哪个能显示出哪个字段数据的整形来.

Index中配置说明


Source=                 数据源名称

Path =                 索引记录存放目录,注:d:/sphinx/data/cg 这个的意思是 在data目录下创建一个名为cg的文件

min_word_len=      索引的词的最小长度 设为1 既可以搜索单个字节搜索,越小 索引越精确,但建立索引花费的时间越长

charset_type=        utf-8/gbk 设置数据编码

charset_table=        字符表和大小写转换规则 .频繁应用于sphinx的分词过程

min_prefix_len =    最小前缀(0)

min_infix_len =      最小中缀(1)

ngram_len =        对于非字母型数据的长度切割(默认已字符和数字切割,设置1为按没个字母切割)

searchd配置说明

port=                     sphinx的端口(9312 与 searchd.exe监听结果一致)

log=                      服务进程日志存放路径,一旦sphinx出现异常,基本上可以从这里查询有效信息

query_log=             客户端查询日志 尤为有用 它将在运行时显示每次搜索并显示结果

read_timeout=        请求超时(5)

max_children=        同时可执行的最大searchd 进程数(30)

pid_file=                进程ID文件

max_matches=              查询结果的最大返回数

seamless_rotate=    是否支持无缝切换,做增量索引时通常需要(0/1)

# 在启动运行时是否提前加载所有索引文件

preopen_indexes = 0

# 是否释放旧的索引文件
unlink_old = 1

# MVA跟新池大小(默认为1M)
mva_updates_pool = 1M

# 最大允许的网络包大小(默认8M)
max_packet_size = 8M

# 每个查询最大允许的过滤器数量(默认256)
max_filters = 256

#每个过滤器最大允许的值的个数(默认4096)
max_filter_values = 4096

# 每个组的最大查询数(默认为32)
max_batch_queries = 32

至此 spninx.conf 配置文件结束;注意:如果有换行 必须用反斜杠 链接

sphinx的管理命令:

1. 生成全部索引

/usr/local/sphinx/bin/indexer --config /usr/local/sphinx/etc/sphinx.conf –all

若此时searchd守护进程已经启动,那么需要加上—rotate参数:

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

2. 启动searchd守护进程

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

3. 生成主索引

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

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

4. 生成增量索引

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

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

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

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

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

6. 使用search命令在命令行对索引进行检索

/usr/local/sphinx/bin/search --config /usr/local/sphinx/etc/sphinx.conf


添加回复:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。