Solr停用词和空查询

5
我有一个Solr实例,其中包含许多文档和一个索引字段。
我现在想在查询中应用停用词列表,以通过在查询时间完全忽略停用词列表中包含的单词来增加结果数量。
因此,在我的配置中,我在查询分析器中使用solr.StopFilterFactory。
我的期望是,如果我只使用停用词列表中的一个单词进行搜索,则结果集与通配符查询text_title:*相同,即完整的文档集。
但是我得到了0个结果。我是否对停用词过滤器的行为有所遗漏?
1个回答

1

solr.StopFilterFactory

这个过滤器会丢弃或停止分析给定停用词列表中的标记。Solr配置目录中包含一个标准的停用词列表,名为stopwords.txt,适用于典型的英语文本。

https://cwiki.apache.org/confluence/display/solr/Filter+Descriptions#FilterDescriptions-StopFilter

这个过滤器实际上是从查询中删除标记,而不是用*替换
例子:
In: "To be or what?"
Tokenizer to Filter: "To"(1), "be"(2), "or"(3), "what"(4)
Out: "To"(1), "what"(4)

尝试使用这个过滤器。
solr.SuggestStopFilterFactory

与停用词过滤器类似,该过滤器会丢弃或停止分析给定停用词列表中的标记。Suggest Stop Filter 与 Stop Filter 的不同之处在于,它不会删除最后一个标记,除非它后面跟着一个标记分隔符。

通常情况下,您会在索引分析器中使用普通的 StopFilterFactory,然后在查询分析器中使用 SuggestStopFilter。

如果停用词没有跟随标记分隔符,此过滤器将从您的查询中删除停用词。

如何使用:

<analyzer type="query">
  <tokenizer class="solr.WhitespaceTokenizerFactory"/>
  <filter class="solr.LowerCaseFilterFactory"/>
  <filter class="solr.SuggestStopFilterFactory" ignoreCase="true" words="stopwords.txt" format="wordset"/>
</analyzer>

例子:
In: "The The"
Tokenizer to Filter: "the"(1), "the"(2)
Out: "the"(2)

谢谢您的回答,但是这并没有什么用:如果输入为“the the”,并且“the”在停用词列表中,我希望输出为“*”,即所有文档。 - Lorenzo Marcon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接