突出显示

突出显示全文结果

Redis Stack 使用高级算法进行突出显示和摘要,这使得只有文档的相关部分才会出现在搜索查询的响应中。此功能使用户能够立即了解文档与其搜索标准的相关性,通常以粗体突出显示匹配的词语。

命令语法

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 Stack可以使用SUMMARIZE关键字进行摘要。如果没有传递额外的参数,所有返回的字段都将使用内置默认值进行摘要。

SUMMARIZE关键字接受以下参数

  • FIELDS: 如果存在,它必须是第一个参数。这之后应该是要摘要的字段数量,后面跟着字段列表。每个字段都被概括。如果没有传递FIELDS指令,则所有返回的字段都会被概括。

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

  • LEN: 每个片段应包含的上下文单词数量。上下文词围绕着找到的词。较高的值将返回更大的文本块。如果没有指定,默认值为 20。

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

突出显示

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

突出显示将使用用户定义的标签对将找到的术语(及其变体)包围起来。这可以用于使用标记语言以不同的字体显示匹配的文本,或者以其他方式使文本看起来不同。

Redis Stack 使用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以突出显示形式返回。

RATE THIS PAGE
Back to top ↑