建立索引RediSearch 通过提供一种简单且自动的方式在 Redis hash 类型数据结构上创建二级索引 , 并且内部极大地简化了这一过程 。(最终会出现更多数据结构)
文章插图
二级索引示意图
如果我们要使用 RediSearch 查询商品 hash 结构里的 goodsName 字段,那么必须要对该字段建立索引 。
Jedis 新建索引所以这里,我给大家介绍下在 newbee-mall-pro 项目中 , 是如何建立索引的,代码逻辑在 GoodsServiceImpl.syncRs() 方法中,
// 定义索引结构public boolean syncRs() {jedisSearch.dropIndex("idx:goods");Schema schema = new Schema().addSortableTextField("goodsName", 1.0).addSortableTextField("goodsIntro", 0.5).addSortableNumericField("goodsId").addSortableNumericField("goodsCategoryId").addSortableNumericField("goodsSellStatus").addSortableNumericField("sellingPrice").addSortableNumericField("originalPrice").addSortableTagField("tag", "|");jedisSearch.createIndex(Constants.GOODS_IDX_NAME, Constants.GOODS_IDX_PREFIX, schema);}
上述代码中,我们对商品 hash 结构里的下方字段都建立了索引 。- goodsName:文本类型,可排序,设置权重为 1.0
- goodsIntro:文本类型,可排序,设置权重为 0.5
- goodsId:数字类型,可排序
- goodsCategoryId:数字类型,可排序
- goodsSellStatus:数字类型 , 可排序
- sellingPrice:数字类型,可排序
- originalPrice:数字类型 , 可排序
- tag:标签类型,可排序,设置分隔符为字符串 |
并且还可以设置权重系数,表示该字段已加权 。这对于在搜索操作期间为特定字段分配不同的重要性级别非常有用 , 通常就是在条件筛选完成后的打分排序阶段用于提升或者降低排名 。
Redis 中的新建索引语法当我们把上面的 Jedis 新建索引的代码转换为 Redis 中的语法后,如下
> FT.CREATE idx:goods ON hash PREFIX 1 "newbeemall:goods:" SCHEMA goodsName TEXT SORTABLE WEIGHT 1.0 SCHEMA goodsIntro TEXT SORTABLE WEIGHT 0.5 goodsId NUMERIC SORTABLE goodsCategoryId NUMERIC SORTABLE goodsSellStatus NUMERIC SORTABLE sellingPrice NUMERIC SORTABLE originalPrice NUMERIC SORTABLE tag TAG SORTABLE SEPARATOR "|"
现在我给大家详细介绍下这条命令:- FT.CREATE:RediSearch 中索引创建语法 。
- idx:goods:指定索引名称,索引名称将在所有键名称中使用,因此请保持简短 。
- ON hash:指定索引关联的结构类型 。需要注意的是,在 RediSearch 2.0 中仅支持哈希结构,随着 RediSearch 更新 , 后续有望支持更多数据结构 。
- PREFIX 1 "newbeemall:goods:":指定索引的关联源数据的 key 前缀,可以指定多个前缀 。
- SCHEMA ...:字段定义,用于定义字段名称、类型、是否排序、权重等 。可以定义多个字段 。
https://redis.io/docs/interact/search-and-query/basic-constructs/schema-definitionRedis 中查询索引定义在 RediSearch 中要查询已经存在的索引详情也是很简单的,官方提供了 ft.info 索引名称 的语法,用来打印索引详情 。
> FT.INFO idx:goods
推荐阅读
- 搜索引擎优化中H1标签重要吗?介绍h1标签的主要功能
- 揭秘“双赢式”网络推广:搜索引擎优化与竞价排名的完美结合
- 为什么新做的网站搜索引擎不收录?
- 搜索引擎的工作原理,稳定网站自然排名
- 只要不触碰搜索引擎优化禁区,你的网站就不会被降权
- 什么是亚马逊自然搜索
- 选搜索引擎seo优化成本低回报高
- Redis大key有什么危害?如何排查和处理?
- 网站自然排名优化:提升搜索引擎排名,增加流量与转化!
- Redis五大经典业务问题剖析及解决方法