开发者社区> 2020元阿里云优惠券987432.cn> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

阿里云开放搜索实践,使用阿里云开放搜索来做网站站内搜索

简介: 阿里云的开放搜索已经做得很完善了,现在阿里云集成了开放搜索,只要定义好表结构,上传数据,就会自动生成索引,马上就可以搜索了,简直可以做个搜索引擎了。一起来看看。 阿里云开放搜索介绍及购买页 首先,创建一个应用 表结构很简单,就一个主键id,一个text字段msg 添加数据源,数据源可...
+关注继续查看

阿里云的开放搜索已经做得很完善了,现在阿里云集成了开放搜索,只要定义好表结构,上传数据,就会自动生成索引,马上就可以搜索了,简直可以做个搜索引擎了。一起来看看。


c4cebec8f97eb32cb284cc5bb64908bf7a167dd8

阿里云开放搜索介绍及购买页


首先,创建一个应用

490dbcf26b7917c442bf4def83af26edb972f27c


表结构很简单,就一个主键id,一个text字段msg

991f26a0adccffc4f8e01c7d6927422cbfb97537


添加数据源,数据源可以是RDS数据库,可以是json上传,也可以上传文件,这里是上传文件:

875272bf1403f74a4ca37330d75fb1639ad12cf4


文件格式是这样的,与表结构一致:

[

  {

    "fields": {

      "id": 124,

      "msg": "根据性jquery的对各种深度学习类型典利他型站点的调研而制定的一套具有一定扩展性jquery的结构化数据搜索方案,能覆盖该类型95%以上的数据属性,支持专属词表配置、排序公式定制,并提供良好的相关性、丰富的检索方式,以及多维度的过滤、排序及统计。用户可以通过选择模版的方式来节省定制工作量。"

    },

    "cmd": "ADD"

  },

  {

    "fields": {

      "id": 2,

      "msg": "搜索引擎是指根据一定的策略、运用特定的计算机程序从互联网上搜集信息,在对信息进行组织和处理后,为用户提供检索服务,将用户检索相关的信息展示给用户的系统。搜索引擎包括全文索引、目录索引、元搜索引擎、垂直搜索引擎、集合式搜索引擎、门户搜索引擎与免费链接列表等。百度和谷歌等是搜索引擎的代表。"

    },

    "cmd": "ADD"

  },

  {

    "fields": {

      "id": 3,

      "msg": "专业词典:用户可配置专属的专用词词典。同义词:用户自定义的同义词表,一般为行业同义词表。停用词配置:在系统停用词表外再配置专用的停用词表。禁用词配置:缺省启用系统过滤,用户可以添加自己的过滤词表,命中时屏蔽搜索结果。提供两种选项:Query过滤,即匹配后无结果;结果过滤,结果根据匹配情况过滤。"

    },

    "cmd": "ADD"

  },

  {

    "fields": {

      "id": 4,

      "msg": "广大中小企业都有各种结构化的数据需要进行检索,目前一般采用数据库本身提供的搜索功能或者利用open source的搜索软件搭建,这样的做法不但会消耗网站本身的资源,性能也会很容易成为问题,而且相关性通常也不够好。我们的产品的目的是要利用阿里云先进的云计算和搜索技术向广大中小企业提供低成本,高质量,高性能,可定制的数据搜索解决方案。本项目和云搜索的通用解决方案目标略有不同,主要区别为本项目主要针对用户的结构化数据进行搜索,云搜索的通用解决方案则主要是针对网页型数据位处理对象。"

    },

    "cmd": "ADD"

  },

  {

    "fields": {

      "id": 5,

      "msg": "专业词典:用户可配置专属的专用词词典。同义词:用户自定义的同义词表,一般为行业同义词表。停用词配置:在系统停用词表外再配置专用的停用词表。禁用词配置:缺省启用系统过滤,用户可以添加自己的过滤词表,命中时屏蔽搜索结果。提供两种选项:Query过滤,即匹配后无结果;结果过滤,结果根据匹配情况过滤。"

    },

    "cmd": "ADD"

  }

]


其中cmd表示是新增还是修改。
一上传就会创建索引了,如果数据量很大会慢一点。

然后点【搜索测试】,很快就出来结果了.
22ce6f4a9086f230bfb02c86a28eec041b1b9c28

接下来怎么在php或java里面调用呢? 

点【下载中心】,可以下载php或java版sdk
340ef5dad18f19d95f764695b26a91509cfe6f42

以php为例,下载后打开demo/config.inc.php,把自己的key、secret、app填进去
<?php
//引入头文件
require_once("../OpenSearch/Autoloader/Autoloader.php");
use OpenSearch\Client\OpenSearchClient;
 
//替换对应的access key id
$accessKeyId = '你的key';
//替换对应的access secret
$secret = '你的secret';
//替换为对应区域api访问地址,可参考应用控制台,基本信息中api地址
$endPoint = 'http://opensearch-cn-shanghai.aliyuncs.com';
//替换为应用名
$appName = '你的应用名';
//替换为下拉提示名称
$suggestName = '';
//开启调试模式
$options = array('debug' => true);
//创建OpenSearchClient客户端对象
$client = new OpenSearchClient($accessKeyId, $secret, $endPoint, $options);

可以把/demo/demo_search.php改为如下方式: 
<?php
header("Content-Type:text/html;charset=utf-8");
 
//搜索关键词
$q=$_REQUEST["q"];
 
 
//引用头部文件
require_once("Config.inc.php");
use OpenSearch\Client\SearchClient;
use OpenSearch\Util\SearchParamsBuilder;
// 实例化一个搜索类
$searchClient = new SearchClient($client);
// 实例化一个搜索参数类
$params = new SearchParamsBuilder();
//设置config子句的start值
$params->setStart(0);
//设置config子句的hit值
$params->setHits(20);
// 指定一个应用用于搜索
$params->setAppName('你的应用名');
// 指定搜索关键词
//$params->setQuery("default:'{$q}'");
$params->setQuery($q);
// 指定返回的搜索结果的格式为json
$params->setFormat("fulljson");
//添加排序字段
$params->addSort('RANK', SearchParamsBuilder::SORT_DECREASE);
// 执行搜索,获取搜索结果
$ret = $searchClient->execute($params->build())->result;
 
$ret = json_decode($ret,true);
//print_r($ret["result"]["items"]);
 
$msgs = array(); 
foreach($ret["result"]["items"] as $row){
$msgs[] = $row["fields"]["msg"];
}
 
// 将json类型字符串解码
 print_r($msgs);
 
 
//打印调试信息
//echo $ret->traceInfo->tracer;

然后在浏览器里跑一跑,秒出,感觉比阿里云平台上的测试程序快多了,事实上是0.00xx秒:
be1fde6ccdf82bbe2a4b5070b610b353ac2da6f7

如果希望显示得多一点,就把这里的片段长度改大点: 
75b0f4f461dbdd63ee3ceb331a94ee435d3cb724
如果添加的msg有重复的,那么搜索出来也会有重复的,为了解决这个问题,可以采用主键用literal类型,把msg取hash值作为主键,这样就不会有重复的了。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里云云计算acp认证考试考试时间、题型和分数都在这
阿里云云计算acp认证考试您听说过吗?如果您是互联网行业内的朋友,您一定知道大数据认证,也就是acp认证,目前这个认证的认可度非常高,得到这个证书,可以获得更好的工作机会,也能获得更高的薪资哦。快来看看这个证书到底是什么吧,小编这就给大家介绍一下这个证书的考试时间和分数线。您如果想轻松通过考试,可以向认证大使要一下复习资料哦,快来咨询吧。
369 0
阿里云服务器开放全部端口给所有IP使用教程
阿里云服务器端口全部开放教程,阿里云端口在安全组中设置,默认只开放22和3389端口,全部开放端口-1/-1,授权给所有IP地址0.0.0.0/0
1906 0
云原生新边界——阿里云边缘计算云原生落地实践
日前,在由全球分布式云联盟主办的“Distributed Cloud | 2021 全球分布式云大会·云原生论坛”上,阿里云高级技术专家黄玉奇发表了题为《云原生新边界:阿里云边缘计算云原生落地实践》的主题演讲。
1274 0
再出王牌:阿里云 Jindo DistCp 全面开放使用,成为阿里云数据迁移利器
此前 Jindo DistCp 仅限于E-MapReduce产品内部使用,此次全方位面向整个阿里云OSS/HDFS用户放开,并提供官方维护和支持技术,欢迎广大用户集成和使用。
2016 0
开放下载,多场景多实战《阿里云AIoT造物秘籍》,值得收藏!
万物智联的时代,智能家居物联网设备越来越受欢迎、医疗保健行业的大幅增长、人工智能和物联网的结合增强,开发者如何才能快速入门阿里云AIoT设备端接入?
59387 0
如何有效节省阿里云视频点播的使用成本
背景       视频,现在已经成为人们越来越喜欢的交流和沟通方式,各种点播、直播平台、短视频APP层出不穷,吸引了大量的用户群体,而对于视频行业来说,存储和分发是需要考虑的核心部分。如何保证视频存储的可靠性和安全性,视频分发的速度以及稳定性,是每一个视频行业的用户需要考虑的问题。
5765 0
阿里云函数计算命令行工具fcli怎么使用?
这里主要介绍如何通fcli命令行来做一个简单的例子,同时把使用过程中碰到的一些注意事项也一一讲解出来。 首先,通过阿里云的官网获取到fcli的下载地址(https://github.com/aliyun/fcli/releases),然后把这个压缩包进行解压,解压之后会生成一个命令行。
1254 0
阿里云发布边缘节点服务2.0,建立“融合、开放、联动”的边缘计算新形态
“5G时代,边缘计算将发挥更大价值。”阿里云边缘计算技术负责人杨敬宇表示,边缘计算作为5G时代的一项关键技术,未来将成为不可或缺的基础设施之一。那么云的能力是如何深入每个计算场景的?用户如何享受技术红利?阿里云ENS从1.0到2.0时代又完成了怎样的升级蜕变?在刚刚落幕的阿里云峰会北京站-边缘计算专场中,杨敬宇对以上问题做了解答。
4517 0
阿里云Kubernetes稳定性最佳实践
Kubernetes很酷,让我们的机器的资源利用率和运维效率都得到了提升。然而,要想用好Kubernetes,还是有些东西要注意的,否则可能会给自己带来一些小麻烦。在生产环境里,如何保证我们的应用能稳定可靠的运行在Kubernetes里呢?这篇文章将分享在阿里云容器服务上使用Kubernetes的一些有用的tips。
10521 0
阿里云MTS首次全线降价,七折优惠尽享高效转码体验
媒体转码(ApsaraVideo for Media Transcoding)是为多媒体数据提供的转码计算服务,它以经济、弹性和高可扩展的音视频转换方法,将多媒体数据转码成适合在PC、TV以及移动终端上播放的格式,适用于音视频网站、在线教育、金融视频、电商视频等多种场景。
2058 0
+关注
2020元阿里云优惠券987432.cn
最新阿里云2020带金,券:https://www.aliyun.com/minisite/goods?userCode=se6p9xeg
38
文章
18
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载