溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么用TableStore GEO索引打造店鋪搜索系統

發布時間:2021-12-22 14:08:01 來源:億速云 閱讀:170 作者:iii 欄目:開發技術

本篇內容主要講解“怎么用TableStore GEO索引打造店鋪搜索系統”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“怎么用TableStore GEO索引打造店鋪搜索系統”吧!

一、方案背景

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

需求場景

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

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

基于表格存儲搭建的店鋪搜索系統頁面一覽,樣例內嵌在表格存儲控制臺中,用戶可登錄控制臺體驗系統(若為表格存儲的新用戶,需要點擊開通服務后體驗,開通免費,訂單數據存儲在公共實例中,體驗不消耗用戶存儲、流量、Cu)。

表格存儲(TableStore)方案

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

二、搭建準備

若您對于基于TableStore實現的【億量級店鋪搜索系統】體驗不錯,并希望開始自己系統的搭建之旅,只需按照如下步驟便可以著手搭建了:

1、開通表格存儲

通過控制臺開通表格存儲服務,表格存儲即開即用(后付費),采用按量付費方式,已為用戶提供足夠功能測試的免費額度。 表格存儲官網控制臺 、 免費額度說明 。

2、創建實例

通過控制臺創建表格存儲實例,選擇支持多元索引的Region。(當前階段SearchIndex功能尚未商業化,暫時開放北京,上海,杭州和深圳四地,其余地區將逐漸開放)

怎么用TableStore GEO索引打造店鋪搜索系統

創建實例后,提交工單申請多元索引功能邀測(商業化后默認打開,不使用不收費)。

  • 邀測地址: 提工單 ,選擇【表格存儲】>【產品功能、特性咨詢】>【創建工單】,申請內容如下:

  • 問題描述:請填寫【申請SearchIndex邀測】

  • 機密信息:請填寫【地域+實例名】,例:上海+myInstanceName

怎么用TableStore GEO索引打造店鋪搜索系統

3、SDK下載

使用具有多元索引(SearchIndex)的SDK, 官網地址 ,暫時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、表設計

店鋪檢索系統樣例,僅簡易使用一張店鋪表,主要包含字段:店鋪類型、店鋪名稱、店鋪地理位置、店鋪平均評分、人均消費消等。表設計如下:
表名:geo_positon

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

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

1、創建數據表

用戶僅需在完成邀測的實例下創建“店鋪信息表”:通過控制臺創建、管理數據表(用戶也可以通過SDK直接創建):

怎么用TableStore GEO索引打造店鋪搜索系統

2、創建數據表索引

TableStore自動做全量、增量的索引數據同步:用戶可以通過控制臺創建索引、管理索引(也可以通過SDK創建索引)

怎么用TableStore GEO索引打造店鋪搜索系統

怎么用TableStore GEO索引打造店鋪搜索系統

3、數據導入

插入測試數據(控制臺樣例中插入了1億條數據,用戶自己可以插入少量測試數據);

怎么用TableStore GEO索引打造店鋪搜索系統

店鋪編號店鋪(md5)(主鍵)類型店鋪名稱店鋪位置店鋪評分人均消費

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

4、數據讀取

數據讀取分為兩類:

主鍵讀取

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

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

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

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);

到此,相信大家對“怎么用TableStore GEO索引打造店鋪搜索系統”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女