停用词

停用词支持

Redis 开源版有一个默认的停用词列表。这些词通常非常常见,对搜索没有太多附加信息,但在索引中占用大量空间和 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 {数量} {停用词} ...,其中数量是给定的停用词个数。STOPWORDS 参数必须在 SCHEMA 参数之前。例如

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

禁用停用词

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

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

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

评价本页
返回顶部 ↑