我正在针对RACE
类型的已定义字段subcategory
查询单词solr.TextField
,我得到的结果为RACE
,RACING
,其中包含RACED
个字词,但我只需要与单词RACE
匹配的结果。这是Solr
的默认行为还是我在配置中做错了什么?请建议。
注意:我没有在各自的文本文件中添加任何停用词或同义词。
<field name="subcategory" type="text" indexed="true" stored="true" multiValued="false"/>
<fieldType name="text" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.StopFilterFactory"
ignoreCase="true"
words="stopwords.txt"
format="wordset"
/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.SnowballPorterFilterFactory" language="English" protected="protwords.txt"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
<filter class="solr.StopFilterFactory"
ignoreCase="true"
words="stopwords.txt"
format="wordset"
/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.SnowballPorterFilterFactory" language="English" protected="protwords.txt"/>
</analyzer>
</fieldType>
答案 0 :(得分:2)
你的链中有一个词干过滤器:
<filter class="solr.SnowballPorterFilterFactory" language="English" protected="protwords.txt"/>
词干过滤器的任务是将单词减少到它们的共同词干,这意味着race
,racing
,racer
等都将被缩减为相同的词干(可能rac
)。
如果您不想执行词干分析,请从索引和查询链中删除过滤器。
如果您 想要词干,但仅针对某些查询,请使用您想要的分析创建重复字段,然后使用copyField
将相同内容编入两个字段并查询当你不想发生干扰时,没有阻止的领域。