一、下载地址
http://sphinxsearch.com/downloads/release/
下载后解压到,e:phptools/sphinx(根据你的情况安装).
将sphinx.conf.in拷贝重名到/bin/sphinx.conf
新建:e:phptools/sphinx/data 文件夹
新建:e:phptools/sphinx/log 文件夹
二、修改配置文件
source src1
{
#数据库信息
type = mysql
sql_host = localhost
sql_user = root
sql_pass = 123456
sql_db = test
sql_port = 3306
sql_query_pre = SET NAMES utf8
sql_query = SELECT aid, title,content,addtime FROM article
sql_attr_uint = aid
sql_attr_timestamp = addtime
}
index test1
{
source = src1
# 放索引的目录
path = e:phptools/sphinx/data/test1
docinfo = extern
charset_type = utf-8
min_prefix_len = 0
min_infix_len = 0
min_word_len = 1
# 简单分词,只支持0和1,如果要搜索中文,请指定为1
ngram_len = 1
# 需要分词的字符,如果要搜索中文,去掉前面的注释
ngram_chars = U+3000..U+2FA1F
# 指定utf-8的编码表
charset_table = 0..9, A..Z->a..z, _, a..z, U+410..U+42F->U+430..U+44F, U+430..U+44F
}
indexer
{
mem_limit = 32M
}
searchd
{
port = 3312
log =e:phptools/sphinx/log/searchd.log #新建的log目录
#query_log = e:phptools/sphinx/log/query.log #新建的log目录
read_timeout = 5
max_children = 30
pid_file = e:phptools/sphinx/log/searchd.pid #新建的log目录
max_matches = 1000
preopen_indexes = 0
unlink_old = 1
seamless_rotate = 0
}
三、给配置中所填的
数据表加数据
四、建立索引
E:\phptools\sphinx\bin>indexer.exe --config e:/phptools/sphinx/bin/sphinx.conf --all
五、查找
E:\phptools\sphinx\bin>searchd.exe test
六、php使用sphinx
1.启动sphinx服务:E:\phptools\sphinx\bin>searchd.exe
2.将E:\phptools\sphinx\share\doc\api\sphinxapi.php拷贝到apach下的网站目录,以供调用.
3.利用现有索引的简单示例
<?php
require 'sphinxapi.php';
$s = new SphinxClient();
$s->SetServer('127.0.0.1',9312); //服务器名,sphinx端口号
$result = $s->Query('test','test1'); //关键词,索引名(与配置文件里一致,为*时表示全部)
echo '<pre>';
var_dump($result);
echo '<pre>';
4.创建实时索引的示例
<?php
require 'sphinxapi.php';
$keyword='中文';
$sphinx=new SphinxClient();
$sphinx->SetServer("127.0.0.1",9312);
$sphinx->SetMatchMode(SPH_MATCH_ANY);
//$sphinx->setLimits(0,0); //偏移量
$result=$sphinx->query("$keyword","test1");
//echo "<pre>";
//print_r($result);
//echo "</pre>";
$ids=join(",",array_keys($result['matches']));
mysql_connect("localhost","root","123456");
mysql_select_db("test");
$sql="select * from article where aid in({$ids})";
mysql_query("set names utf8");
$rst=mysql_query($sql);
$opts=array(
"before_match"=>"<button style='font-weight:bold;color:#f00'>",
"after_match"=>"</button>"
);
while($row=mysql_fetch_assoc($rst)){
$rst2=$sphinx->buildExcerpts($row,"main",$keyword,$opts);
echo '<pre>';
var_dump($row);
echo '';
/* echo "第{$rst2[0]}篇贴子<br>";
echo "标题: {$rst2[1]}<br>";
echo "内容: {$rst2[2]}<br>";
echo "<hr>"; */
}
遇到的问题:
1.sphinx php连接失败 提示:connection to 127.0.0.1:9312 failed
原因:sphinx服务器没起来
解决:cmd 长度到E:\phptools\sphinx\bin 执行searchd.exe
E:\phptools\sphinx\bin>searchd.exe
2.使用参考http://www.sphinxsearch.org/sphinx-tutorial
3.出现问题着重思考配置文件的配置 是否正确。