溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

怎么用TableStore GEO索引打造店鋪搜索系統(tǒng)

發(fā)布時(shí)間:2021-12-22 14:08:01 來(lái)源:億速云 閱讀:127 作者:iii 欄目:開(kāi)發(fā)技術(shù)

本篇內(nèi)容主要講解“怎么用TableStore GEO索引打造店鋪搜索系統(tǒng)”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“怎么用TableStore GEO索引打造店鋪搜索系統(tǒng)”吧!

一、方案背景

對(duì)于一套GEO管理系統(tǒng),其核心點(diǎn)與瓶頸在于數(shù)據(jù)庫(kù)的存儲(chǔ)性能與查詢能力;一方面,存儲(chǔ)服務(wù)需要應(yīng)對(duì)海量數(shù)據(jù)的低延遲存、讀,另一方面,存儲(chǔ)服務(wù)也要提供高效的GEO+多維度數(shù)據(jù)檢索。表格存儲(chǔ)(TableStore),作為一款Serverless分布式NoSQL數(shù)據(jù)庫(kù),完全具備該系統(tǒng)的需求。
下面我們將基于TableStore打造一個(gè)【億量級(jí)GEO管理系統(tǒng)】

需求場(chǎng)景

某店鋪搜索平臺(tái),提供了億量級(jí)的店鋪信息。用戶通過(guò)平臺(tái)提供的PC端、移動(dòng)端網(wǎng)頁(yè),按照自己的需求維度組合,搜索用戶心儀的店鋪。平臺(tái)需要在地圖上展示店鋪的具體位置、店鋪詳細(xì)信息、店鋪主頁(yè)的跳轉(zhuǎn);
維度一:【距離1km內(nèi)】【人均100以內(nèi)】【評(píng)分最高】【奶茶店】;
維度二:【杭州市內(nèi)】【評(píng)分最高的】【沈家*】店鋪;
......
實(shí)現(xiàn)快速、多維GEO查詢功能,是GEO管理解決方案的核心功能,樣例如下:
注:該樣例提供了【億量級(jí)】店鋪數(shù)據(jù)。官網(wǎng)控制臺(tái)樣例地址:項(xiàng)目樣例

怎么用TableStore GEO索引打造店鋪搜索系統(tǒng)cdn.com/c9ab5efa61a3e8747d513a849e6282fe422b8811.gif">

基于表格存儲(chǔ)搭建的店鋪搜索系統(tǒng)頁(yè)面一覽,樣例內(nèi)嵌在表格存儲(chǔ)控制臺(tái)中,用戶可登錄控制臺(tái)體驗(yàn)系統(tǒng)(若為表格存儲(chǔ)的新用戶,需要點(diǎn)擊開(kāi)通服務(wù)后體驗(yàn),開(kāi)通免費(fèi),訂單數(shù)據(jù)存儲(chǔ)在公共實(shí)例中,體驗(yàn)不消耗用戶存儲(chǔ)、流量、Cu)。

表格存儲(chǔ)(TableStore)方案

使用表格存儲(chǔ)(TableStore)研發(fā)的多元索引(SearchIndex)方案,可以輕松搭建一套:億量級(jí)店鋪搜索系統(tǒng)。多元索引功能可以創(chuàng)建GEO索引、分詞字符串索引等,為用戶提供了GEO檢索、多維組合檢索等能力,用戶可隨時(shí)創(chuàng)建,存量、增量數(shù)據(jù)自動(dòng)同步。
TableStore作為阿里云提供的一款全托管、零運(yùn)維的分布式NoSql型數(shù)據(jù)存儲(chǔ)服務(wù),具有【海量數(shù)據(jù)存儲(chǔ)】、【熱點(diǎn)數(shù)據(jù)自動(dòng)分片】、【海量數(shù)據(jù)多維檢索】等功能,有效的地解決了GEO數(shù)據(jù)量大膨脹這一挑戰(zhàn);
用戶可以僅在需要的時(shí)候創(chuàng)建、開(kāi)通索引。由TableStore來(lái)保證數(shù)據(jù)同步的一致性,這極大的降低了用戶的方案設(shè)計(jì)、服務(wù)運(yùn)維、代碼開(kāi)發(fā)等工作量。

二、搭建準(zhǔn)備

若您對(duì)于基于TableStore實(shí)現(xiàn)的【億量級(jí)店鋪搜索系統(tǒng)】體驗(yàn)不錯(cuò),并希望開(kāi)始自己系統(tǒng)的搭建之旅,只需按照如下步驟便可以著手搭建了:

1、開(kāi)通表格存儲(chǔ)

通過(guò)控制臺(tái)開(kāi)通表格存儲(chǔ)服務(wù),表格存儲(chǔ)即開(kāi)即用(后付費(fèi)),采用按量付費(fèi)方式,已為用戶提供足夠功能測(cè)試的免費(fèi)額度。 表格存儲(chǔ)官網(wǎng)控制臺(tái) 、 免費(fèi)額度說(shuō)明 。

2、創(chuàng)建實(shí)例

通過(guò)控制臺(tái)創(chuàng)建表格存儲(chǔ)實(shí)例,選擇支持多元索引的Region。(當(dāng)前階段SearchIndex功能尚未商業(yè)化,暫時(shí)開(kāi)放北京,上海,杭州和深圳四地,其余地區(qū)將逐漸開(kāi)放)

怎么用TableStore GEO索引打造店鋪搜索系統(tǒng)

創(chuàng)建實(shí)例后,提交工單申請(qǐng)多元索引功能邀測(cè)(商業(yè)化后默認(rèn)打開(kāi),不使用不收費(fèi))。

  • 邀測(cè)地址: 提工單 ,選擇【表格存儲(chǔ)】>【產(chǎn)品功能、特性咨詢】>【創(chuàng)建工單】,申請(qǐng)內(nèi)容如下:

  • 問(wèn)題描述:請(qǐng)?zhí)顚憽旧暾?qǐng)SearchIndex邀測(cè)】

  • 機(jī)密信息:請(qǐng)?zhí)顚憽镜赜?實(shí)例名】,例:上海+myInstanceName

怎么用TableStore GEO索引打造店鋪搜索系統(tǒng)

3、SDK下載

使用具有多元索引(SearchIndex)的SDK, 官網(wǎng)地址 ,暫時(shí)java、go、node.js三種SDK增加了新功能

java-SDK
<dependency>
    <groupId>com.aliyun.openservices</groupId>
    <artifactId>tablestore</artifactId>
    <version>4.7.4</version></dependency>
go-SDK
$ go get github.com/aliyun/aliyun-tablestore-go-sdk

4、表設(shè)計(jì)

店鋪檢索系統(tǒng)樣例,僅簡(jiǎn)易使用一張店鋪表,主要包含字段:店鋪類型、店鋪名稱、店鋪地理位置、店鋪平均評(píng)分、人均消費(fèi)消等。表設(shè)計(jì)如下:
表名:geo_positon

列名數(shù)據(jù)類型索引類型字段說(shuō)明
_id(主鍵列)String
MD5(pId)避免熱點(diǎn)
pIdStirng
店鋪編號(hào)
typeStringKEYWORD類型
nameStringTEXT店鋪名,TEXT類型索引可模糊查詢,但不能排序
posStringGEO_POINT店鋪位置:"30.132,120.082"(緯度,精度)
pointdoubleDOUBLE評(píng)分
............

三、開(kāi)始搭建(核心代碼)

1、創(chuàng)建數(shù)據(jù)表

用戶僅需在完成邀測(cè)的實(shí)例下創(chuàng)建“店鋪信息表”:通過(guò)控制臺(tái)創(chuàng)建、管理數(shù)據(jù)表(用戶也可以通過(guò)SDK直接創(chuàng)建):

怎么用TableStore GEO索引打造店鋪搜索系統(tǒng)

2、創(chuàng)建數(shù)據(jù)表索引

TableStore自動(dòng)做全量、增量的索引數(shù)據(jù)同步:用戶可以通過(guò)控制臺(tái)創(chuàng)建索引、管理索引(也可以通過(guò)SDK創(chuàng)建索引)

怎么用TableStore GEO索引打造店鋪搜索系統(tǒng)

怎么用TableStore GEO索引打造店鋪搜索系統(tǒng)

3、數(shù)據(jù)導(dǎo)入

插入測(cè)試數(shù)據(jù)(控制臺(tái)樣例中插入了1億條數(shù)據(jù),用戶自己可以插入少量測(cè)試數(shù)據(jù));

怎么用TableStore GEO索引打造店鋪搜索系統(tǒng)

店鋪編號(hào)店鋪(md5)(主鍵)類型店鋪名稱店鋪位置店鋪評(píng)分人均消費(fèi)

o00570221920000000f470ef0f548b925ceffe1a7e3杭幫菜韓村杭幫菜36.76613,111.414612.8763.67

4、數(shù)據(jù)讀取

數(shù)據(jù)讀取分為兩類:

主鍵讀取

基于原生表格存儲(chǔ)的主鍵列獲取:getRow, getRange, batchGetRow等。主鍵讀取用于索引(自動(dòng))反查,用戶也可以提供主鍵(訂單md5)的單條查詢的頁(yè)面,億量級(jí)下查詢速度極快。單主鍵查詢方式不支持多維度檢索;

索引讀?。ǖ赇伈樵儯?/h4>

基于新SearchIndex功能Query:search接口。用戶可以自由設(shè)計(jì)索引字段的多維度條件組合查詢。通過(guò)設(shè)置選擇不同的查詢參數(shù),構(gòu)建不同的查詢條件、不同排序方式;目前支持:精確查詢、范圍查詢、前綴查詢、匹配查詢、通配符查詢、短語(yǔ)匹配查詢、分詞字符串查詢,并通過(guò)布爾與、或組合。
如【"36.76613,111.41461"周邊1km米范圍內(nèi)的奶茶店】,查詢條件如下:

List<Query> mustQueries = new ArrayList<Query>();
TermQuery termQuery = new TermQuery();
termQuery.setFieldName("type");
termQuery.setTerm(ColumnValue.fromString(奶茶));
mustQueries.add(termQuery);
GeoDistanceQuery geoDistanceQuery = new GeoDistanceQuery();
geoDistanceQuery.setFieldName("pos");
geoDistanceQuery.setCenterPoint("36.76613,111.41461");
geoDistanceQuery.setDistanceInMeter(1000);
mustQueries.add(geoDistanceQuery);
BoolQuery boolQuery = new BoolQuery();
boolQuery.setMustQueries(mustQueries);

到此,相信大家對(duì)“怎么用TableStore GEO索引打造店鋪搜索系統(tǒng)”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI