高亮显示
全文本结果高亮显示
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
,则使用内置标签对前置和后置于每个匹配的术语。
字段选择
如果没有将特定字段传递给 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
返回其高亮显示。