Yii::import('ext.SphinxClient');
$sphinxapi = new SphinxClient();
$sphinxapi->SetServer('127.0.0.1', 9313);
$sphinxapi->SetConnectTimeout(3);
$sphinxapi->SetMatchMode(SPH_MATCH_BOOLEAN);
$sphinxapi->SetFilter('shop_area_id',$saId,false);
$sphinxapi->SetArrayResult(true);
$sphinxapi->SetGroupBy('shop_site_type', SPH_GROUPBY_ATTR,"@count desc");
$sphinxapi->SetLimits(0, 9999, 10000);
$result = $sphinxapi->Query('', 'main;delta');
unset($sphinxapi);
$sphinxapi = new SphinxClient();
$sphinxapi->SetServer('127.0.0.1', 9313);
$sphinxapi->SetConnectTimeout(3);
$sphinxapi->SetMatchMode(SPH_MATCH_BOOLEAN);
$sphinxapi->SetFilter('shop_area_id',$saId,false);
$sphinxapi->SetArrayResult(true);
$sphinxapi->SetGroupBy('shop_site_type', SPH_GROUPBY_ATTR,"@count desc");
$sphinxapi->SetLimits(0, 9999, 10000);
$result = $sphinxapi->Query('', 'main;delta');
unset($sphinxapi);
下面是详细说明:
//引用/protected/extensions/SphinxClient.php
Yii::import('ext.SphinxClient');
$sphinxapi = new SphinxClient();
// 设置searchd的主机名和TCP端口。此后的所有请求都使用新的主机和端口设置。默认的主机和端口分别是“localhost”和9312
$sphinxapi->SetServer('127.0.0.1', 9313);
// 设置连接超时时间,在与服务器连接时,如果超过这个时间没有连上就放弃;
//有了这个选项,就给客户端应用程序提供了一定的控制权,让它可以决定当searchd不可用的时候如何处理,而且可以避免脚本由于超过运行限制而运行失败(尤其是在PHP里)
$sphinxapi->SetConnectTimeout(3);
// 设置全文查询的匹配模式,见第 5.1 节 “匹配模式”中的描述。参数必须是一个与某个已知模式对应的常数。
/*
SPH_MATCH_ALL, 匹配所有查询词(默认模式);
SPH_MATCH_ANY, 匹配查询词中的任意一个;
SPH_MATCH_PHRASE, 将整个查询看作一个词组,要求按顺序完整匹配;
SPH_MATCH_BOOLEAN, 将查询看作一个布尔表达式 (参见 第 5.2 节 “布尔查询语法”);如:( cat -dog ) | ( cat -mouse) 使用了 AND OR NOT GROUP特殊运算符
SPH_MATCH_EXTENDED, 将查询看作一个CoreSeek/Sphinx内部查询语言的表达式 (参见 第 5.3 节 “扩展查询语法”). 从版本Coreseek 3/Sphinx 0.9.9开始, 这个选项被选项SPH_MATCH_EXTENDED2代替,它提供了更多功能和更佳的性能。保留这个选项是为了与遗留的旧代码兼容——这样即使Sphinx及其组件包括API升级的时候,旧的应用程序代码还能够继续工作。
SPH_MATCH_EXTENDED2, 使用第二版的“扩展匹配模式”对查询进行匹配.
SPH_MATCH_FULLSCAN, 强制使用下文所述的“完整扫描”模式来对查询进行匹配。注意,在此模式下,所有的查询词都被忽略,尽管过滤器、过滤器范围以及分组仍然起作用,但任何文本匹配都不会发生.
*/
$sphinxapi->SetMatchMode(SPH_MATCH_BOOLEAN);
/*