IT软件
当前位置 :首页工程软件IT软件

Windows下Sphinx的配置和使用示例(PHP)

来源: 作者: 时间:2011-10-16 点击:

1、Sphinx下载和安装

到官网下载Win32支持MySQL的版本,下载地址:http://sphinxsearch.com/downloads/release/,下载后解压在D:sphinx目录下。

在D:sphinx下新建一个data目录用来存放索引文件,并新建一个log目录存放日志文件,复制D:sphinxsphinx.conf.in到D:sphinxbinsphinx.conf(注意修改文件名)。

由于等下要配置建立指定数据库的索引,所以我们先导入测试数据库,测试数据库为D:sphinx下的example.sql,测试数据库名为test,导入即可。

2、修改配置

修改上一步中的D:sphinxbinsphinx.conf,下面列出需要修改的配置

type         = mysql # 数据源,我这里是mysql
sql_host    = localhost # 数据库服务器
sql_user    = root # 数据库用户名
sql_pass    = 123 # 数据库密码
sql_db      = test # 数据库
sql_port    = 3306 # 数据库端口
sql_query_pre   = SET NAMES utf8 # 去掉此行前面的注释,如果你的数据库是uft8编码的
index test1
{
# 放索引的目录
 path   = D:/sphinx/data/
# 编码
 charset_type  = utf-8
 #  指定utf-8的编码表
 charset_table  = 0..9, A..Z->a..z, _, a..z, U+410..U+42F->U+430..U+44F, U+430..U+44F
 # 简单分词,只支持0和1,如果要搜索中文,请指定为1
 ngram_len    = 1
# 需要分词的字符,如果要搜索中文,去掉前面的注释
 ngram_chars   = U+3000..U+2FA1F
}
# index test1stemmed : test1
# {
 # path   = @CONFDIR@/data/test1stemmed
 # morphology  = stem_en
# }

# 如果没有分布式索引,注释掉下面的内容

# index dist1
# {
 # 'distributed' index type MUST be specified
 # type    = distributed
 # local index to be searched
 # there can be many local indexes configured
 # local    = test1
 # local    = test1stemmed
 # remote agent
 # multiple remote agents may be specified
 # syntax is 'hostname:port:index1,[index2[,...]]
 # agent    = localhost:3313:remote1
 # agent    = localhost:3314:remote2,remote3
 # remote agent connection timeout, milliseconds
 # optional, default is 1000 ms, ie. 1 sec
 # agent_connect_timeout = 1000
 # remote agent query timeout, milliseconds
 # optional, default is 3000 ms, ie. 3 sec
 # agent_query_timeout  = 3000
# }
# 搜索服务需要修改的部分
searchd
{
 # 日志
 log         = D:/sphinx/log/searchd.log
 query_log = D:/sphinx/log/query.log
 # PID file, searchd process ID file name
 pid_file   = D:/sphinx/log/searchd.pid
 # windows下启动searchd服务一定要注释掉这个
 # seamless_rotate  = 1
}


3、建立索引并测试
在DOS下输入.indexer.exe –all即可建立索引了。
测试搜索test,输入.search.exe test,即可看到搜索结果了。


4、测试中文搜索
在documents表中的title或者content中加入中文字符(比如键入“测试中文”字符串),重新输入.indexer.exe –all建立索引,这时候如果在命令行中输入“.search.exe 中文”的话无结果,原因是windows命令行中的编码是gbk,所以没用。

我们可以在D:sphinxapi下新建一个foo.php的文件(即通过PHP的api接口,通过socket连接),注意utf-8编码,代码如下:

require 'sphinxapi.php';
$s = new SphinxClient();
$s->SetServer('localhost', 9312);
$result = $s->Query('中文');
var_dump($result);

启动Sphinx searchd服务,输入.searchd.exe即可启动searchd守护进程。
另开一个命令行窗口,运行foo.php脚本(当然也可以放在apache下在浏览器上运行),命令为php .foo.php,结果就搜出来了!

 

上一篇:
下一篇: 已经是最后一篇
最新评论共有 位网友发表了评论
发表评论
用户名: 密码: 游客发言不需要密码