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

简介: 阿里云的开放搜索已经做得很完善了,现在阿里云集成了开放搜索,只要定义好表结构,上传数据,就会自动生成索引,马上就可以搜索了,简直可以做个搜索引擎了。一起来看看。阿里云开放搜索介绍及购买页首先,创建一个应用表结构很简单,就一个主键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值作为主键,这样就不会有重复的了。
相关实践学习
基于OpenSearch搭建高质量商品搜索服务
本场景主要介绍开放搜索(OpenSearch)打造独有的电商行业垂直解决方案,模板内置电商查询分析、排序表达式及行业算法能力,沉浸式体验更高性能和效果的智能搜索服务,助力企业在线业务智能增长。
相关文章
|
1月前
|
监控 网络协议 API
阿里云BssOpenAPI是一个基于阿里云开放API的服务
【2月更文挑战第24天】阿里云BssOpenAPI是一个基于阿里云开放API的服务
136 6
|
1月前
|
SQL 分布式计算 关系型数据库
阿里云E-MapReduce Trino专属集群外连引擎及权限控制踩坑实践
本文以云厂商售后技术支持的角度,从客户的需求出发,对于阿里云EMR-Trino集群的选型,外连多引擎的场景、Ldap以及Kerberos鉴权等问题进行了简要的实践和记录,模拟客户已有的业务场景,满足客户需求的同时对过程中的问题点进行解决、记录和分析,包括但不限于Mysql、ODPS、Hive connector的配置,Hive、Delta及Hudi等不同表格式读取的兼容,aws s3、阿里云 oss协议访问异常的解决等。
|
2月前
|
存储 人工智能 Cloud Native
阿里云瑶池数据库训练营权益:《玩转Lindorm》学习资料开放下载!
阿里云瑶池数据库训练营权益:《玩转Lindorm》学习资料开放下载!
|
2月前
|
存储 监控 安全
360 企业安全浏览器基于阿里云数据库 SelectDB 版内核 Apache Doris 的数据架构升级实践
为了提供更好的日志数据服务,360 企业安全浏览器设计了统一运维管理平台,并引入 Apache Doris 替代了 Elasticsearch,实现日志检索与报表分析架构的统一,同时依赖 Doris 优异性能,聚合分析效率呈数量级提升、存储成本下降 60%....为日志数据的可视化和价值发挥提供了坚实的基础。
360 企业安全浏览器基于阿里云数据库 SelectDB 版内核 Apache Doris 的数据架构升级实践
|
2月前
|
关系型数据库 分布式数据库 数据库
阿里云瑶池数据库训练营权益:PolarDB开发者大会主题资料开放下载!
阿里云瑶池数据库训练营权益:PolarDB开发者大会主题资料开放下载!
|
3月前
|
存储 数据库 Python
阿里云向量检索服务 | 全性能搜索方案
【1月更文挑战第13天】阿里云向量检索服务 | 全性能搜索方案
阿里云向量检索服务 | 全性能搜索方案
|
3月前
|
安全 机器人 数据安全/隐私保护
基于钉钉的阿里云管理实践(四)之续费充值
在阿里云资源的运营过程中,及时续费和充值是保障服务不中断的关键行动。借助钉钉及其集成的阿里云管理功能,用户可以方便地接收到续费通知,并完成充值过程。本教程将为您详细介绍从收到续费提醒信息到完成充值的全过程。
100 2
|
2月前
|
存储 数据可视化 数据管理
基于阿里云服务的数据平台架构实践
本文主要介绍基于阿里云大数据组件服务,对企业进行大数据平台建设的架构实践。
700 0
|
21天前
|
SQL 存储 API
阿里云实时计算Flink的产品化思考与实践【下】
本文整理自阿里云高级产品专家黄鹏程和阿里云技术专家陈婧敏在 FFA 2023 平台建设专场中的分享。
110192 10
阿里云实时计算Flink的产品化思考与实践【下】
|
3月前
|
域名解析 弹性计算 数据安全/隐私保护
阿里云ECS免费搭建WordPress个人博客网站
阿里云ECS免费搭建WordPress个人博客网站
451 2
阿里云ECS免费搭建WordPress个人博客网站

热门文章

最新文章