Blaze 2018-12-15
一.创建 ;sphinx.conf文件
其结构组成主要如下 ;:
Source ;源名称1{ ;// ;指定数据源
一些配置
}
Index ;索引名称1{
Source= ;源名称1
}
Source ;源名称2{
一些配置
}
Index ;索引名称2{
Source= ;源名称2
}
Indexer{
mem_limit ;= ;32M
}
Searchd{ ;// ;配置searchd ;守护程序本身
}
二.Source ;源名称相关配置说明
Type= ;数据库类型(Mysql ;或SQL);
Sql_host=数据库主机地址 ;(如果是外网 ;,请确保防火墙允许链接 ;)
Sql_user=数据库用户名
Sql_pass=数据库密码
Sql_db=数据库名称
Sql_port=数据库端口
Sql_query_pre=执行 ;SQL前设置的编码 ;(SET ;NAMES ;UTF8/GBK)
#下面的语句是更新sph_counter表中的 ;max_doc_id。
sql_query_pre ;= ;REPLACE ;INTO ;sph_counter ;SELECT ;1, ;MAX(id) ;FROM ;document
Sql_query=全文检索要显示的内容 ;,据官方说法 ;:尽可能不要使用WHERE ;或 ;GROUPBY ;, ;将其交给 ;SPHINX ;效率会更高 ;;select ;出来的字段必须包含至少一个唯一主键, ;以及全文检索的字段
Sql_query_info=SELECT ;* ;FROM ;Inventory ;WHERE ;id=$id ;Strip_html=
0/1 ;是否去掉 ;HTML标签
Sql_attr_uint=无符号整数属性, ;可以设置多个 ;, ;设置数据库字段 ;, ;设置哪个能显示出哪个字段数据的整形来.
Sql_attr_float ;浮点型
Sql_attr_timestamp ;时间戳
Sql_attr_str2ordinal字符串型这个属性类型(简称为字串序数)的设计是为了允许按字符串值排序,但不存储字符串本身。
三.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)
//以下三句是关于UTF-8中文一元分词的配置
ngram_len=对于非字母型数据的长度切(1)
charset_table= ;0..9, ;A..Z->a..z, ;_, ;a..z,U+410..U+42F->U+430..U+44F, ;U+430..U+44F
ngram_len=1
ngram_chars=U+3000..U+2FA1F
四.searchd ;配置说明
port=sphinx ;的端口 ;(9312)
log=服务进程日志存放路径,一旦sphinx ;出现异常,基本上可以从这里查询有效信息
query_log=客户端查询日志尤为有用 ;它将在运行时显示每次搜索并显示结果
read_timeout=请求超时(5)
max_children=同时可执行的最大searchd ;进程数 ;(30)
pid_file=进程 ;ID ;文件
max_matches=查询结果的最大返回数
seamless_rotate=是否支持无缝切换,做增量索引时通常需要(0/1)
#至此 ;spninx.conf ;配置文件结束 ;; ;注意 ;: ;如果有换行 ;必须用反斜杠 ; ;链接
五.sphinx ;建立所以及监听
切换到 ;DOS<wbr/>sphinx/bin ;目录下
1.建立索引
Indexer ;–c ;sphinx.conf ;索引名称 ;/--all ;(--all ;参数是建立所有索引 ;)
完成后提示如下 ;:
total ;535600 ;docs, ;10707632 ;bytes
total ;34.323 ;sec, ;311958 ;bytes/sec, ;15604.27
docs/sec
total ;5 ;reads, ;0.282 ;sec, ;45592.6 ;kb/call ;avg, ;56.4
msec/call ;avg
total ;547 ;writes, ;12.172 ;sec, ;1017.0 ;kb/call ;avg,
22.2 ;msec/call ;avg
2.建立完成后
可以执行 ;search ;[–c] ;sphinx.conf ;搜索内容 ;(-c ;参数 ;: ;是否允许模糊搜索 ;)
3.监听端口
Searchd
运行后 ;提示
listening ;on ;all ;interfaces, ;port=9312
accepting ;connections
监听成功后既可以运行PHP程序进搜索
PHPCODE:
require("sphinxapi.php"); ;// ;加载类文件
$cl=new ;SphinxClient();// ;实例化类
$cl->SetServer('localhost',9312); ;// ;设置服务
$search->setSearch_start(($page-1) ;* ;$pageSize);//分页
$search->setSearch_limit($pageSize ;*1);
$cl->SetArrayResult(true); ;// ;设置 ;显示结果集方式
$cl->SetLimits(0,10); ;// ;同 ;sql ;语句中的 ;LIMIT
$cl->SetSortMode(“mode”);// ;排序模式 ;SPH_SORT_ATTR_DESC ;和 ;SPH_SORT_ATTR_ASC
$result=$cl->Query('ff',[索引名称可选]); ;// ;执行搜索,索引名称指的是下面例子中的member,
member_delta
Var_dump($result); ;// ;输出
例子:
source ;member
{
; ; ; ; ; ; ;type ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;= ;mysql
; ; ; ; ; ; ;sql_host ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;= ;localhost
; ; ; ; ; ; ;sql_user ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;= ;XXX
; ; ; ; ; ; ;sql_pass ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;= ;XXX
; ; ; ; ; ; ;sql_db ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;= ;XXX
; ; ; ; ; ; ;sql_port ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;= ;3306
; ; ; ; ; ; ;sql_query_pre ; ; ; ; ; ; ; ; ; ; ;= ;SET ;NAMES ;utf8
; ; ; ; ; ; ;sql_query_pre ; ; ; ; ; ; ; ; ; ; ;= ;SET ;SESSION ;query_cache_type=OFF
; ; ; ; ; ; ;sql_query ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;= ;
; ; ; ; ; ; ; ; ; ; ; ; ; ; ;SELECT ;members.uid ;as ;uid,members.username ;as ;username ;FROM ;members
; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;where ;member_status ;=1 ;and ;uid ;not ;in ;
; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;(SELECT ;distinct ;user_id ;FROM ;`fct_faction_member`)
}
source ;member_delta ;: ;member
{
; ; ; ; ; ; ;sql_query_pre ; ; ; ; ; ; ; ; ; ; ;= ;SET ;NAMES ;utf8
; ; ; ; ; ; ;sql_query_pre ; ; ; ; ; ; ; ; ; ; ;= ;SET ;SESSION ;query_cache_type=OFF
; ; ; ; ; ; ;sql_query ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;= ;
; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;SELECT ;members.uid ;as ;uid,members.username ;as ;username ;FROM ;members
; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;where ;member_status ;=1 ;and ;uid ;not ;in ;
; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;(SELECT ;distinct ;user_id ;FROM ;`fct_faction_member`)
}
index ;member
{
; ; ; ; ; ;source ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;= ;member
; ; ; ; ; ; ;path ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;= ;/data0/coreseek/var/data/member_test
; ; ; ; ; ; ;docinfo ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;= ;extern
; ; ; ; ; ; ;charset_dictpath ; ; ; ; ; ; ; ;= ;/usr/local/webserver/mmseg/etc/
; ; ; ; ; ; ;mlock ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;= ;0
; ; ; ; ; ; ;morphology ; ; ; ; ; ; ; ; ; ; ; ; ; ;= ;none
; ; ; ; ; ; ;min_word_len ; ; ; ; ; ; ; ; ; ; ; ;= ;1
; ; ; ; ; ; ;html_strip ; ; ; ; ; ; ; ; ; ; ; ; ; ;= ;0
; ; ; ; ; ; ;charset_type ; ; ; ; ; ; ; ; ; ; ; ;= ;zh_cn.utf-8
; ; ; ; ; ; ;ngram_len ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;= ;0
}
index ;member_delta
{
; ; ; ; ; ; ;source ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;= ;member_delta
; ; ; ; ; ; ;path ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;= ;/data0/coreseek/var/data/member_delta_test
; ; ; ; ; ; ;docinfo ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;= ;extern
; ; ; ; ;&