java连接tablestore_详解TableStore模糊查询——以订单场景为例

本文通过订单场景详细介绍了TableStore如何实现模糊查询,包括手机号前缀匹配、通配符查询、产品名称模糊查询和商品型号的实时查询提示。TableStore的多元索引功能覆盖了传统SQL的前缀匹配和通配符匹配,提供了更高效、精细化的查询解决方案。
摘要由CSDN通过智能技术生成

背景

订单系统在各行各业中广泛应用,为消费者、商家后台、促销系统等第三方提供用户、产品、订单等多维度的管理和查询服务。

为了挖掘出海量订单数据的潜能,丰富高效的查询必不可少。然而很多时候并不能给出完整准确的查询关键字,例如,只知道收货人姓氏,或是产品名称部分关键字,或是根据收货人手机尾号找到订单,我们将这类查询归为“模糊查询”。

需求分析

订单系统,作为电商系统的“核心”,管理着订单状态、商品信息、用户信息、收货地址和支付信息,联动库存更新,为下游的仓库物流系统提供依据。在订单表设计时,需要记录上述所有信息。本文仅以海量订单管理查询为背景,摘选部分重要字段,管窥多元索引(SearchIndex)在模糊查询时的一些典型使用,整理如下:

手机号前缀匹配

覆盖SQL like语义,满足前缀匹配、后缀匹配和通配符匹配查询。

产品名称模糊查询

用户输入产品名称中部分关键字即可查出包含相关产品的订单。

商品型号的实时查询提示

只输入少量查询关键字就可召回尽可能多的匹配结果,可用于“电影名称”、“产品型号”等字段的实时查询提示。

传统解法

MySql和PostgreSQL等关系型DB支持like语法进行模糊查询,其本质就是用查询关键词去扫描并匹配每条记录的字符串内容,只适用于小规模地检索,数据规模大了以后性能非常差。

TableStore解法

表格存储(TableStore)引入多元索引(SearchIndex)功能后,完全覆盖传统SQL所支持的前缀匹配和通配符匹配,并且提供针对不同场景的精细化模糊查询功能,性能优异。本节将以电商订单为背景逐一讲解。

手机号前缀匹配

定义手机号字段consumerCell为KEYWORD类型,创建多元索引,用PrefixQuery即可对原始字段进行前缀匹配查询。例如,查询consumerCell字段以'135'开头的行,等价于SQL中子句consumerCell like '135%'。

核心代码

//创建索引

indexSchema.addFieldSchema(new FieldSchema(CONSUMER_CELL, FieldType.KEYWORD));

//查询

PrefixQuery prefixQuery = new PrefixQuery();

prefixQuery.setFieldName(CONSUMER_CELL);

prefixQuery

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值