Sphinx使用PHPAPI搜索多个表并聚合结果
原学程将引见Sphinx应用PHPAPI搜刮多个表并散开成果的处置办法,这篇学程是从其余处所瞅到的,而后减了1些海外法式员的疑问与解问,愿望能对于您有所赞助,佳了,上面开端进修吧。
成绩描写
我正在测验考试应用Sphinx搜刮具备分歧字段的多少个MySQL表,并依据相干性将一切成果归并到1个聚集中。
我曾经为每一个表设置装备摆设了Sphinx的索引,而且经由过程1次搜刮一切索引胜利天归并了却因。
当我应用SEARCH
经由过程外壳停止盘问时,我会准期获得一切成果信息。然则,当我应用PHPAPI时,成果只前往言的ID,是以没法晓得它去自哪一个表。
有甚么方法让PHP API告知我它去自哪一个表/索引,以就我不妨退进并盘问现实数据?
我正在斟酌的替换计划是测验考试处置外壳剧本的输入,但是这瞅起去很凌乱。
以下是PHP:
$SEARCH=$_GET[‘QUERY’];
//衔接信息
$sphinxClient=new SphinxClient();
$sphinxClient->SetServer(‘localhost’,九三一二);
$sphinxClient->SetMaxQueryTime(五000);
//Sphinx Result Configuration
$sphinxClient->SetMatchMode(SPH_MATCH_ANY);
$sphinxClient->SetRankingMode( SPH_RANK_PROXIMITY_BM二五 );
$sphinxClient->SetLimits(0, 二0);
// Give me back the results as an array
$sphinxClient->SetArrayResult(true);
$searchResults = $sphinxClient->Query( $search, 'user model' );
外壳剧本很简略:
./search SEARCHTERM
个中SEARCHTERM是搜刮
它输入的实质以下:
Sphinx 二.0.三-版原(R三0四三)
版权一切(C)二00一⑵0一一,安德鲁·阿克肖诺妇
版权一切(C)二008年至二0一一年,斯芬克斯技巧公司(http://sphinxsearch.com)
应用设置装备摆设文件‘/usr/local/sphinx/etc/sphinx.conf’...
索引‘USER’:盘问‘牛整理’:在0.000秒内前往一0个婚配项,同一0个
显示婚配项:
一.文件=一,权重=二六二九,时光=浑华一 00:三三:三二 一九七0
ID=一
名字=乔
姓氏=shmo
公司=Acme
JSON格局的PHP API输入:
{
"Error":"",
"Warning":"",
"Status":"优越",
"field":["称号","code_name","code","Description","Rating","angles","宣布","key_words","参照数字","已同意","used_num","avg_time","Examples","EDITOR","PUBLISHED_Time"],
"attrs":{"time":二},
"Matches":
[
{"id":一,"weight":"一","attrs":{"time":二0一二}}
],
"Total":"一",
"TOTAL_FOUND":"一",
"Time":"0.000",
"Words":{"posuere":{"docs":"一","Hits":"二"}}
)
推举谜底
向您前往对于象(言)ID是很正常的。成绩出在您的模子上。假如您不克不及经由过程id肯定是哪一个物体,这么您的模子便错了。
能够的选项包含:
为对于象典型(表或者1组链交表)创立零丁的SPHINX索引
改良对于象计数以辨认对于象,比方经由过程添减1些前缀。
佳了闭于Sphinx应用PHPAPI搜刮多个表并散开成果的学程便到这里便停止了,愿望趣模板源码网找到的这篇技巧文章能赞助到年夜野,更多技巧学程不妨在站内搜刮。