除非搜索字词在双引号内,否则我希望排除停用词
例如。 “就像那样”也应该搜索“那个”。
这可能吗?
答案 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才能使用它。