zoukankan      html  css  js  c++  java
  • sphinx是支持结果聚类的——WHERE、ORDER BY和GROUP BY

    原生API提供的匹配筛选、排序和分组配置和SQL语法提供的WHERE、ORDER BY和GROUP BY语句的效果是一样的,你可以对匹配结果进行你需要的筛选、排序和分组匹配。例如,如果你要搜索MySQL中1990年代的书籍,并按照价格排序,可以这么写:

     
    1. $cl = new SphinxClient();
    2. $cl->SetFilterRange("year_published", 1990, 1999);
    3. $cl->SetSortMode(SPH_SORT_EXTENDED, "price DESC");
    4. $result = $cl->Query("mysql", "booksindex");

    上述代码不仅一目了然而且也展示了通用API的使用模式:首先创建一个客户端对象,配置所有查询设置,然后启动搜索并获取结果。当然,产品级的代码应当添加错误处理:

     
    1. $cl = new SphinxClient();
    2. $cl->SetFilterRange("year_published", 1990, 1999);
    3. $cl->SetSortMode(SPH_SORT_EXTENDED, "price DESC");
    4. $result = $cl->Query("mysql", "booksindex");
    5. if (!$result)
    6. {
    7. // oops, there was an error
    8. DisplayErrorPage($cl->GetLastError());
    9. } else
    10. {
    11. // everything was good
    12. DisplaySearchResult($result);
    13. }

    为了进一步完善,让我们也看看如何使用原生API来对年份来分组和计算数据:

     
    1. $cl = new SphinxClient();
    2. $cl->SetFilterRange("year_published", 1990, 1999);
    3. $cl->SetSortMode(SPH_SORT_EXTENDED, "price DESC");
    4. $cl->SetGroupBy("year_published", SPH_GROUPBY_ATTR);
    5. $cl->SetSelect("*, MIN(price) AS minprice,
    6. MAX(price) AS maxprice, AVG(price) AS avgprice");
    7. $result = $cl->Query("mysql", "booksindex");

    你会发现,当我们进一步地为查询添加更多的处理时,代码也开始越来越像SQL了。但我们用的是零散的接口而不是单一的表达式来构建查询的。

     

    摘自:https://www.zybuluo.com/lxjwlt/note/141406

  • 相关阅读:
    C#自定义控件在添加引用后不显示在工具箱的解决方法
    DevExpress中SearchLookUpEdit用法总结
    div(固定宽度和不固定宽度)居中显示的方法总结
    php面向对象学习笔记
    在php中使用Memcache
    memcache的安装及管理
    使用Quartz.NET cron-like表达式
    SQL CHECK 约束&Case when 的使用方法
    IP地址地区信息查询API接口调用方法
    ASP使用webRequest实现跨域请求
  • 原文地址:https://www.cnblogs.com/bonelee/p/6651290.html
Copyright © 2011-2022 走看看