一、下载地址
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 = mysqlsql_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.出现问题着重思考配置文件的配置 是否正确。