停用词
停用词支持
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 时间,并且只有在查询包含数十个或更多字词时才值得。如果在不验证查询不包含停用词的情况下使用此方法可能会导致空查询。