阿里云 OpenSearch 全文搜索下拉提示

class open_search_auto_downControl{
    protected $access_key = "xxxxxxx";
    protected $secret = "xxxxxxxxxxx";
    protected $app_name = "agg";
    protected $suggest_name = "agg";
    protected $host = "http://opensearch-cn-hangzhou.aliyuncs.com";
    protected $hits = 10;
    function __construct(){
        require_once(BASE_DATA_PATH.DS.‘api/opensearch/CloudsearchClient.php‘);
        require_once(BASE_DATA_PATH.DS.‘api/opensearch/CloudsearchSuggest.php‘);
        parent::__construct();
    }

   public function indexOp(){
   		$city_name = isset($_REQUEST[‘city_name‘]) ? trim($_REQUEST[‘city_name‘]) : "合肥市"; //城市当关键字限制输出内容
		$query = isset($_REQUEST[‘query‘]) ? trim($_REQUEST[‘query‘]) : ""; //参数
		$callback = isset($_REQUEST[‘callback‘]) ? trim($_REQUEST[‘callback‘]) : "";//跨域的jsonp回调函数

		$client = new CloudsearchClient($this->access_key, $this->secret, array("host" => $this->host), "aliyun");
		$suggest = new CloudsearchSuggest($client);

		$suggest->setIndexName($this->app_name);
		$suggest->setSuggestName($this->suggest_name);
		$suggest->setHits($this->hits);
		$suggest->setQuery($query);
		$items = array();
		try {
		    $result = json_decode($suggest->search(), true);
		  if (!isset($result[‘errors‘])) {
		    if (isset($result[‘suggestions‘]) && !empty($result[‘suggestions‘])) {
		      $items = $result[‘suggestions‘];
		    } else {
		      $items = array();
		    }
		  } else {
		      foreach ($result[‘errors‘] as $error) {
		      throw new Exception($error[‘message‘] . " request_id: " . $result[‘request_id‘],$error[‘code‘]);
		    }
		  }
		} catch (Exception $e) {
		    // Logging the error code and error message.
		}
		//exit(‘{"result":["abc200121","abcr","abqp","abc"],"status":"OK","request_id":"1444632092048420500631206","AliyunPermission":"AVAILABLE"}‘);
		if(count($items)>0)
		{
		    foreach ($items as $key => $value) {
		    $item[$key][‘label‘] = $value[‘suggestion‘];
		    }
		}
		else
		{
		    $item = array();
		}
		if (empty($callback)) {
		    echo json_encode($item);
		} else {
		    echo htmlspecialchars($callback) . "(".json_encode($item).");";
		}
   }
}
时间: 2024-07-31 14:30:30

阿里云 OpenSearch 全文搜索下拉提示的相关文章

史上最全的搜索下拉提示用户交互研究——读《An Eye-tracking Study of User Interactions with Query Auto Completion》

        搜索下拉提示(Query Auto Completion,简称QAC)现在几乎是每个搜索引擎必备的基本功能,作用是在用户在搜索框输入查询词的过程中,给用户展示一系列搜索查询query供用户选择,可以方便用户输入.缩短用户搜索时间.提高用户搜索体验.在这方面的研究已经有很多,如基于上下文.基于时间序列等预测query的热度.个性化排序等,但关于用户如何与搜索下拉提示(下文简称QAC)交互的研究目前还是一个空白. 微软的Katja Hofmann前几天(11.3-11.7)刚刚填补了

百度搜索下拉提示框实现

最近在做百度IFE前端技术学院的题,然后有一题就是模拟百度搜索智能提示.题目是开源的,稍后给出地址. 因为博主没学过后端啊,欲哭无泪,所以不能实现后端模糊搜索,那如果前端ajax纯粹请求一份同样的数据,效果就不好. 机智的博主直接把百度搜索api借来一下. 直接从开发者工具,监控网络,找到请求地址. 百度api: 我把api缩减了一下,删除了大部分暂时用不上的参数. https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su?wd=abc&json=

【阿里云产品公测】阿里云OpenSearch初次使用评测

作者:阿里云用户 bailimei 从一开始我就对opensearch非常陌生,这是我第一次接触它,本以为对我来说上手难度会比较大,看完帮助信息后我决定试用看看,经试用后我发现阿里云opensearch并没有想象中那么难上手.以下是我对opensearch以构造一个论坛类网站帖子搜索的简单评测:     一.创建应用: 1.填写应用基本信息: 图1 2.选择应用结构:系统内置资讯.小说.社区等多个典型场景的结构模板可选,可以根据自己的需要选择应用,非常方便.不过遗憾的是目前还没用提供wordpr

jQuery自动显示搜索下拉框

描述:当用选择查询时,根据输入的关键字动态从后台模糊查询,把结果异步显示在前端. jsp代码; <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <% String

基于jQuery的input输入框下拉提示层(自动邮箱后缀名)

基于jQuery的input输入框下拉提示层,方便用户输入邮箱时的提示信息,需要的朋友可以参考下 效果图 // JavaScript Document (function($){ $.fn.extend({ "changeTips":function(value){ value = $.extend({ divTip:"" },value) var $this = $(this); var indexLi = 0; //点击document隐藏下拉层 $(docum

搜索下拉框

学习的过程中总会遇到很多同类的问题,把这写常用的东西写出来供参考不错,今天开始做这件事.今天是实现的搜索下拉框,代码如下: 1 <!doctype html> 2 <html> 3 <head> 4 <meta charset="utf-8"> 5 <title>搜索下拉框</title> 6 <script src="http://cdn.bootcss.com/jquery/2.1.4/jque

jQuery 实现带下拉提示且自动填充的邮箱

<!-- 本文例子所引用的jQuery版本为 jQuery-1.8.3.min.js --> 本文用 jQuery 实现一个用户输入字符时出现能够提示邮箱后缀名的下拉菜单,并且在选择下拉菜单中的邮箱后缀名后可自动填充未完成的输入框,在做这个功能时候,我参考的是网易注册(http://reg.163.com/reg/reg.jsp?product=urs)中的邮箱栏目所实现的功能与效果.这个功能的目的是使用户在填写邮箱栏目的过程中,在带有邮箱后缀名的菜单的提示下,可以不需要完整输入自己的注册邮箱

angular的跨域(angular百度下拉提示模拟)和angular选项卡

1.angular中$http的服务: $http.get(url,{params:{参数}}).success().error(); $http.post(url,{params:{参数}}).success().error(); $http.jsonp(url,{params:{wd:'',cb:'JSON_CALLBACK'}}).success().error(); 注意jsonp中cb在angular中规定只能使用JSON_CALLBAC $watch(谁,做什么,false): 谁指

在基于阿里云服务器CentOS6.5下安装Subversion 1.6.5服务

最近阿里云搞了个1元免费提供云服务器的活动,偶心痒痒就申请了一个. 正好可以作为团队的SVN服务器了,下面就来部署SVN服务吧. 一.安装基础环境 apr-1.5.0.tar.gz apr-util-1.5.3.tar.gz pcre-8.35.tar.gz zlib-1.2.8.tar.gz subversion-1.5.6.tar.gz tar -xzvf apr-1.5.0.tar.gz cd apr-1.5.0 ./configure --prefix=/usr/local/apr ma