停用词

停用词支持

停用词

Redis Stack 有一份默认的 停用词 列表。这些词通常非常常见,以至于它们不会给搜索添加太多信息,但在索引中会占用大量空间和 CPU 时间。

在索引时,停用词会被丢弃且不会被索引。在搜索时,它们也会被忽略,并被视为未发送到查询处理器的词。这是在解析查询时完成的。

目前,默认停用词列表适用于所有语言中的所有全文索引,并且可以在创建索引时手动覆盖。

默认停用词列表

默认情况下,以下单词被视为停用词

 a,    is,    the,   an,   and,  are, as,  at,   be,   but,  by,   for,
 if,   in,    into,  it,   no,   not, of,  on,   or,   such, that, their,
 then, there, these, they, this, to,  was, will, with

覆盖默认停用词列表

使用 [FT.CREATE 命令的 STOPWORDS 参数,可以在创建索引时定义停用词(或完全禁用)。

格式为 STOPWORDS {number} {stopword} ...,其中 number 是给定的停用词数。STOPWORDS 参数必须在 SCHEMA 参数之前。例如

FT.CREATE myIndex STOPWORDS 3 foo bar baz SCHEMA title TEXT body TEXT 

禁用停用词

通过将 STOPWORDS 0 传递给 FT.CREATE,可以完全禁用停用词。

在搜索查询中避免停用词检测

在极少数情况下,当查询非常长并且客户端应用程序保证不包含停用词时,可以在解析查询时避免检查它们。这可以节省一些 CPU 时间,并且仅当查询包含数十个或更多术语时才值得。在未验证查询不包含停用词的情况下使用此功能可能会导致查询为空。

对本页评分