高亮显示

全文本结果高亮显示

Redis 开源版使用高级算法进行高亮显示和摘要提取,使得文档中只有相关部分出现在搜索查询结果中。此功能让用户能够立即理解文档与他们的搜索条件的相关性,通常会将匹配的术语以粗体文本高亮显示。

命令语法

FT.SEARCH ...
    SUMMARIZE [FIELDS {num} {field}] [FRAGS {numFrags}] [LEN {fragLen}] [SEPARATOR {sepstr}]
    HIGHLIGHT [FIELDS {num} {field}] [TAGS {openTag} {closeTag}]

有两个用于高亮显示的子命令。第一个是 HIGHLIGHT,它用一个开始标签和/或一个结束标签围绕匹配的文本。第二个是 SUMMARIZE,它将字段拆分成围绕找到的术语的上下文片段。可以在同一个查询中对字段进行摘要提取、高亮显示,或同时执行这两种操作。

摘要提取

FT.SEARCH ...
    SUMMARIZE [FIELDS {num} {field}] [FRAGS {numFrags}] [LEN {fragLen}] [SEPARATOR {sepStr}]

摘要提取会将文本分割成更小的片段,每个片段包含找到的术语以及一些额外的周围上下文。

Redis 可以使用 SUMMARIZE 关键字执行摘要提取。如果没有传递额外参数,所有返回的字段都将使用内置默认值进行摘要提取。

SUMMARIZE 关键字接受以下参数

  • FIELDS: 如果存在,必须是第一个参数。其后应跟着要进行摘要提取的字段数量,然后是字段列表。每个字段都会被摘要提取。如果未传递 FIELDS 指令,则所有返回的字段都将被摘要提取。

  • FRAGS: 要返回的片段数量。如果未指定,默认值为 3。

  • LEN: 每个片段应包含的上下文词汇数量。上下文词汇围绕找到的术语。值越大,返回的文本块越大。如果未指定,默认值为 20。

  • SEPARATOR: 用于分隔各个摘要片段的字符串。默认值为 ... ,这在搜索引擎中很常见,但如果您希望以后通过编程方式分隔片段,可以用任何其他字符串覆盖此值。您也可以使用换行符序列,因为在处理结果体时会去除换行符。

高亮显示

FT.SEARCH ... HIGHLIGHT [FIELDS {num} {field}] [TAGS {openTag} {closeTag}]

高亮显示会用用户定义的一对标签围绕找到的术语(及其变体)。这可用于使用标记语言以不同的字体显示匹配文本,或以其他方式使文本显示不同。

Redis 使用 HIGHLIGHT 关键字执行高亮显示。如果没有传递额外参数,所有返回的字段都将使用内置默认值进行高亮显示。

HIGHLIGHT 关键字接受以下参数

  • FIELDS: 如果存在,必须是第一个参数。其后应跟着要高亮显示的字段数量,然后是字段列表。每个存在的字段都会被高亮显示。如果未传递 FIELDS 指令,则所有返回的字段都将被高亮显示。

  • TAGS: 如果存在,其后必须跟着两个字符串。第一个字符串前置于每个匹配的术语,第二个字符串后置于每个匹配的术语。如果未指定 TAGS,则使用内置标签对前置和后置于每个匹配的术语。

字段选择

如果没有将特定字段传递给 RETURNSUMMARIZEHIGHLIGHT 关键字,则返回文档的所有字段。但是,如果这些关键字中的任何一个包含 FIELD 指令,则 SEARCH 命令将仅返回这些指令中列举的所有字段的总和。

RETURN 关键字被特殊对待,因为它会覆盖 SUMMARIZEHIGHLIGHT 中指定的任何字段。

在命令 RETURN 1 foo SUMMARIZE FIELDS 1 bar HIGHLIGHT FIELDS 1 baz 中,字段 foo 按原样返回,而 barbaz 不返回,因为指定了 RETURN,但其中不包含这些字段。

在命令 SUMMARIZE FIELDS 1 bar HIGHLIGHT FIELDS 1 baz 中,bar 返回其摘要,baz 返回其高亮显示。

评价此页面
回到顶部 ↑