高亮显示
高亮显示全文结果
Redis Stack 使用先进的算法进行高亮和摘要,这使得只有文档的相关部分会出现在搜索查询的响应中。此功能允许用户立即理解文档与其搜索标准的相关性,通常会以粗体文本突出显示匹配的术语。
命令语法
FT.SEARCH ...
SUMMARIZE [FIELDS {num} {field}] [FRAGS {numFrags}] [LEN {fragLen}] [SEPARATOR {sepstr}]
HIGHLIGHT [FIELDS {num} {field}] [TAGS {openTag} {closeTag}]
有两个用于高亮的子命令。第一个是HIGHLIGHT
,它用开始和/或结束标签包围匹配的文本。第二个是SUMMARIZE
,它将字段分割成围绕找到的术语的上下文片段。可以在同一个查询中总结一个字段、高亮一个字段,或者同时执行这两个操作。
Summarization
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
,则会使用内置的标签对添加到每个匹配的术语前后。
字段选择
如果没有将特定字段传递给RETURN
、SUMMARIZE
或HIGHLIGHT
关键字,则返回文档的所有字段。但是,如果这些关键字中的任何一个包含FIELD
指令,则SEARCH
命令将仅返回这些指令中列出的所有字段的总和。
RETURN
关键字被特殊处理,因为它会覆盖在 SUMMARIZE
或 HIGHLIGHT
中指定的任何字段。
在命令 RETURN 1 foo SUMMARIZE FIELDS 1 bar HIGHLIGHT FIELDS 1 baz
中,字段 foo
按原样返回,而 bar
和 baz
没有返回,因为指定了 RETURN
,但没有包含这些字段。
在命令 SUMMARIZE FIELDS 1 bar HIGHLIGHT FIELDS 1 baz
中,bar
被返回为汇总,baz
被返回为高亮。