问题:在分面搜索结果中显示少量Solr停用词。
当前实施:
我在stopwords.txt
文件中至少有30到40个停用词。
Solr facet搜索与停用词完美匹配,如:
表示,是,和,作为
但很少有像
这样的停用词打电话,陈述,询问
显示在方面搜索结果中。我尝试使用solr分析。 Word出现在ST。
我正在使用以下配置
<field name="message" type="text_en" indexed="true" stored="true"
multiValued="true"/>
<fieldType name="text_en" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true"
words="lang/stopwords_en.txt"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.EnglishPossessiveFilterFactory"/>
<filter class="solr.KeywordMarkerFilterFactory"
protected="protwords.txt"/>
<filter class="solr.PorterStemFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt"
ignoreCase="true" expand="true"/>
<filter class="solr.StopFilterFactory" ignoreCase="true"
words="lang/stopwords_en.txt"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.EnglishPossessiveFilterFactory"/>
<filter class="solr.KeywordMarkerFilterFactory"
protected="protwords.txt"/>
<filter class="solr.PorterStemFilterFactory"/>
</analyzer>
</fieldType>
答案 0 :(得分:0)
尝试更改过滤器的顺序。将StopFilterFactory
放在链中的最后。这应该可以防止停用词被索引。
<field name="message" type="text_en" indexed="true" stored="true"
multiValued="true"/>
<fieldType name="text_en" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.EnglishPossessiveFilterFactory"/>
<filter class="solr.KeywordMarkerFilterFactory"
protected="protwords.txt"/>
<filter class="solr.PorterStemFilterFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true"
words="lang/stopwords_en.txt"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt"
ignoreCase="true" expand="true"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.EnglishPossessiveFilterFactory"/>
<filter class="solr.KeywordMarkerFilterFactory"
protected="protwords.txt"/>
<filter class="solr.PorterStemFilterFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true"
words="lang/stopwords_en.txt"/>
</analyzer>
</fieldType>
<强>解释强>
先前的标记器/过滤器的输出作为输入提供给下一个标记器/过滤器。
过滤器检查令牌流并保留,转换或丢弃 他们,或创造新的。 可以组合标记符和过滤器 形成管道或链,其中一个输出输入到 接下来。这样的标记化器和过滤器序列称为 分析仪和分析仪的结果输出用于匹配 查询结果或构建索引。
所以,如果你有一个像&#34;呼叫&#34;它将首先到达fieldType链中的StopFilterFactory
。
因为&#34;呼叫&#34;在你的stopwords.txt文件中没有单词,它将转到PorterStemFilterFactory
,其中&#34;调用&#34;更改为&#34; call&#34;。
检查此website以查看使用PorterStemFilterFactory的根词并对该词进行索引。
这就是您仍然在索引中看到停用词的原因。
根据您使用的Solr版本,您可能会看到一个单词如何&#34;调用&#34;得到索引。
http://YourSolrIPAddress:8983/solr/#/YourCoreORCollection/schema-browser?field=message