Skip to content

Latest commit

 

History

History
1232 lines (971 loc) · 47.5 KB

3.CommandReference.md

File metadata and controls

1232 lines (971 loc) · 47.5 KB

RedisSearch全命令文档

创建

FT.CREATE

格式

  FT.CREATE {index}
    [ON {structure}]
       [PREFIX {count} {prefix} [{prefix} ..]
       [FILTER {filter}]
       [LANGUAGE {default_lang}]
       [LANGUAGE_FIELD {lang_field}]
       [SCORE {default_score}]
       [SCORE_FIELD {score_field}]
       [PAYLOAD_FIELD {payload_field}]
    [MAXTEXTFIELDS] [TEMPORARY {seconds}] [NOOFFSETS] [NOHL] [NOFIELDS] [NOFREQS] [SKIPINITIALSCAN]
    [STOPWORDS {num} {stopword} ...]
    SCHEMA {field} [TEXT [NOSTEM] [WEIGHT {weight}] [PHONETIC {matcher}] | NUMERIC | GEO | TAG [SEPARATOR {sep}] ] [SORTABLE][NOINDEX] ...

描述

创建具有给定规范的索引。

关于字段数限制的说明

RediSearch 每个模式最多支持 1024 个字段,其中最多 128 个可以是 TEXT 字段。在 32 位构建中,最多 64 个字段可以是 TEXT 字段。请注意,您拥有的字段越多,您的索引就越大,因为每增加 8 个字段,每个索引记录需要一个额外的字节进行编码。 NOFIELDS 如果您不需要按文本字段过滤,您可以始终使用该 选项而不将字段信息编码到索引中,以节省空间。这仍将允许按数字和地理字段进行过滤。

在集群数据库中运行的注意事项

当集群数据库中有多个索引时,您需要确保要索引的文档与索引位于同一个分片上。您可以通过用索引名称标记您的文档来实现这一点。 sql HSET doc:1{idx} ... FT.CREATE idx ... PREFIX 1 doc: ... 在集群数据库中运行 RediSearch 时,可以使用 RSCoordinator 跨越分片的索引 。在这种情况下,上述情况不适用。

例子

创建一个索引来存储标题、发布日期和关键字以 blog:post: (例如, blog:post:1 )开头的博客文章哈希的类别 :

FT.CREATE idx ON HASH PREFIX 1 blog:post: SCHEMA title TEXT SORTABLE published_at NUMERIC SORTABLE category TAG SORTABLE

在同一个索引中索引两个不同的哈希——一个包含作者数据,一个包含书籍:

FT.CREATE author-books-idx ON HASH PREFIX 2 author:details: book:details: SCHEMA author_id TAG SORTABLE author_ids TAG title TEXT name TEXT

注意

在此示例中,作者数据的键使用键模式, author:details: 而书籍数据的键使用模式 book:details: 。

只索引名字以“G”开头的作者:

FT.CREATE g-authors-idx ON HASH PREFIX 1 author:details FILTER 'startswith(@name, "G")' SCHEMA name TEXT

仅索引有副标题的书籍:

FT.CREATE subtitled-books-idx ON HASH PREFIX 1 book:details FILTER '@subtitle != ""' SCHEMA title TEXT

索引具有“类别”字段的书籍,其中用分号分隔值:

FT.CREATE books-idx ON HASH PREFIX 1 book:details FILTER SCHEMA title TEXT categories TAG SEPARATOR ";"

参数

  • index : 要创建的索引名称。如果存在,则旧规范将被覆盖
  • ON {structure} 目前仅支持 HASH(默认)
  • PREFIX {count} {prefix} 告诉索引它应该索引哪些键。您可以为 index.html 添加多个前缀。由于参数是可选的,默认为 *(所有键)
  • FILTER {filter} 是一个具有完整 RediSearch 聚合表达式语言的过滤器表达式。可以使用@__key 访问刚刚添加/更改的密钥。一个字段可以通过传递来设置字段名 'FILTER @indexName=="myindexname"'
  • LANGUAGE {default_lang} :如果设置表示索引中文档的默认语言。默认为英文。
  • LANGUAGE_FIELD {lang_field} :如果设置表示应该用作文档语言的文档字段。

支持的语言

在索引期间对提供的语言使用词干分析器。如果发送了不受支持的语言,该命令将返回错误。支持的语言有: 阿拉伯语、巴斯克语、加泰罗尼亚语、丹麦语、荷兰语、英语、芬兰语、法语、德语、希腊语、匈牙利语、印度尼西亚语、爱尔兰语、意大利语、立陶宛语、尼泊尔语、挪威语、葡萄牙语、罗马尼亚语、俄语、西班牙语、瑞典语、泰米尔语、土耳其语、中文。

添加中文文档时, LANGUAGE chinese 应设置以便索引器正确标记术语。如果使用默认语言,则将根据标点符号和空格提取搜索词。中文分词器使用分段算法(通过 Friso ),该算法 对文本进行分段并对照预定义的字典进行检查。有关 更多信息,请参阅 词干 。

  • SCORE {default_score} :如果设置表示索引中文档的默认分数。默认分数为 1.0。
  • SCORE_FIELD {score_field} :如果设置,则表示应根据用户的排名用作文档排名的文档字段。排名必须介于 0.0 和 1.0 之间。如果未设置,则默认分数为 1。
  • PAYLOAD_FIELD {payload_field} :如果设置表示应该用作文档的二进制安全有效负载字符串的文档字段,可以在查询时由自定义评分函数评估,或检索到客户端。
  • MAXTEXTFIELDS :为了提高效率,如果创建的文本字段少于 32 个,RediSearch 会对索引进行不同的编码。此选项强制 RediSearch 将索引编码为超过 32 个文本字段,这允许您使用 FT.ALTER .
  • NOOFFSETS :如果设置,我们不存储文档的术语偏移量(节省内存,不允许精确搜索或突出显示)。暗示 NOHL 。
  • TEMPORARY :创建一个轻量级临时索引,该索引将在指定的不活动时间后过期。每当搜索或添加索引时,都会重置内部空闲计时器。由于此类索引是轻量级的,您可以创建数千个此类索引而不会对性能产生负面影响,因此您应该考虑使用它 SKIPINITIALSCAN 来避免昂贵的扫描。

关于删除临时索引的注意事项 删除时,临时索引不会删除散列,因为它们可能已在多个索引中编入索引。添加 DD 标志也会删除哈希。

  • NOHL :通过禁用突出显示支持来节省存储空间和内存。如果设置,我们不存储术语位置的相应字节偏移量。 NOHL 也由 暗示 NOOFFSETS 。

  • NOFIELDS :如果设置,我们不会为每个术语存储字段位。节省内存,不允许按特定字段过滤。

  • NOFREQS :如果设置,我们将避免在索引中保存词频。这可以节省内存,但不允许根据文档中给定术语的频率进行排序。

  • STOPWORDS :如果设置,我们使用自定义停用词列表设置索引,在索引和搜索期间将被忽略。{num} 是停用词的数量,

    • 跟一个长度正好为 {num} 的停用词参数列表。
    • 如果未设置,我们采用默认的停用词列表。
    • 如果 {num} 设置为 0,索引将没有停用词。
  • SKIPINITIALSCAN :如果设置,我们不扫描和索引。

  • SCHEMA {field name} {field type} {options...} :在 SCHEMA 关键字之后,我们定义索引字段。字段名称是此索引所遵循的散列中的字段名称。字段类型可以是数字、文本或地理。

字段类型

  • 文本 允许针对此字段中的值进行全文搜索查询。

  • 标签 允许针对此字段中的值进行精确匹配查询,例如类别或主键。有关更多信息,请参阅 标记字段 。

  • 数字 允许针对此字段中的值进行数字范围查询。有关 如何使用数字范围的详细信息,请参阅 查询语法文档 。

  • 地理位置 允许针对此字段中的值进行地理范围查询。该字段的值必须是一个字符串,其中包含以逗号分隔的经度(第一个)和纬度。

字段选项

  • SORTABLE

数字、标签或文本字段可以有可选的 SORTABLE 参数,允许用户稍后 根据该字段的值对结果进行排序 (这会增加内存开销,因此不要在大文本字段上声明它)。

  • NOSTEM

文本字段可以有 NOSTEM 参数,这将在索引其值时禁用词干。这对于诸如专有名词之类的东西可能是理想的。

  • NOINDEX

字段可以有 NOINDEX 选项,这意味着它们不会被索引。这与 SORTABLE ,结合使用非常有用 ,可以创建使用 PARTIAL 更新不会导致文档完全重新索引的字段。如果一个字段有 NOINDEX 而没有 SORTABLE,它就会被索引忽略。

  • PHONETIC {matcher}

PHONETIC 默认情况下 ,将文本字段声明为 将在搜索中对其执行语音匹配。强制性 {matcher} 参数指定使用的语音算法和语言。支持以下匹配器:

dm:en - 英语双元音
dm:fr - 法语双元音
dm:pt - 葡萄牙语双元音
dm:es - 西班牙语双元音

有关更多详细信息,请参阅 语音匹配 。

  • WEIGHT {weight}

对于 TEXT 字段,在计算结果精度时声明该字段的重要性。这是一个乘法因子,如果未指定,则默认为 1。

  • SEPARATOR {sep}

对于 TAG 字段,指示如何将字段中包含的文本拆分为单独的标签。默认值为 , . 该值必须是单个字符。

复杂度

O(1)

返回值

OK或error

插入

HSET/HSETNX/HDEL/HINCRBY/HDECRBY

格式

HSET {hash} {field} {value} [{field} {value} ...]

描述

由于RediSearch V2.0,天然Redis命令用于添加,使用更新或删除散列 HSET , HINCRBY , HDEL 或改变散列其他散列命令。

如果修改了哈希,则所有匹配的索引都会自动更新。通过 redis 删除散列,无论是通过调用 DEL 、使散列过期还是逐出,也会自动处理。

如果一个字段没有被索引(例如,如果一个数字字段得到一个字符串值),整个文档就不会被索引。 FT.INFO 在 下提供文档索引失败的数量 hash_indexing_failures 。

如果 LANGUAGE_FIELD 、 SCORE_FIELD 或 PAYLOAD_FIELD 与 一起使用 FT.CREATE ,文档将提取属性。字段可用于获取其所属索引的名称。

架构不匹配

如果哈希中的值与该字段的模式类型不匹配,则哈希索引将失败。“失败”文件的数量下 hash_indexing_failures 的 FT.INFO 。

可能修改索引的 redis 命令的完整列表:

HSET、HMSET、HSETNX、HINCRBY、HINCRBYFLOAT、HDEL、DEL、SET、RENAME_FROM、RENAME_TO、TRIMMED、RESTORE、EXPIRED、EVICTED、CHANGE、LOADED

例子

HSET doc1 cs101 "hello world" number 3.141 geopoint "-122.064228,37.377658" tags foo,bar,baz
HSET doc2 cs201 "foo bar baz" number 2.718 geopoint "-0.084324,51.515583" tags foo,bar,baz
HSET doc3 Name "RedisLabs" indexName "myindexname"

注意

地理值的语法是带引号的字符串,经度(第一个)和纬度用逗号分隔。

检索

FT.SEARCH

格式

FT.SEARCH {index} {query} [NOCONTENT] [VERBATIM] [NOSTOPWORDS] [WITHSCORES] [WITHPAYLOADS] [WITHSORTKEYS]
  [FILTER {numeric_field} {min} {max}] ...
  [GEOFILTER {geo_field} {lon} {lat} {radius} m|km|mi|ft]
  [INKEYS {num} {key} ... ]
  [INFIELDS {num} {field} ... ]
  [RETURN {num} {field} ... ]
  [SUMMARIZE [FIELDS {num} {field} ... ] [FRAGS {num}] [LEN {fragsize}] [SEPARATOR {separator}]]
  [HIGHLIGHT [FIELDS {num} {field} ... ] [TAGS {open} {close}]]
  [SLOP {slop}] [INORDER]
  [LANGUAGE {language}]
  [EXPANDER {expander}]
  [SCORER {scorer}] [EXPLAINSCORE]
  [PAYLOAD {payload}]
  [SORTBY {field} [ASC|DESC]]
  [LIMIT offset num]

描述

使用文本查询搜索索引,返回文档或仅返回 id。

例子

在包含书籍数据的索引的每个 TEXT 字段中搜索术语“wizard”:

FT.SEARCH books-idx "wizard"

仅在“标题”字段中搜索术语“狗”:

FT.SEARCH books-idx "@title:dogs"

搜索 2020 年或 2021 年出版的书籍:

FT.SEARCH books-idx "@published_at:[2020 2021]

搜索经度-122.41,纬度37.77(旧金山)5公里内的中餐馆:

FT.SEARCH restaurants-idx "chinese @location:[-122.41 37.77 5 km]"

在“标题”字段中搜索术语“狗”或“猫”,但为“狗”的匹配项提供更高的相关性分数(也称为 boosting ):

FT.SEARCH books-idx "(@title:dogs | @title:cats) | (@title:dogs) => { $weight: 5.0; }"

在索引的任何 TEXT 字段中搜索带有“dogs”的书籍,并要求对每个结果的评分进行解释:

FT.SEARCH books-idx "dogs" WITHSCORES EXPLAINSCORE

搜索在标签字段“类别”中有“科学”的标题中带有“空格”的书籍:

FT.SEARCH books-idx "@title:space @categories:{science}"

在任何文本字段中搜索带有“Python”的书籍,从整个结果集中的第十一个结果开始返回十个结果(偏移参数从零开始),并且每个结果只返回“标题”字段:

FT.SEARCH books-idx "python" LIMIT 10 10 RETURN 1 title

更多例子

有关更多详细信息和查询示例,请参阅 查询语法 。

参数

  • index : 索引名称。索引必须首先使用 FT.CREATE .
  • query : 要搜索的文本查询。如果它不止一个单词,请将其放在引号中。 有关更多详细信息,请参阅 查询语法 。
  • NOCONTENT :如果它出现在查询之后,我们只返回文档 ID 而不是内容。如果 RediSearch 只是外部文档集合的索引,这很有用
  • VERBATIM :如果设置,我们不会尝试使用词干进行查询扩展,而是逐字搜索查询词。
  • NOSTOPWORDS :如果设置,我们不会从查询中过滤停用词。
  • WITHSCORES :如果设置,我们还返回每个文档的相对内部分数。这可用于合并来自多个实例的结果
  • WITHPAYLOADS :如果设置,我们检索可选的文档有效负载(参见 FT.ADD)。有效载荷遵循文档 ID,如果
  • WITHSCORES 已设置,则遵循分数。
  • WITHSORTKEYS :仅与 SORTBY 相关 。返回排序键的值,紧跟在 id 和 score 和/或有效负载(如果需要)之后。这通常不是用户需要的,并且存在用于分布式搜索协调目的。
  • FILTER numeric_field min max :如果设置,并且 numeric_field 在 FT.CREATE 中被定义为数字字段,我们会将结果限制为数值范围在 min 和 max 之间的那些。min 和 max 遵循 ZRANGE 语法,可以是 -inf 、 +inf 并 ( 用于独占范围。一个查询支持针对不同字段的多个数字过滤器。
  • GEOFILTER {geo_field} {lon} {lat} {radius} m|km|mi|ft :如果设置,我们将结果从 lon 和 lat 过滤到给定的半径。半径以数字和单位给出。有关 更多详细信息,请参阅 GEORADIUS 。
  • INKEYS {num} {field} ... :如果设置,我们将结果限制为列表中指定的一组给定键。第一个参数必须是列表的长度,并且大于零。不存在的键会被忽略——除非所有的键都不存在。
  • INFIELDS {num} {field} ... :如果设置,则将结果过滤为仅出现在文档特定字段中的结果,例如标题或 URL。num 是指定字段参数的数量
  • RETURN {num} {field} ... :使用此关键字来限制返回文档中的哪些字段。 num 是关键字后面的字段数。如果 num 是 0,它的作用就像 NOCONTENT 。
  • SUMMARIZE ... :使用此选项仅返回包含匹配文本的字段部分。有关 更多详细信息, 请参阅 突出显示
  • HIGHLIGHT ... :使用此选项来格式化匹配文本的出现。有关 更多详细信息, 请参阅 突出显示
  • SLOP {slop} :如果设置,我们允许最多 N 个介于短语之间的不匹配偏移量。(即精确短语的斜率是 0)
  • INORDER :如果设置,并且通常与 SLOP 结合使用,我们确保查询词在文档中以与查询中相同的顺序出现,而不管它们之间的偏移量如何。
  • LANGUAGE {language} :如果设置,我们在搜索查询扩展期间对提供的语言使用词干分析器。如果查询中文文档,应设置为 chinese ,以便正确标记查询词。默认为英语。如果发送了不受支持的语言,该命令将返回错误。有关语言列表,请参阅 FT.ADD。
  • EXPANDER {expander} :如果设置,我们将使用自定义查询扩展器而不是词干分析器。 请参阅扩展 。
  • SCORER {scorer} :如果设置,我们将使用用户定义的自定义评分函数。 请参阅扩展 。
  • EXPLAINSCORE :如果设置,将返回如何计算分数的文本描述。使用此选项需要 WITHSCORES 选项。
  • PAYLOAD {payload} :添加将暴露给自定义评分函数的任意二进制安全有效负载。 请参阅扩展 。
  • SORTBY {field} [ASC|DESC] :如果指定,则结果按此字段的值排序。这适用于文本和数字字段。
  • LIMIT first num :将结果限制为给定的偏移量和结果数量。请注意,偏移量是零索引的。默认值为 0 10,从第一个结果开始返回 10 个项目。

提示:

LIMIT 0 0 可用于计算结果集中的文档数,而无需实际返回它们。

复杂度

O(n) 用于单个单词查询。 n 是结果集中的结果数。查找所有具有特定术语的文档是 O(1),但是,需要扫描所有这些文档才能从 redis 哈希加载文档数据并返回它们。

更复杂的查询的时间复杂度各不相同,但通常与单词的数量、它们之间的交点数量以及结果集中的结果数量成正比。

返回值

数组回复, 其中第一个元素是结果总数,然后是成对的文档 id,以及一个嵌套的字段/值数组。

如果 给出了 NOCONTENT ,我们将返回一个数组,其中第一个元素是结果总数,其余成员是文档 ID。

搜索查询期间哈希值过期

如果在查询过程开始后到达散列到期时间,则该散列将计入结果总数,但不会返回散列的名称和内容。

FT.AGGATE

格式

FT.AGGREGATE {index_name}
  {query_string}
  [VERBATIM]
  [LOAD {nargs} {property} ...]
  [GROUPBY {nargs} {property} ...
    REDUCE {func} {nargs} {arg} ... [AS {name:string}]
    ...
  ] ...
  [SORTBY {nargs} {property} [ASC|DESC] ... [MAX {num}]]
  [APPLY {expr} AS {alias}] ...
  [LIMIT {offset} {num}] ...
  [FILTER {expr}] ...

描述

对索引运行搜索查询,并对结果执行聚合转换,从中提取统计信息等。有关 更多详细信息,请参阅 有关聚合的完整文档 。

例子

查找页面“about.html”的访问量,按访问天数分组,统计访问次数,按天排序:

FT.AGGREGATE idx "@url:\"about.html\""
    APPLY "day(@timestamp)" AS day
    GROUPBY 2 @day @country
      REDUCE count 0 AS num_visits
    SORTBY 4 @day

查找一年内出版最多的书籍:

FT.AGGREGATE books-idx *
    GROUPBY 1 @published_year
      REDUCE COUNT 0 AS num_published
    GROUPBY 0
      REDUCE MAX 1 @num_published AS max_books_published_per_year

减少所有结果

最后一个例子使用了 GROUPBY 0 . 用于 GROUPBY 0 对 REDUCE 聚合管道最后一步的所有结果应用 函数——这适用于初始查询和后续 GROUPBY 操作。

搜索经度 -73.982254 和纬度 40.753181 10 公里内的图书馆,然后用它们的位置和这些坐标之间的距离来注释它们:

 FT.AGGREGATE libraries-idx "@location:[-73.982254 40.753181 10 km]"
    LOAD 1 @location
    APPLY "geodistance(@location, -73.982254, 40.753181)"

在这里,我们需要使用 LOAD 预加载 @location 字段,因为它是一个 GEO 字段。

更多例子

有关聚合的更多详细信息和聚合查询的详细示例,请参阅 聚合 。

参数

  • index_name :执行查询的索引。

  • query_string :检索文档的基本过滤查询。它遵循 与 搜索查询完全相同的语法 ,包括过滤器、联合、非、可选等。

  • LOAD {nargs} {property} ... :从文档 HASH 对象加载文档字段。作为一般经验法则,应该避免这种情况。聚合所需的字段应存储为 SORTABLE ,它们可用于聚合管道且延迟非常低。LOAD 极大地损害了聚合查询的性能,因为每个处理过的记录都需要对 Redis 键执行等效的 HMGET,当在数百万个键上执行时,处理时间会非常长。

  • GROUPBY {nargs} {property} :根据一个或多个属性对管道中的结果进行分组。每个组应该至少有一个减速器(见下文),一个处理组条目的函数,要么对它们进行计数,要么执行多个聚合操作(见下文)。

    • REDUCE {func} {nargs} {arg} … [AS {name}] :使用归约函数将每组中的匹配结果归约为 单个记录。例如 COUNT 将计算组中的记录数。有关可用减速器的更多详细信息,请参阅下面的减速器部分。
    • 减速器可以使用 AS {name} 可选参数拥有自己的属性名称 。如果未给出名称,则生成的名称将是 reduce 函数和组属性的名称。例如,如果 property 未将名称指定给 COUNT_DISTINCT @foo ,则生成的名称将为 count_distinct(@foo) 。
  • SORTBY {nargs} {property} {ASC|DESC} [MAX {num}] :使用属性列表对管道进行排序直到 SORTBY 点。默认情况下,排序是升序的,但 可以为每个属性添加 ASC 或 DESC 。 nargs 是排序参数的个数,包括 ASC 和 DESC。例如: SORTBY 4 @foo ASC @bar DESC 。

MAX 用于优化排序,仅对 n 大元素进行排序。虽然它没有连接到 LIMIT ,但您通常只需要 SORTBY … MAX 进行常见查询。

  • APPLY {expr} AS {name} :对一个或多个属性应用 1 对 1 转换,并将结果存储为管道中的新属性,或使用此转换替换任何属性。 expr 是一个表达式,可用于对数字属性执行算术运算,或可根据属性类型应用于属性的函数(见下文),或其任意组合。例如: APPLY "sqrt(@foo)/log(@bar) + 5" AS baz 将为管道中的每条记录动态评估此表达式,并将结果存储为名为 baz 的新属性,该属性可以被管道中的进一步 APPLY / SORTBY / GROUPBY / REDUCE 操作引用。

  • LIMIT {offset} {num} 。限制结果数量以仅返回 num 从索引开始的结果 offset (从零开始)。如上所述, SORTBY … MAX 如果您只想限制排序操作的输出,那么使用它会更有效率 。

然而,limit 可用于限制结果而不进行排序,或用于对由 确定的 n 大结果进行分页 SORTBY MAX 。例如,获取前 100 个结果中的 50-100 个结果最有效地表示为 SORTBY 1 @foo MAX 100 LIMIT 50 50 。从 SORTBY 中删除 MAX 将导致管道对 所有 记录进行排序 ,然后对结果 50-100 进行分页。

  • FILTER {expr} 。使用与每个结果中的值相关的谓词表达式过滤结果。它们在查询后应用并与管道的当前状态相关。

复杂度

非确定性。取决于执行的查询和聚合,但通常与返回的结果数量成线性关系。

返回值

阵列响应。每行都是一个数组,代表一个聚合结果。

示例输出

这里我们按用户(演员)计算 GitHub 事件,以产生最活跃的用户:

127.0.0.1:6379> FT.AGGREGATE gh "*" GROUPBY 1 @actor REDUCE COUNT 0 AS num SORTBY 2 @num DESC MAX 10
 1) (integer) 284784
 2) 1) "actor"
    2) "lombiqbot"
    3) "num"
    4) "22197"
 3) 1) "actor"
    2) "codepipeline-test"
    3) "num"
    4) "17746"
 4) 1) "actor"
    2) "direwolf-github"
    3) "num"
    4) "10683"
 5) 1) "actor"
    2) "ogate"
    3) "num"
    4) "6449"
 6) 1) "actor"
    2) "openlocalizationtest"
    3) "num"
    4) "4759"
 7) 1) "actor"
    2) "digimatic"
    3) "num"
    4) "3809"
 8) 1) "actor"
    2) "gugod"
    3) "num"
    4) "3512"
 9) 1) "actor"
    2) "xdzou"
    3) "num"
    4) "3216"
[10](10)) 1) "actor"
    2) "opstest"
    3) "num"
    4) "2863"
11) 1) "actor"
    2) "jikker"
    3) "num"
    4) "2794"
(0.59s)

FT.EXPLAIN

格式

FT.EXPLAIN {index} {query}

描述

返回复杂查询的执行计划。

在返回的响应中, + 术语上的 a 表示词干。

例子

$ redis-cli --raw

127.0.0.1:6379> FT.EXPLAIN rd "(foo bar)|(hello world) @date:[100 200]|@date:[500 +inf]"
INTERSECT {
  UNION {
    INTERSECT {
      foo
      bar
    }
    INTERSECT {
      hello
      world
    }
  }
  UNION {
    NUMERIC {100.000000 <= x <= 200.000000}
    NUMERIC {500.000000 <= x <= inf}
  }
}

参数

  • index : 索引名称。索引必须先用 FT.CREATE 创建
  • query : 查询字符串,就像发送到 FT.SEARCH

复杂度

O(1)

返回值

字符串响应。一个表示执行计划的字符串(见上面的例子)。

提示 您应该使用 redis-cli --raw 来正确读取返回响应中的换行符。

FT.EXPLAINCLI

格式

FT.EXPLAINCLI {index} {query}

描述

返回复杂查询的执行计划,但不使用 redis-cli --raw .

在返回的响应中, + 术语上的 a 表示词干。

例子

$ redis-cli

127.0.0.1:6379> FT.EXPLAINCLI rd "(foo bar)|(hello world) @date:[100 200]|@date:[500 +inf]"
 1) INTERSECT {
 2)   UNION {
 3)     INTERSECT {
 4)       UNION {
 5)         foo
 6)         +foo(expanded)
 7)       }
 8)       UNION {
 9)         bar
10)         +bar(expanded)
11)       }
12)     }
13)     INTERSECT {
14)       UNION {
15)         hello
16)         +hello(expanded)
17)       }
18)       UNION {
19)         world
20)         +world(expanded)
21)       }
22)     }
23)   }
24)   UNION {
25)     NUMERIC {100.000000 <= @date <= 200.000000}
26)     NUMERIC {500.000000 <= @date <= inf}
27)   }
28) }
29)

参数

  • index : 索引名称。索引必须先用 FT.CREATE 创建
  • query : 查询字符串,就像发送到 FT.SEARCH

复杂度

O(1)

返回值

字符串响应。一个表示执行计划的字符串(见上面的例子)。

FT.PROFILE

格式

FT.PROFILE {index} {[SEARCH, AGGREGATE]} [LIMITED] QUERY {query}

描述

执行 FT.SEARCH 或 FT.AGGREGATE 命令并收集性能信息。返回值有一个包含两个元素的数组:

  • 结果 - 来自 RediSearch 的正常回复,类似于游标。
  • 资料 -资料中 的详细信息是:
    • Total profile time - 查询的总运行时间 。
    • 解析时间 - 将查询和参数解析为执行计划的时间。
    • 管道创建时间 - 执行计划的创建时间,包括迭代器、结果处理器和化简器的创建。
    • 迭代器配置文件 - 索引迭代器信息,包括它们的类型、术语、计数和时间数据。倒排索引迭代器还具有它们包含的元素数量。
    • 结果处理器配置文件 - 带有类型、计数和时间数据的结果处理器链。

例子

FT.PROFILE idx SEARCH QUERY "hello world"


1) 1) (integer) 1
   2) "doc1"
   3) 1) "t"
      2) "hello world"
2) 1) 1) Total profile time
      2) "0.47199999999999998"
   2) 1) Parsing time
      2) "0.218"
   3) 1) Pipeline creation time
      2) "0.032000000000000001"
   4) 1) Iterators profile
      2) 1) Type
         2) INTERSECT
         3) Time
         4) "0.025000000000000001"
         5) Counter
         6) (integer) 1
         7) Children iterators
         8)  1) Type
             2) TEXT
             3) Term
             4) hello
             5) Time
             6) "0.0070000000000000001"
             7) Counter
             8) (integer) 1
             9) Size
            10) (integer) 1
         9)  1) Type
             2) TEXT
             3) Term
             4) world
             5) Time
             6) "0.0030000000000000001"
             7) Counter
             8) (integer) 1
             9) Size
            10) (integer) 1
   5) 1) Result processors profile
      2) 1) Type
         2) Index
         3) Time
         4) "0.036999999999999998"
         5) Counter
         6) (integer) 1
      3) 1) Type
         2) Scorer
         3) Time
         4) "0.025000000000000001"
         5) Counter
         6) (integer) 1
      4) 1) Type
         2) Sorter
         3) Time
         4) "0.013999999999999999"
         5) Counter
         6) (integer) 1
      5) 1) Type
         2) Loader
         3) Time
         4) "0.10299999999999999"
         5) Counter
         6) (integer) 1

参数

  • index : 索引名称。索引必须先用 FT.CREATE 创建
  • SEARCH,AGGREGATE : FT.SEARCH 和 FT.AGGREGATE
  • LIMITED : 删除 reader 迭代器的 细节
  • QUERY {query} : 查询字符串,就像发送到 FT.SEARCH

复杂度

非确定性。取决于执行的查询和聚合,但通常与返回的结果数量成线性关系。

返回值

阵列响应。

提示

要减少输出的大小,请使用 NOCONTENT 或 LIMIT 0 0 减少结果回复或 LIMITED 不回复 reader iterators 内部内置联合的详细信息, 例如 fuzzy 或 prefix 。

更新

FT.ALTER SCHEMA ADD

格式

FT.ALTER {index} SCHEMA ADD {field} {options} ...

####描述 向索引添加一个新字段。

在索引和重新索引现有文档时,向索引添加字段将导致任何未来的文档更新使用新字段。

注意

根据索引的创建方式,您可能会受到可添加到现有索引的附加文本字段数量的限制。如果当前索引包含的文本字段少于 32 个,则 SCHEMA ADD 最多只能添加 32 个总字段(这意味着索引将只能包含 32 个总文本字段)。如果您希望索引包含 32 个以上的字段,请使用 MAXTEXTFIELDS 选项创建它 。

例子

FT.ALTER idx SCHEMA ADD id2 NUMERIC SORTABLE

参数

  • index : 索引名称。
  • field:字段名称。
  • options :字段选项 - FT.CREATE 有关更多信息,请参阅 。

复杂度

O(1)

返回值

OK或error。

删除

FT.DROPINDEX

格式

FT.DROPINDEX {index} [DD]

描述

删除索引。

默认情况下,FT.DROPINDEX 不会删除与索引关联的文档哈希。添加 DD 选项也会删除哈希。

从 RediSearch 2.0 开始

例子

FT.DROPINDEX idx DD

参数

  • index :全文索引名称。索引必须先用 FT.CREATE 创建
  • DD :如果设置,删除操作将删除实际的文档哈希。

返回值

状态回复:成功就返回OK。

注意:

当使用带有参数 DD 的 FT.DROPINDEX 时,如果索引创建仍在运行(FT.CREATE 正在异步运行),则只会删除已被索引的文档哈希。留给索引的文档散列将保留在数据库中。您可以使用 FT.INFO 来检查索引的完成情况。

别名

FT.ALIASADD

FT.ALIASUPDATE

FT.Aliasdel

格式

FT.ALIASADD {name} {index}
FT.ALIASUPDATE {name} {index}
FT.ALIASDEL {name}

的 FT.ALIASADD 和 FT.ALIASDEL 命令将添加或从索引中删除别名。索引别名可用于引用数据命令中的实际索引,例如 FT.SEARCH 或 FT.ADD 。这允许管理员透明地将应用程序查询重定向到替代索引。

索引可以有多个别名,但别名不能引用另一个别名。

该 FT.ALIASUPDATE 命令与该 命令的不同之处在于 FT.ALIASADD 它将删除与先前索引的别名关联(如果有)。 FT.ALIASADD 另一方面,如果别名已经与另一个索引相关联,则会失败。

复杂度

O(1)

返回值

OK或error。

标签

FT.TAGVALS

格式

FT.TAGVALS {index} {field_name}

描述

返回在 Tag 字段中 索引的不同标签 。

如果您的标签字段索引诸如城市、类别等内容,这将非常有用。

限制条件

没有分页或排序,标签没有按字母顺序排序。此命令仅对 Tag 字段进行操作 。字符串返回小写并去除空格,但其他方面保持不变。

例子

FT.TAGVALS idx myTag

参数

  • index :全文索引名称。索引必须先用 FT.CREATE 创建
  • filed_name:模式中定义的标签文件的名称。

返回值

数组回复:标签索引中所有不同的标签。

复杂度

O(n),n 是标签字段的基数。

Suggestions

FT.SUGADD

格式

FT.SUGADD {key} {string} {score} [INCR] [PAYLOAD {payload}]

描述

将建议字符串添加到自动完成建议字典。这与索引定义脱节,并将创建和更新建议词典留给用户。

例子

FT.SUGADD ac "hello world" 1

参数

  • key : 建议字典键。
  • string : 我们索引的建议字符串
  • score : 建议字符串权重的浮点数
  • INCR :如果设置,我们将建议的现有条目增加给定的分数,而不是替换分数。这对于根据用户查询实时更新字典很有用
  • PAYLOAD {payload} :如果设置,我们会保存一个额外的有效负载和建议,可以通过将 WITHPAYLOADS 参数添加 到

返回值

整数回复:建议字典的当前大小。

FT.SUGGET

格式

FT.SUGGET {key} {prefix} [FUZZY] [WITHSCORES] [WITHPAYLOADS] [MAX num]

描述

获取前缀的完成建议。

例子

FT.SUGGET ac hell FUZZY MAX 3 WITHSCORES

参数

  • key : 建议字典键。
  • prefix : 要完成的前缀
  • FUZZY :如果设置,我们会进行模糊前缀搜索,包括与发送的前缀 Levenshtein 距离为 1 的前缀
  • MAX num :如果设置,我们将结果限制为最大值 num (默认值:5)。
  • WITHSCORES :如果设置,我们还会返回每个建议的分数。这可用于合并来自多个实例的结果
  • WITHPAYLOADS :如果设置,我们返回与建议一起保存的可选有效负载。如果条目不存在有效负载,我们将返回空回复。

返回值

Array Reply:匹配前缀的最佳建议列表,可选地在每个条目后加上分数

FT.SUGDEL

格式

FT.SUGDEL {key} {string}

描述

从建议索引中删除一个字符串。

例子

FT.SUGDEL ac "hello world"

参数

  • key : 建议字典键。
  • string : 要删除的字符串

返回值

整数回复:如果找到并删除字符串,则为 1,否则为 0。

FT.SUGLEN

格式

FT.SUGLEN {key}

描述

获取自动完成建议字典的大小

FT.SUGLEN ac

参数

  • key : 建议字典键。

返回值

整数回复:建议字典的当前大小。

Synonym

FT.SYNUPDATE

格式

FT.SYNUPDATE <index name> <synonym group id> [SKIPINITIALSCAN] <term1> <term2> ...

描述

更新同义词组。

该命令用于创建或更新具有附加术语的同义词组。只有在更新后被索引的文档才会受到影响。

参数

  • SKIPINITIALSCAN :如果设置,我们不扫描和索引。

FT.SYNDUMP

格式

FT.SYNDUMP <index name>

描述

转储同义词组的内容。

该命令用于转储同义词数据结构。返回同义词术语及其同义词组 ID 的列表。

FT.SPELLCHECK

格式

  FT.SPELLCHECK {index} {query}
    [DISTANCE dist]
    [TERMS {INCLUDE | EXCLUDE} {dict} [TERMS ...]]

描述

对查询执行拼写更正,返回拼写错误的术语的建议。

有关 更多详细信息,请参阅 查询拼写更正 。

参数

  • index : 带有索引词的索引。
  • query :搜索查询。
  • TERMS :指定一个包含 ( INCLUDE ) 或排除 ( EXCLUDE ) 自定义词典,名为 {dict} . 有关管理自定义词典的信息 ,请参阅 、 和 。 FT.DICTADD FT.DICTDEL FT.DICTDUMP
  • DISTANCE :拼写建议的最大 Levenshtein 距离(默认值:1,最大值:4)。

返回值

一个数组,其中每个元素代表查询中拼写错误的术语。拼写错误的术语按它们在查询中的出现顺序排序。

反过来,每个拼写错误的术语是一个由常量字符串“TERM”、术语本身和拼写更正建议组成的 3 元素数组。

拼写更正数组中的每个元素都由建议的分数和建议本身组成。根据拼写错误的术语,建议数组按分数降序排列。

得分的计算方法是将建议词所在的文档数除以索引中的文档总数。可以通过将分数除以最高分数来标准化结果。

示例输出

1)  1) "TERM"
    2) "{term1}"
    3)  1)  1)  "{score1}"
            2)  "{suggestion1}"
        2)  1)  "{score2}"
            2)  "{suggestion2}"
        .
        .
        .
2)  1) "TERM"
    2) "{term2}"
    3)  1)  1)  "{score1}"
            2)  "{suggestion1}"
        2)  1)  "{score2}"
            2)  "{suggestion2}"
        .
        .
        .
.
.
.

Dictionary

FT.DICTADD

格式

FT.DICTADD {dict} {term} [{term} ...]

描述

将术语添加到字典中。

参数

  • dict : 字典名称。
  • term :要添加到字典中的术语。

c 返回 int,特别是添加的新术语的数量。

FT.DICTDEL

格式

 FT.DICTDEL {dict} {term} [{term} ...]

描述

从字典中删除术语。

参数

  • dict : 字典名称。
  • term : 要从字典中删除的术语。

返回值

返回 int,特别是被删除的术语数。

FT.DICTDUMP

格式

FT.DICTDUMP {dict}

描述

转储给定字典中的所有术语。

参数

dict : 字典名称。

返回值

返回一个数组,其中每个元素都是 term(字符串)。

Info

FT.INFO

格式

FT.INFO {index}

描述

返回有关索引的信息和统计信息。返回值包括:

  • index_definition : FT.CREATE 命令参数的反映 。
  • fields : 索引模式 - 字段名称、类型和属性。
  • 文件数。
  • 不同术语的数量。
  • 每条记录的平均字节数。
  • 索引缓冲区的大小和容量。
  • 索引状态和百分比以及失败:
  • indexing : 是否在后台扫描索引,
  • percent_indexed :后台索引的进度(如果完成则为1),hash_indexing_failures :由于操作与索引架构不兼容而导致的失败次数。

可选的

  • garbage collector 除 NOGC 之外的所有选项的 统计信息 。
  • 有关 cursors 索引是否存在游标的统计信息 。
  • 有关 stopword lists 是否使用自定义停用词列表的统计信息 。

例子

127.0.0.1:6379> ft.info wik{0}
1) index_name
 2) wikipedia
 3) index_options
 4) (empty array)
 5) index_definition
 6)  1) key_type
     2) HASH
     3) prefixes
     4) 1) thing:
     5) filter
     6) startswith(@__key, "thing:")
     7) language_field
     8) __language
     9) default_score
    10) "1"
    11) score_field
    12) __score
    13) payload_field
    14) __payload
 7) fields
 8) 1) 1) title
       2) type
       3) TEXT
       4) WEIGHT
       5) "1"
       6) SORTABLE
    2) 1) body
       2) type
       3) TEXT
       4) WEIGHT
       5) "1"
    3) 1) id
       2) type
       3) NUMERIC
    4) 1) subject location
       2) type
       3) GEO
 9) num_docs
10) "0"
11) max_doc_id
12) "345678"
13) num_terms
14) "691356"
15) num_records
16) "0"
17) inverted_sz_mb
18) "0"
19) total_inverted_index_blocks
20) "933290"
21) offset_vectors_sz_mb
22) "0.65932846069335938"
23) doc_table_size_mb
24) "29.893482208251953"
25) sortable_values_size_mb
26) "11.432285308837891"
27) key_table_size_mb
28) "1.239776611328125e-05"
29) records_per_doc_avg
30) "-nan"
31) bytes_per_record_avg
32) "-nan"
33) offsets_per_term_avg
34) "inf"
35) offset_bits_per_record_avg
36) "8"
37) hash_indexing_failures
38) "0"
39) indexing
40) "0"
41) percent_indexed
42) "1"
43) gc_stats
44)  1) bytes_collected
     2) "4148136"
     3) total_ms_run
     4) "14796"
     5) total_cycles
     6) "1"
     7) average_cycle_time_ms
     8) "14796"
     9) last_run_time_ms
    10) "14796"
    11) gc_numeric_trees_missed
    12) "0"
    13) gc_blocks_denied
    14) "0"
45) cursor_stats
46) 1) global_idle
    2) (integer) 0
    3) global_total
    4) (integer) 0
    5) index_capacity
    6) (integer) 128
    7) index_total
    8) (integer) 0
47) stopwords_list
48) 1) "tlv"
    2) "summer"
    3) "2020"

参数

  • index :全文索引名称。索引必须先用 FT.CREATE 创建

复杂度

O(1)

返回值

阵列响应。键和值的嵌套数组。

FT._LIST

格式

FT._LIST

描述

返回所有现有索引的列表。

例子

FT._LIST
1) "idx"
2) "movies"
3) "imdb"

复杂度

O(n) 其中 n 是系统中的索引数。

返回值

具有索引名称的数组。

临时命令

_ 命令中 的前缀 表示,这是一个临时命令。 以后 SCAN 会增加一种 命令,用于数据库包含大量索引的情况。

配置

FT.CONFIG

格式

  FT.CONFIG <GET|HELP> {option}
  FT.CONFIG SET {option} {value}

描述

检索、描述和设置运行时配置选项。

参数

  • option : 配置选项的名称,或 '*' 表示所有。
  • value : 配置选项的值。有关配置选项的详细信息,请参阅 配置 。这些配置选项支持在运行时设置值:
  • NOGC
  • MINPREFIX
  • MAXEXPANSIONS
  • TIMEOUT
  • ON_TIMEOUT
  • MIN_PHONETIC_TERM_LEN

返回值

当提供有效的选项名称时, GET 子命令返回一个带有当前选项值的字符串。当提供 '*' 时,将返回一个包含每个配置选项的数组的数组,该数组由选项的名称和当前值组成。

SET 对于有效的运行时可设置选项名称和值 , 子命令返回“OK”。

过期命令

FT.ADD

格式

FT.ADD {index} {docId} {score}
  [REPLACE [PARTIAL] [NOCREATE]]
  [LANGUAGE {language}]
  [PAYLOAD {payload}]
  [IF {condition}]
  FIELDS {field} {value} [{field} {value}...]

描述

弃用警告

此命令已弃用,并充当简单的 redis HSET,仅当创建的文档与一个或某些索引定义(如 ft.create 中定义的 )匹配时,才会对其编制索引 ,请改用HSET 。

将文档添加到索引。

例子

FT.ADD idx doc1 1.0 FIELDS title "hello world"

参数

  • index :全文索引名称。索引必须先用 FT.CREATE 创建
  • docId :将从搜索中返回的文档 ID。

关于 docId 的说明

同一个 docId 不能两次添加到同一个索引中。可以将相同的 docId 添加到多个索引中,但具有该 docId 的单个文档会保存在数据库中。

  • score : 基于用户排名的文档排名。这必须介于 0.0 和 1.0 之间。在 v2.0 上,这将被转换为创建的哈希中的“__score”字段。
  • REPLACE :如果设置,我们将执行 UPSERT 样式插入 - 并删除文档的旧版本(如果存在)。
  • PARTIAL (仅适用于 REPLACE):如果设置,则不必指定所有字段进行重新索引。未提供给命令的字段将从文档的当前版本加载。此外,如果只设置了不可索引的字段、分数或有效负载 - 我们不会对文档进行完整的重新索引,这会快得多。
  • NOCREATE (仅适用于 REPLACE):如果设置,则文档仅在已存在时更新和重新索引。如果文档不存在,将返回错误。
  • FIELDS :在 FIELDS 说明符之后,我们正在寻找 {field} {value} 要索引的成对 。每个字段都将根据 中给出的索引规范进行评分 FT.CREATE 。传递不在索引规范中的字段将使它们作为文档的一部分存储,或者如果设置了 NOSAVE 则被忽略
  • PAYLOAD {payload} :可以选择为文档设置二进制安全有效负载字符串,可以在查询时通过自定义评分函数进行评估,或检索到客户端。在 v2.0 上,这将被转换为创建的哈希中的“__payload”字段。
  • IF {condition} :(仅适用于 REPLACE 和可选 PARTIAL )。仅当布尔表达式适用于 更新前的文档时才更新 文档 ,例如 FT.ADD idx doc 1 REPLACE IF "@timestamp < 23323234234" 。

该表达式在更新之前被原子地计算,确保更新只有在它为真时才会发生。

有关 表达式语言的更多详细信息,请参阅 聚合 。

  • LANGUAGE language :如果设置,我们在索引期间对提供的语言使用词干分析器。默认为英文。如果发送了不受支持的语言,该命令将返回错误。支持的语言有: 阿拉伯语、巴斯克语、加泰罗尼亚语、丹麦语、荷兰语、英语、芬兰语、法语、德语、希腊语、匈牙利语、印度尼西亚语、爱尔兰语、意大利语、立陶宛语、尼泊尔语、挪威语、葡萄牙语、罗马尼亚语、俄语、西班牙语、瑞典语、泰米尔语、土耳其语、中文

如果索引中文文档,您必须将语言设置为 chinese ,以便正确标记中文字符。在 v2.0 上,这将被转换为创建的哈希中的“__language”字段。

添加中文文档

添加中文文档时, LANGUAGE chinese 应设置以便索引器正确标记术语。如果使用默认语言,则将根据标点符号和空格提取搜索词。中文分词器使用分段算法(通过 Friso ),该算法 对文本进行分段并对照预定义的字典进行检查。有关 更多信息,请参阅 词干 。

复杂度

O(n),其中 n 是文档中的标记数

返回值

成功就OK,如果出现问题则出错。

NOADD 如果 IF 条件评估为假,则返回 特殊状态 。

FT.ADD 与 REPLACE 和 PARTIAL

默认情况下,FT.ADD 不允许更新文档,如果它已存在于索引中,则会失败。但是,可以使用 REPLACE 和 REPLACE PARTIAL 选项更新文档。 REPLACE :单独将文档设置为新值,并重新索引它。任何未给出的字段都不会从文档的当前版本加载。 更换部分 :当两个参数都使用时,我们可以只更新部分文档字段,其余的将在重新索引之前加载。不仅如此,如果只更新分数、负载和非索引字段(使用 NOINDEX),我们实际上不会重新索引文档,只是在内部更新其元数据,这样会快很多并且不会产生索引垃圾。

覆盖其他键

FT.ADD 实际上会使用给定的字段和值在 Redis 中创建一个散列。这意味着如果散列已经存在,它将被新值覆盖。

FT.DEL

格式

FT.DEL {index} {doc_id} [DD]

描述

弃用警告

此命令已弃用,用作简单的 redis DEL,删除的文档将从其索引的所有索引中删除”,请改用 DEL。

从索引中删除文档。如果文档在索引中,则返回 1,否则返回 0。

从 v2.0 开始,不再支持 [DD] 选项,删除一个文档意味着同时从 redis 中删除 hash

从 v2.0 开始,从一个索引中删除一个文档会导致该文档从包含它的所有索引中删除

例子

FT.DEL idx doc1

参数

  • index : 索引名称。索引必须先用 FT.CREATE 创建
  • doc_id : 要删除的文档的 id。它实际上不会删除存储文档的 HASH 键。如果需要,请使用 DEL 手动执行此操作。

复杂度

O(1)

返回值

整数回复:如果文档被删除,则为 1,否则为 0。

FT.DROP

格式

FT.DROP {index} [KEEPDOCS]

描述

弃用警告

此命令已弃用,请改用 FT.DROPINDEX。

删除索引和与其关联的所有键。

默认情况下,DROP 也会删除文档哈希,但添加 KEEPDOCS 选项可以将文档保持在原位,准备重新索引。

如果Redis实例上没有其他数据,这相当于FLUSHDB,除了不删除索引规范。

例子

FT.DROP idx KEEPDOCS

参数

  • index :全文索引名称。索引必须先用 FT.CREATE 创建
  • KEEPDOCS :如果设置,删除操作将不会删除实际的文档哈希。

返回值

状态回复:成功就OK。

FT.GET

格式

FT.GET {index} {doc id}

描述

弃用警告

此命令已弃用。请改用 HGETALL。

返回没有属性字段(分数/语言/有效负载)插入的文档内容。

如果文档不存在或者不是 HASH 对象,我们返回一个 NULL 回复

例子

FT.GET idx doc1

参数

  • index : 索引名称。索引必须先用 FT.CREATE 创建
  • documentId :插入索引的文档的 id

返回值

数组回复:文档的字段名和值的键值对

FT.MGET

格式

FT.MGET {index} {docId} ...

描述

弃用警告

此命令已弃用。请改用 HGETALL。

返回没有属性字段(分数/语言/有效负载)插入的文档内容。

此外,它还允许在集群模式下更简单地实现获取文档。

我们返回一个数组,其元素数与发送到命令的键数完全相同。

反过来,每个元素都是表示文档的键值对数组。

如果文档未找到或不是有效的 HASH 对象,则其在父数组中的位置将填充为 Null 回复对象。

例子

FT.MGET idx doc1 doc2

参数

  • index :全文索引名称。索引必须先用 FT.CREATE 创建
  • documentIds :插入索引的请求文档的 id

返回值

Array Reply:一个数组,其元素数与发送给命令的键数完全相同。其中的每个元素要么是表示文档的数组,要么是 Null(如果未找到)。

FT.SYNADD

弃用警告

2.0及以上版本不再支持此命令,直接使用FT.SYNUPDATE。

格式

FT.SYNADD <index name> <term1> <term2> ...

描述

添加同义词组。

该命令用于创建新的同义词组。该命令返回同义词组 ID,稍后可使用该 ID 向该同义词组添加其他术语。只有在添加操作后被索引的文档才会受到影响。