1. 数值字段(NUMERIC)

  • 用途:存储整数或浮点数,可进行范围查询与排序。

  • 选项

    • SORTABLE:允许用 SORTBY 排序
    • NOINDEX:不参与索引,仅供返回

定义语法

FT.CREATE idx ON HASH PREFIX 1 prod:
SCHEMAprice   NUMERIC [SORTABLE] [NOINDEX]

查询示例

# 查找 price 在 200 到 300 之间的文档
FT.SEARCH idx "@price:[200 300]"# 开区间
FT.SEARCH idx "@price:[(100 (200]"# 上下界省略表示 ±∞
FT.SEARCH idx "@price:[500 +inf]"

2. 地理坐标字段(GEO)

  • 用途:存储经纬度(lon,lat),支持半径范围检索。

  • 选项

    • SORTABLE:允许排序
    • NOINDEX:仅供返回,不参与检索

定义语法

FT.CREATE idx ON HASH PREFIX 1 city:
SCHEMAcoords  GEO [SORTABLE] [NOINDEX]

查询示例

# 查找距离 (2.34,48.86) 1000 公里内的城市
FT.SEARCH idx "@coords:[2.34 48.86 1000 km]"

更多地理形状(Geoshape)请见下节。

3. 地理形状字段(GEOSHAPE)

  • 用途:存储点、线、面等几何体,支持点在形状内、形状相交等高级空间查询。

  • 坐标类型

    • SPHERICAL(默认):地球球面坐标
    • FLAT:平面笛卡尔坐标
  • 选项

    • NOINDEX:仅供返回

定义语法

FT.CREATE idx ON HASH PREFIX 1 region:
SCHEMAarea   GEOSHAPE [FLAT|SPHERICAL] [NOINDEX]

查询示例

# 找出包含点 (2,2) 的几何体(需 DIALECT 2)
FT.SEARCH idx "(@area:[CONTAINS $pt])" PARAMS 2 pt "POINT (2 2)" RETURN 1 nameDIALECT 2

4. 向量字段(VECTOR)

  • 用途:存储机器学习生成的浮点向量,支持 KNN 相似度检索。

  • 算法

    • FLAT:暴力搜索
    • HNSW:小世界图
  • 必选属性

    • TYPE:数据类型,如 FLOAT32
    • DIM:向量维度
    • DISTANCE_METRICL2IP(内积)等
  • 可选属性(视算法而定):如 M, EF_CONSTRUCTION(HNSW)等

定义语法

FT.CREATE idx ON HASH PREFIX 1 vec:
SCHEMAembedding VECTOR FLAT 6TYPE FLOAT32 DIM 128 DISTANCE_METRIC L2
  • 这里 6 表示后面跟了 6 个属性:TYPEFLOAT32DIM128DISTANCE_METRICL2

5. 标签字段(TAG)

  • 用途:存储有限离散值,如类别、状态码等,按完整值匹配,无分词。

  • 选项

    • SEPARATOR <char>:自定义多值分隔符(默认 ,
    • CASESENSITIVE:大小写敏感(默认不敏感)
    • SORTABLE:支持排序
    • NOINDEX:不参与索引

定义语法

FT.CREATE idx ON HASH PREFIX 1 doc:
SCHEMAtags  TAG [SEPARATOR "|" ] [CASESENSITIVE] [SORTABLE]

查询示例

# 查找包含标签 blue 的文档
FT.SEARCH idx "@tags:{blue}"

6. 文本字段(TEXT)

  • 用途:全文检索,分词、词干提取,支持权重与排序。

  • 选项

    • WEIGHT <float>:字段相关度权重(默认 1.0)
    • NOSTEM:关闭词干提取
    • PHONETIC <matcher>:启用双音素搜索(dm:en 等)
    • SORTABLE:支持排序
    • NOINDEX:不参与索引,仅供返回
    • WITHSUFFIXTRIE:为后缀/通配查询构建后缀树

定义语法

FT.CREATE idx ON HASH PREFIX 1 blog:
SCHEMAtitle     TEXT [WEIGHT 2.0] [SORTABLE]content   TEXT NOSTEMemail     TEXT PHONETIC dm:en

查询示例

# 任意文本字段中搜索 wizard
FT.SEARCH idx "wizard"# 仅在 title 搜索 dogs
FT.SEARCH idx "@title:dogs"

7. Unicode 注意事项

  • RediSearch 仅支持 BMP(U+0000–U+FFFF)字符;超出此范围的字符(如部分 Emoji)不能用于前缀/后缀/通配或模糊查询。
  • 示例:对 😀😁🙂 等字符的前缀查询无效。

八、最佳实践

  1. 字段选型:根据业务场景选择合适类型,避免全部用 TEXT 导致索引膨胀。
  2. 索引与存储分离:对只需返回但不检索的字段使用 NOINDEX,节省内存。
  3. 排序字段:仅对必要字段加 SORTABLE,过多 sortable 将增加内存开销。
  4. 权重调整:对标题或关键字段使用 WEIGHT 提升相关度。
  5. 合理分隔:TAG 多值字段尽量指定 SEPARATOR,避免与默认逗号冲突。

通过以上示例与说明,你已掌握 RediSearch 的所有字段类型及其关键配置选项。结合业务需求和数据特点,灵活调整 Schema,既可实现强大的搜索功能,又能最大限度地优化内存与查询性能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/87381.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/87381.shtml
英文地址,请注明出处:http://en.pswp.cn/bicheng/87381.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PHP Yii2 安装SQL Server扩展-MAC M4 Pro芯片

MAC M4 Pro芯片版本&#xff0c;千锤百炼编译十几次终于成功 # 设置基础镜像并强制使用 x86_64 架构&#xff08;适配 M4 芯片&#xff09; FROM --platformlinux/amd64 php:8.1-fpm-alpine3.18WORKDIR /var/www/html# 可选&#xff1a;设置时区 ARG TZAsia/Shanghai ENV TZ${…

HTML初学者第二天

<1>HTML的语法规范 1.1标签 -双标签&#xff1a;如 <html></html> 前面的叫开始标签&#xff0c;后面的叫结束标签。 -单标签&#xff1a;如 <br /> 1.2基本语法概述 -HTML标签是由尖括号包围的关键词&#xff0c;例如<html>。 -HTML标…

【加解密与C】HASH系列(二) SHA

SHA&#xff08;安全散列算法&#xff09;简介 SHA&#xff08;Secure Hash Algorithm&#xff09;是由美国国家安全局&#xff08;NSA&#xff09;设计的一系列密码散列函数&#xff0c;用于将任意长度的数据转换为固定长度的散列值。SHA家族包括SHA-1、SHA-2&#xff08;含S…

【Python】进阶 - 数据结构与算法

系列篇章&#x1f389; No.文章1【Python】基础知识&#xff08;详细&#xff09;&#x1f680;2【Python】基础 - 循环、容器类型&#x1f680;3【Python】基础 - 推导式、函数&#x1f680;4【Python】基础 - 文件、异常、模块&#x1f680;5【Python】进阶 - 面向对象&…

【如何实现分布式压测中间件】

分布式压测中间件的原理及其实现 原理全链路追踪框架&#xff08;Trace&#xff09;MQ中间件数据库分布式缓存中间件&#xff08;Redis&#xff09;分库分表中间件 原理 通过大量阅读中间件源码&#xff0c;开源社区调研&#xff0c;得到设计原理&#xff1a; &#xff08;1&a…

Qt进程间保活方案:详解如何实现进程间通信与自动保活机制

目录 摘要 一、进程间保活的基本原理 二、具体步骤及代码示例 三、常见问题与优化 四、总体方案 摘要 在一些需要长时间运行的应用程序中&#xff0c;确保进程在意外退出时能够自动重启是一项非常重要的任务。尤其是在嵌入式开发、后台服务以及需要高可用性的场景下&#x…

Python-内置数据结构-list-tuple-bubble-字符串-bytes-bytesarray-切片-学习笔记

欠4年前自己的一份笔记&#xff0c;献给今后的自己。 分类 数值型 int、float、complex、bool 序列对象 字符串 str 列表 list tuple 键值对 集合set 字典dict 数值型 int、float、complex、bool都是class&#x…

利用事务钩子函数解决业务异步发送问题

利用事务钩子函数解决业务异步发送问题 一、问题背景二、实现方案1、生产者代码2、消费者代码 三、测试与验证1、未开启事务场景2、开启事务场景 四、项目结构及源码 一、问题背景 在某项业务中&#xff0c;需要在事务完成后&#xff0c;写入日志到某数据库中。需要要么都成功&…

uniapp选择相册

概述 一款针对Android平台下的图片选择器&#xff0c;支持从相册获取图片、视频、音频&拍照&#xff0c;支持裁剪(单图or多图裁剪)、压缩、主题自定义配置等功能&#xff0c;支持动态获取权限&适配Android 5.0系统的开源图片选择框架。 支持Uniapp和Uniapp X下的Vue2、…

MAC 多应用切换技巧,单应用切换技巧

在 Mac 上&#xff0c;有几种快捷键可以帮助你快速切换应用程序窗口&#xff1a; 1. Command (⌘) Tab - 这是最常用的快捷键&#xff0c;用于在打开的应用程序之间进行循环切换。按住 Command 键不放&#xff0c;然后反复按下 Tab 键可以选择下一个应用程序。当你松开 Comm…

SpringBoot+本地部署大模型实现知识库功能

SpringBoot本地部署大模型实现RAG知识库功能 1、Linux系统部署本地大模型1.1 安装ollama1.2 启动ollama1.3 下载deepseek模型 2、Springboot代码调用本地模型实现基础问答功能3、集成向量数据库4、知识库数据喂取5、最终实现RAG知识库功能 1、Linux系统部署本地大模型 1.1 安装…

嵌入式原理与应用篇---ARM

ARM 架构的 STM32 系列微控制器广泛应用于嵌入式系统开发&#xff0c;理解其汇编语言指令对于优化性能、访问硬件底层非常重要。下面详细解释常见的 ARM 汇编指令及其使用实例。 数据处理指令 1. MOV&#xff08;移动&#xff09; 功能&#xff1a;将立即数或寄存器值复制到…

【RHCSA-Linux考试题目笔记(自用)】servera的题目

一、开始 1、启动rhcsa环境 2、点击题目&#xff0c;看题 3、通过控制器来启动所有虚拟机 控制器 打开后点start&#xff0c;然后ok 之后进入一个有classroom、servera、serverb&#xff08;考试不一定叫这些名&#xff0c;但大差不差&#xff09;什么之类的界面&#xff0c;…

SpringBoot项目使用arthas-tunnel-server

参考官网Arthas Spring Boot Starter | arthas Spring Boot系列之使用Arthas Tunnel Server 进行远程调试实践-腾讯云开发者社区-腾讯云 springBoot项目, 增加maven依赖 <dependency><groupId>com.taobao.arthas</groupId><artifactId>arthas-sprin…

Modbus TCP 进阶:基于以太网的远程设备控制(二)

基于 Modbus TCP 的远程设备控制实战 &#xff08;一&#xff09;硬件与网络搭建实操 1. 设备选型与连接 在工业现场&#xff0c;根据远程控制需求进行设备选型至关重要 。对于传感器&#xff0c;若要监测温度&#xff0c;可选择高精度的热电偶传感器&#xff0c;如 K 型热电…

分库分表之实战-sharding-JDBC

大家好&#xff0c;我是工藤学编程 &#x1f989;一个正在努力学习的小博主&#xff0c;期待你的关注实战代码系列最新文章&#x1f609;C实现图书管理系统&#xff08;Qt C GUI界面版&#xff09;SpringBoot实战系列&#x1f437;【SpringBoot实战系列】Sharding-Jdbc实现分库…

httpcore-nio引起的线程、fd泄露问题

依赖来源&#xff1a;httpasyncclient-4.1.4.jar 现象 程序报错too many open files 线程数飙升、句柄数飙升 thread dump显示大量 "I/O dispatcher 7215" #9102 prio5 os_prio0 tid0x00002b7ba036a800 nid0x6f24 runnable [0x00002b7d98d41000]java.lang.Thread.…

多线程生产者消费者模型实战案例

多线程生产者消费者模型实战案例 前言业务场景术前准备无锁无事务有事务 synchronized事务在锁外事务在锁内 数据库行锁什么是数据库行锁有事务没有事务 乐观锁ReentrantLock分布式锁 前言 曾经一直有一个疑惑&#xff0c;就是关于多线程生产者消费者模型的学习过程中&#xf…

青少年编程与数学 02-022 专业应用软件简介 03 三维建模及动画软件:Autodesk Maya

青少年编程与数学 02-022 专业应用软件简介 03 三维建模及动画软件&#xff1a;Autodesk Maya 一、什么是三维建模二、什么是计算机动画三、三维建模及动画设计软件的发展历程&#xff08;一&#xff09;早期探索阶段&#xff08;20世纪60年代 - 80年代&#xff09;&#xff08…

获得 OCM 大师证书学习历练

当我站在山城重庆的洪崖洞前&#xff0c;看着璀璨的夜景倒映在嘉陵江上&#xff0c;手中紧握着 OCM 大师证书&#xff0c;那一刻&#xff0c;备考时的艰辛与考试时的紧张都化作了满满的成就感。这段在重庆获得 OCM 大师证书的经历&#xff0c;就像一场充满挑战与惊喜的冒险&…