Php调用sphinx有2种方法:
1,调用api
2,安装sphinx扩展,添加sphinx.so模块
一般情况下,大多数都是选择第2种方法,安装扩展添加模块。
下面就直接介绍下Php的简单调用:
建立索引:
/usr/local/coreseek/bin/indexer --config /usr/local/coreseek/etc/sphinx.conf index1
不停服务下索引:
/usr/local/coreseek/bin/indexer --config /usr/local/coreseek/etc/sphinx.conf --all --rotate
启动索引服务,使PHP的客户端可用
/usr/local/coreseek/bin/searchd --config /usr/local/coreseek/etc/sphinx.conf
建立PHP测试文件
#先new一下
setServer("localhost", 9312);
#设置sphinx的主机名和端口
$sphinx->setMatchMode(SPH_MATCH_ANY);
#设置匹配模式,SPH_MATCH_ANY匹配查询中的任意一个;其他的有:SPH_MATCH_ALL,SPH_MATCH_PHRASE;SPH_MATCH_BOOLEAN,SPH_MATCH_EXTENDED
$sphinx->setMaxQueryTime(3);
#设置最大搜索时间为3秒
$result = $sphinx->query("test",$index1);
#在名为“index1”的全文索引中,搜索关键字为“test”的文档;注,sphinx里一条记录称为“文档”
print_r ($result);
#显示结果
?>
运行返回的数组,不是真正的想要的结果。因为sphinx全文索引里面的信息记录的不是完整的数据,只记录被分词后的数据,所以还要根据matches中的ID去mysql的表中取数据。
Sphinx的精髓是把全文搜索中的单词(包括中文),快速地过滤成其所在的ID,然后再用ID去mysql中准确定位数据。
如果直接用mysql在海量的文章中全文搜索一两个单词(包括中文),是件很麻烦的事,让sphinx来做这件事就会变得so easy!
明天接着介绍sphinx的工作原理,到底sphinx记录的是什么数据,一步步地来揭开sphinx神秘的面纱!