在Solr中搜索精确短语时,有没有办法包含停用词?

时间:2010-04-21 08:41:23

标签: search solr

除非搜索字词在双引号内,否则我希望排除停用词

例如。 “就像那样”也应该搜索“那个”。

这可能吗?

2 个答案:

答案 0 :(得分:16)

这取决于您要查询的字段的配置。

如果索引分析器的配置包含StopFilterFactory,则不会对停用词进行索引,因此您无法在以后查询它们。但是,由于Solr保留了索引中术语的位置,您可以指示它增加剩余术语的位置值,以反映最初的事实,其间有其他术语。

这里的“enablePositionIncrements”是实现这一目标的关键:

<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true"/>

如果查询分析器还使用相同的设置配置了StopFilterFactory,则查询应该按预期工作。

有关详细信息,请参阅此链接: http://www.lucidimagination.com/search/document/CDRG_ch05_5.6.18

答案 1 :(得分:2)

我也很幸运使用CommonGramsFilterFactory来实现类似的结果,方法是将它放在fieldType声明中的适当位置。

<filter class="solr.CommonGramsFilterFactory" words="stopwords.txt" ignoreCase="true"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>

在StopFilterFactory中启用enablePositionIncrements =“true”时,不确定它的效果如何。您还需要运行solr 1.4才能使用它。