停用词
停用词支持
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
覆盖默认停用词列表
索引的停用词可以在创建索引时定义(或完全禁用),使用 `STOPWORDS` 参数以及 [FT.CREATE
命令。
格式为 `STOPWORDS {number} {stopword} ...` 其中 number 是给定停用词的数量。`STOPWORDS` 参数必须位于 `SCHEMA` 参数之前。例如
FT.CREATE myIndex STOPWORDS 3 foo bar baz SCHEMA title TEXT body TEXT
禁用停用词的使用
要完全禁用停用词,可以将 `STOPWORDS 0` 传递给 FT.CREATE
.
避免在搜索查询中检测停用词
在罕见的情况下,当查询非常长并且由客户端应用程序保证不包含停用词时,可以在解析查询时避免检查它们。这可以节省一些 CPU 时间,只有当查询包含数十个或更多个词语时才值得这样做。在没有验证查询不包含停用词的情况下使用它可能会导致空查询。