2019独角兽企业重金招聘Python工程师标准>>>

https://docs.aliyun.com/#/pub/opensearch 官方

class open_searchControl {protected $access_key = "xxxxxxxx";protected $secret = "xxxxxxxxxx";//杭州公网API地址:http://opensearch-cn-hangzhou.aliyuncs.com//北京公网API地址:http://opensearch-cn-beijing.aliyuncs.com (2015年4月初开放)protected $host = "http://opensearch-cn-hangzhou.aliyuncs.com";protected $key_type = "aliyun";  //固定值,不必修改protected $class_array = array('1'=>'美食','17'=>'休闲娱乐','33'=>'酒店','43'=>'丽人');
public function __construct() {require_once(BASE_DATA_PATH.DS.'api/opensearch/CloudsearchClient.php');require_once(BASE_DATA_PATH.DS.'api/opensearch/CloudsearchIndex.php');require_once(BASE_DATA_PATH.DS.'api/opensearch/CloudsearchSearch.php');require_once(BASE_DATA_PATH.DS.'api/opensearch/CloudsearchSuggest.php');parent::__construct();}/*** 阿里OpenSearch全文搜索* @param  [string] $keywords       [关键字]* @param  [string] $city_name      [城市名称]* @param  [float] $lnt             [纬度 必填]* @param  [float] $lat             [经度 必填]* @param  [int] $store_state       [1:默认 0,1 非必填]* @param  [int] $is_agree          [1:默认 0,1 非必填]* @param  [int] $order             [ 0:默认 0,1,2,3,4,5非必填]* @param  [string] $district_name  [区域名称 非必填]* @param  [int] $distance          [距离多少米 非必填]* @param  [int] $class_id          [顶级分类ID 非必填]* @param  [int] $class_sec_id      [二级分类ID 非必填]* @param  [int] $curpage           [当前页码 默认:1 非必填]* @param  [int] $page              [每页显示数量 默认:20 非必填]* @return [JSON]                   [JSON]* */
public function indexOp() {$opts = array('host'=>$this->host);// 实例化一个client 使用自己的accesskey和Secret替换相关变量$client = new CloudsearchClient($this->access_key,$this->secret,$opts,$this->key_type);$app_name = "agg";// 实例化一个应用类index_obj$index_obj = new CloudsearchIndex($app_name,$client);$result = $index_obj->createByTemplateName("builtin_novel");// 实例化一个搜索类 search_obj$search_obj = new CloudsearchSearch($client);// 指定一个应用用于搜索$search_obj->addIndex($app_name);//设置返回字段$search_obj->addFetchFields("store_name");$search_obj->addFetchFields("store_id");$search_obj->addFetchFields("store_avatar");$search_obj->addFetchFields("district_name");$search_obj->addFetchFields("city_name");$search_obj->addFetchFields("gc_parent_id");$search_obj->addFetchFields("per_consumption");$search_obj->addFetchFields("bid");//获取过滤参数 与 搜索关键字$city_name = isset($_REQUEST['city_name'])?htmlspecialchars($_REQUEST['city_name']):'合肥市';//$city_id = isset($_REQUEST['city_id'])?intval($_REQUEST['city_id']):310;$store_state = isset($_REQUEST['store_state'])?intval($_REQUEST['store_state']):1;$is_agree = isset($_REQUEST['is_agree'])?intval($_REQUEST['is_agree']):1;$lng = isset($_REQUEST['lng'])?$_REQUEST['lng']:'117.31992';$lat = isset($_REQUEST['lat'])?$_REQUEST['lat']:'31.85168';$order = isset($_REQUEST['order'])?intval($_REQUEST['order']):0;//$area_id = isset($_REQUEST['area_id'])?intval($_REQUEST['area_id']):0;$district_name = isset($_REQUEST['district_name'])?htmlspecialchars($_REQUEST['district_name']):'';$distance = isset($_REQUEST['distance'])?$_REQUEST['distance']:0;$class_id = isset($_REQUEST['class_id'])?intval($_REQUEST['class_id']):0;$sec_class_id = isset($_REQUEST['sec_class_id'])?intval($_REQUEST['sec_class_id']):0;$keywords = isset($_REQUEST['keywords'])?$_REQUEST['keywords']:'';$keywords = $keywords.' '.$city_name.' '.$district_name; $search_obj->setQueryString("default:'".$keywords."'");//设置搜索过滤$search_obj->addFilter('store_state='.$store_state);$search_obj->addFilter('is_agree='.$is_agree);$class_id && $search_obj->addFilter('gc_parent_id='.$class_id);$sec_class_id &&  $search_obj->addFilter('class_2='.$sec_class_id);//过滤距离$distance && $search_obj->addFilter('distance(lng,lat,"'.$lng.'", "'.$lat.'")>'.($distance/1000));//$search_obj->setPair("longtitude_in_query:".$lng.", latitude_in_query:".$lat."");//对搜索结果进行去重//dist_key:store_id,dist_count:1,dist_times:1,reserved:false&&kvpairs=duniqfield:store_id$search_obj->addDistinct('store_id','1','1','false');$search_obj->setPair('duniqfield:store_id');//$search_obj->addAggregate('store_id','count(store_id)',0,0,'count(store_id)');switch ($order) {case '1'://按创建时间倒序获取搜索结果$search_obj->addSort('distance(lng,lat,"'.$lng.'","'.$lat.'")','+'); //按照距离排序,没有这个不返回距离break;case '2':$search_obj->addSort('store_time','-');$search_obj->addSort('distance(lng,lat,"'.$lng.'","'.$lat.'")','+');break;case '3':$search_obj->addSort('distance(lng,lat,"'.$lng.'","'.$lat.'")','+');break;case '4':$search_obj->addSort('per_consumption','-');$search_obj->addSort('distance(lng,lat,"'.$lng.'","'.$lat.'")','+');break;case '5':$search_obj->addSort('per_consumption','+');$search_obj->addSort('distance(lng,lat,"'.$lng.'","'.$lat.'")','+');break;default:$search_obj->addSort('distance(lng,lat,"'.$lng.'","'.$lat.'")','+');break;}$curpage = (!empty($_REQUEST['curpage'])?$_REQUEST['curpage']:1); //当前第几页$hit = (!empty($_REQUEST['page'])?$_REQUEST['page']:20); //第页显示条数//设置结果偏移量$search_obj->setStartHit(($curpage-1)*$hit);//每页获取20条记录$search_obj->setHits($hit);// 指定返回的搜索结果的格式为json,fulljson,xml$search_obj->setFormat("fulljson");// 执行搜索,获取搜索结果$json = $search_obj->search();// 将json类型字符串解码$result = json_decode($json,true);$rt = array();$rt['status'] = $result['status'];$rt['request_id'] = $result['request_id'];$rt['result']['num'] = $result['result']['viewtotal'];$rt['result']['pagetotal'] = ceil($result['result']['viewtotal']/$hit);//$rt['result']['items'] = $result['result']['items'];foreach ($result['result']['items'] as $key => $value) {$rt['result']['items'][$key]['fields']['city_name'] =  $value['fields']['city_name'];$rt['result']['items'][$key]['fields']['goods_class'] =  $this->class_array[$value['fields']['gc_parent_id']];$rt['result']['items'][$key]['fields']['store_id'] = $value['fields']['store_id'];$rt['result']['items'][$key]['fields']['bid'] = $value['fields']['bid'];$rt['result']['items'][$key]['fields']['store_name'] = $value['fields']['store_name'];$rt['result']['items'][$key]['fields']['store_avatar'] = $value['fields']['store_avatar'];$rt['result']['items'][$key]['fields']['district_name'] = $value['fields']['district_name'];$rt['result']['items'][$key]['fields']['per_consumption'] = $value['fields']['per_consumption'];$rt['result']['items'][$key]['fields']['variableValue'] = $value['variableValue']['extinfo'][0];}if(count($rt['result']['items']) === 0){$rt['status'] = 'ERROR';$rt['msg'] = '暂无数据';}echo json_encode($rt);
}

结果如下:

转载于:https://my.oschina.net/sorenring/blog/519943

阿里云 OpenSearch 全文搜索相关推荐

  1. 打破行业壁垒!阿里云OpenSearch开启个性化搜索里程碑

    随着业务的高速发展,越来越多的客户对于搜索带来的实际转化和分发效率有了越来越高的要求.尤其在电商.资讯等行业,这一目标极其重要. 阿里云OpenSearch是面向全行业的搜索引擎解决方案,然而不同领域 ...

  2. 关于阿里云的图像搜索的创建和使用

    大家好哇,我又来了,这次我们来聊下关于阿里云的图像搜索功能的创建和使用. https://click.aliyun.com/m/1000371702/ 1.我们可以通过上面的链接进入到阿里云云产品免费 ...

  3. 阿里云盘资源搜索的网址

    为啥阿里云盘,还不就是因为百度网盘... 懂得都懂 下边是几个阿里云盘资源搜索的地址: 小纸条:https://u.gitcafe.net/ 优聚搜:https://v3.ujuso.com/ 找资源 ...

  4. 对接阿里云opensearch

    阿里云开通了opensearch的服务. 第一步:创建开放搜索应用 1.在开放搜索中创建一个模板,例如名称叫test 2.自定义结构(测试时可以选择现有模版) 3.添加数据表名和类型 注意这里要创建两 ...

  5. 阿里云开启多媒体搜索新时代,发布全域精准图像搜索

    摘要: 7月11日,阿里云宣布由阿里巴巴机器智能技术实验室打造图像搜索产品正式商用,开启了多媒体搜索的新时代,将图像搜索这个"贵族技术"变为"平民技术". 随着 ...

  6. 阿里云Elasticsearch让搜索上云像使用“水电”一样简单

    在刚结束的2023年阿里云 X Elastic中国用户峰会上,阿里云Elasticsearch宣布全面Serverless化,依靠6年来持续的产品体验创新,和云原生底座技术升级,向用户提供更简单.更稳 ...

  7. 分享几个阿里云盘资源搜索平台

    羊驼小站 (无需登录) http://xdys88.com.cn/ 奈斯搜索(需要登录) https://www.niceso.fun/ 阿里盘搜(无需登录) https://www.alipanso ...

  8. 收藏|2021年阿里云开源镜像站最热门镜像王全梳理(附下载链接和Top20镜像王排名)

    阿里云开源镜像站的初衷在于宣传自由软件的价值,提高大家的开发效率,帮助大家更快地进行应用创建. 全面.快速.稳定.可信 作为程序员肯定要和开源软件打交道,很多情况需要用到相关的代码库,而依赖和软件包的 ...

  9. 阿里云镜像站搜索功能,提供仓库软件包快速搜索下载

    OPSX镜像站支持centos,centos-altarch,centos-vault,debian,epel,fedora,opensuse,repoforge,ubuntu 9个仓库软件包的搜索. ...

最新文章

  1. IoU、GIoU、DIoU、CIoU损失函数
  2. 【k-means clustering】【一】基础算法
  3. CBM--组件化业务模型简介
  4. 2021Lazada开店入驻最新流程Lazada新店运营思路分享
  5. .net Framework各个版本之间的发展
  6. linux系统proc目录,快速了解Linux系统下的proc目录
  7. oracle课程小结,Oracle 数据库优化实战心得总结
  8. Error: EBUSY: resource busy or locked, lstat ‘D:\DumpStack.log.---基于Vue的uniapp手机端_前端UI_uview工作笔记004
  9. 智慧城市、智慧园区、智慧交通、行业经营看板、运行管理大屏、图表模板、公司经营看板、大屏可视化、BI可视化模板、智慧工厂、办公、能源、餐饮、校园、人力资源、行政、汽车、房地产、保险、医院、axure原型
  10. (1)数据库和MySql初步认识
  11. 教你使用Wine在Linux上运行Windows软件
  12. 《图解算法》学习之算法复杂度、运行时间
  13. 表单提交复选框(checkbox)注意事项
  14. 计算机无法创建新文件夹,无法创建文件,小编教你无法新建文件夹怎么办
  15. 计算机视觉在小机器人中应用,基于计算机视觉的车身焊接机器人路径校正装置的制造方法...
  16. js上传文件到OSS
  17. office 打开wps乱_Word 打开WPS文档成乱码的解决方法
  18. DotNetBar的使用—(Office2007界面风格)
  19. ai作诗——分享好用人工智能作诗工具
  20. shell脚本快速执行命令

热门文章

  1. 19岁穷困潦倒选择进入富士康,今年21岁我自动离职了……
  2. 使用python 处理表格生成图表_教你用Python自动读取数据生成图表,产生的效益很可观...
  3. 推荐一个可以查看火车座位的小程序
  4. 记录React之富文本编辑器
  5. Ansys非线性不收敛10大对策:让你有“迹”可循,有“法”可医
  6. 此计算机策略设置不允许安装win,Win10设置了系统策略禁止进行此安装怎么解决?...
  7. 文字,Logo到模型制作详解
  8. 对汉王电纸书的发展建议
  9. vue路由守卫实现登录状态管理
  10. “27”岁二次元爷爷走红,二次元与传统雕刻的完美融合。