我配置了一个在索引时间和查询时间都使用停用词的字段类型。但是,当我使用分析器分析此字段类型时,我看到那些停用词并且仅从索引端而不是在查询端被删除。这是来自managed_schema文件的字段类型:
[-0.15 0.45 -0.35 0.05]
答案 0 :(得分:2)
您在查询侧使用KeywordTokenizer
。 KeywordTokenizer不执行任何操作-即它 not 不会拆分输入字符串并输入多个令牌。停止过滤器可用于标记,并且由于整个输入字符串现在为一个大标记,因此所有标记均不匹配停用词列表。
鉴于the input string
,当由StandardTokenizer
编制索引时,它将分为三个标记:the
,input
和string
。 the
通常被视为停用词并被删除,您最终在索引中使用input
和string
。
在查询和输入the input string
时,KeywordTokenizer除了将所有内容都保留为单个令牌外什么也不做,因此StopFilter仅看到the input string
。这与任何停用词都不匹配(除非您将整个字符串本身作为停用词),并且不会删除任何内容。
如果这是您想要的行为,则必须使用Tokenizer将字符串拆分为单独的令牌,StandardTokenizer
或WhitespaceTokenizer
可能是不错的选择。