sphinx是支持结果聚类的——WHERE、ORDER BY和GROUP BY
支持 结果 by group order 聚类 where sphinx
2023-09-14 09:11:56 时间
原生API提供的匹配筛选、排序和分组配置和SQL语法提供的WHERE、ORDER BY和GROUP BY语句的效果是一样的,你可以对匹配结果进行你需要的筛选、排序和分组匹配。例如,如果你要搜索MySQL中1990年代的书籍,并按照价格排序,可以这么写:
$cl = new SphinxClient();
$cl->SetFilterRange("year_published", 1990, 1999);
$cl->SetSortMode(SPH_SORT_EXTENDED, "price DESC");
$result = $cl->Query("mysql", "booksindex");
上述代码不仅一目了然而且也展示了通用API的使用模式:首先创建一个客户端对象,配置所有查询设置,然后启动搜索并获取结果。当然,产品级的代码应当添加错误处理:
$cl = new SphinxClient();
$cl->SetFilterRange("year_published", 1990, 1999);
$cl->SetSortMode(SPH_SORT_EXTENDED, "price DESC");
$result = $cl->Query("mysql", "booksindex");
if (!$result)
{
// oops, there was an error
DisplayErrorPage($cl->GetLastError());
} else
{
// everything was good
DisplaySearchResult($result);
}
为了进一步完善,让我们也看看如何使用原生API来对年份来分组和计算数据:
$cl = new SphinxClient();
$cl->SetFilterRange("year_published", 1990, 1999);
$cl->SetSortMode(SPH_SORT_EXTENDED, "price DESC");
$cl->SetGroupBy("year_published", SPH_GROUPBY_ATTR);
$cl->SetSelect("*, MIN(price) AS minprice,
MAX(price) AS maxprice, AVG(price) AS avgprice");
$result = $cl->Query("mysql", "booksindex");
你会发现,当我们进一步地为查询添加更多的处理时,代码也开始越来越像SQL了。但我们用的是零散的接口而不是单一的表达式来构建查询的。
摘自:https://www.zybuluo.com/lxjwlt/note/141406
相关文章
- 织梦搜索结果增加dede:type、dede:arclist、dede:channelartlist、dede:tag、dede:php等标签支持
- js里各浏览器解析XML,支持IE、火狐、Chrome等
- zepto为什么不支持animate,报animate is not a function
- 让EasyDarwin只支持RTP over TCP传输
- 开源备份工具duplicity支持阿里云OSS后端存储
- Atitit SpringCache缓存使用 艾提拉 attilax总结 1. Spring的抽象已经做得够好了,适合于大多数场景,非常复杂的就需要自己AOP实现了。1 1.1. 设置配置文件支持
- webstorm中nodejs代码提示怎样解决Webstorm不支持nodejs等语法提示和补全
- 微搭低代码实战教学,图片支持多张上传
- 【OpenGL(SharpGL)】支持任意相机可平移缩放的轨迹球实现
- 机器学习——支持向量机SVM
- 鸿雁电器oa系统中决策支持模块效果
- Spring4.0支持Groovy配置
- 第一次肉眼可见的对C++20 Ranges的支持
- MFC向导更新:重新支持Typelib和ActiveX
- zeek使用——用于网络流量分析IDS,不知道用在tls1.3里是否支持?
- V4L2 获取设备支持的分辨率