方案实现

本文主要为您介绍如何使用表格存储搭建亿量级店铺搜索系统。

前提条件

已完成准备工作

步骤一: 创建数据表

通过控制台、命令行工具或者SDK方式创建一张店铺信息表。具体操作,请参见数据表操作

步骤二: 创建数据表索引

表格存储自动进行全量、增量的索引数据同步。您可以通过控制台、命令行工具或者SDK方式创建和管理多元索引。具体操作,请参见通过控制台使用多元索引、。

步骤三: 导入数据

控制台项目样例中插入了1亿条数据,您可以通过控制台插入少量测试数据。

店铺编号

店铺(md5)(主键)

类型

店铺名称

店铺位置

店铺评分

人均消费

o0057022192

0000000f470ef0ef0f0f548b925ceffela7e3

杭帮菜

韩村杭帮菜

36.76613,111.41461

2.87

63.67

步骤四: 读取数据

数据读取分为两类:

  • 主键读取

    基于原生表格存储的主键列获取。主键读取用于索引(自动)反查,您也可以提供主键(订单md5)的单条查询的页面,亿量级下查询速度极快。单主键查询方式不支持多维度检索。

  • 索引读取(店铺查询)

    基于SearchIndex功能Querysearch接口获取。您可以自由设计索引字段的多维度条件组合查询。通过设置选择不同的查询参数,构建不同的查询条件、不同排序方式;目前支持精确查询、范围查询、前缀查询、匹配查询、通配符查询、短语匹配查询、分词字符串查询,并通过布尔与、或组合。

    例如“36.76613,111.41461”周边1 km范围内的奶茶店,查询条件如下:

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

技术支持

表格存储为您提供专业的免费的技术咨询服务,欢迎通过钉钉加入相应交流群。

  • 为互联网应用、大数据、社交应用等开发者提供的最新技术交流群有36165029092(表格存储技术交流群-3)。

    说明

    表格存储用户群11789671(表格存储技术交流群)和23307953(表格存储技术交流群-2)已满,暂时无法加入。

    2e182faaf86c8352cb6fc99bd6371fb4.jpg

  • 为物联网和时序模型开发者提供的技术交流群有44327024(物联网存储 IoTstore 开发者交流群)。

    be4365aa89c9377dd75d4b52b60d7144.jpg