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

本文涉及的产品
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
OpenSearch LLM智能问答版免费试用套餐,存储1GB首月+计算资源100CU
智能开放搜索 OpenSearch向量检索版,4核32GB 1个月
简介: 阿里云的开放搜索已经做得很完善了,现在阿里云集成了开放搜索,只要定义好表结构,上传数据,就会自动生成索引,马上就可以搜索了,简直可以做个搜索引擎了。一起来看看。阿里云开放搜索介绍及购买页首先,创建一个应用表结构很简单,就一个主键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)打造独有的电商行业垂直解决方案,模板内置电商查询分析、排序表达式及行业算法能力,沉浸式体验更高性能和效果的智能搜索服务,助力企业在线业务智能增长。
相关文章
|
5月前
|
算法 物联网 数据库
阿里云 OpenSearch RAG 应用实践
本文介绍了阿里云OpenSearch在过去一年中在RAG方面的应用和探索。
27187 3
阿里云 OpenSearch RAG 应用实践
|
2月前
|
SQL 机器学习/深度学习 自然语言处理
Text-to-SQL技术演进 - 阿里云OpenSearch-SQL在BIRD榜单夺冠方法剖析
本文主要介绍了阿里云OpenSearch在Text-to-SQL任务中的最新进展和技术细节。
|
3月前
|
存储 人工智能 搜索推荐
飞天大数据平台产品问题之阿里云OpenSearch的定义如何解决
飞天大数据平台产品问题之阿里云OpenSearch的定义如何解决
|
6月前
|
数据采集 SQL 自然语言处理
阿里云OpenSearch RAG混合检索Embedding模型荣获C-MTEB榜单第一
阿里云OpenSearch引擎通过Dense和Sparse混合检索技术,在中文Embedding模型C-MTEB榜单上拿到第一名,超越Baichuan和众多开源模型,尤其在Retrieval任务上大幅提升。
1327 4
|
算法 数据挖掘 开发工具
以阿里云OpenSearch为例谈向量检索技术选型
本文从向量检索应用场景、常见的向量检索方法、向量检索性能优化、功能性能对比介绍了向量检索的业务应用场景和技术选型方式。
3071 3
|
存储 SQL 机器学习/深度学习
OpenSearch大模型实践之Havenask篇
ChatGPT在通用任务上表现优秀,但无法解决众多垂直业务领域问题,这也不是ChatGPT模型本身的定位,而是需要通过其生态应用去解决。如何在垂直领域针对特定业务构建企业专属问答并且确保生成内容可控,是垂直领域面临的主要问题,也是从事行业搜索和问答的应用努力的方向。OpenSearch作为行业智能搜索产品,其使命就是去解决这一问题,我们正在做积极的探索。同时Havenask作为云产品OpenSearch和集团内引擎HA3的开源版本,也进行了尝试和探索。
OpenSearch大模型实践之Havenask篇
|
自然语言处理 搜索推荐 算法
阿里云OpenSearch重磅推出LLM问答式搜索产品,助力企业高效构建对话式搜索服务
OpenSearch推出LLM智能问答版,面向行业搜索场景,提供企业专属问答搜索服务,基于内置的LLM大模型提供问答能力,一站式快速搭建问答搜索系统。
11988 7
|
机器学习/深度学习 自然语言处理 运维
开放搜索电商行业模版驱动业务增长实践
阿里巴巴技术专家介绍如何通过开放搜索电商行业增强版,快速构建更高水准的搜索服务,带动业务指数级增长。
2105 0
开放搜索电商行业模版驱动业务增长实践
|
运维 自然语言处理 搜索推荐
新版本发布 | 开放搜索的统一召回引擎实践
阿里云开放搜索统一召回引擎,搜索召回环节同时支持阿里云自研Ha3引擎与阿里云Elasticsearch引擎,并提供多行业的搜索算法能力,助力企业高效实现搜索效果深度优化
970 0
新版本发布 | 开放搜索的统一召回引擎实践
|
存储 分布式计算 自然语言处理
基于MaxCompute+开放搜索的电商、零售行业搜索开发实践
搜索一直是电商行业流量来源的核心入口之一,如何搭建电商行业搜索并提升搜索效果,一直是电商行业开发者努力攻克的难题。基于传统数据库或开源引擎虽然能够搭建基础搜索服务,但随着商品数据的增多和业务流量的增长,难免会遇到性能瓶颈和效果瓶颈。另一方面,随着电商、直播、云计算等技术的不断发展,越来越多的传统零售企业正在进行互联网云上转型,特别是受近两年疫情等因素的影响,APP、小程序已经成为零售企业重要的业务增长来源。在此背景下,如何快速搭建高效搜索服务成为零售行业上云及转型的难题。
1201 0
基于MaxCompute+开放搜索的电商、零售行业搜索开发实践