Solr Retuning错误的结果 - 不完全匹配

时间:2017-08-01 09:14:57

标签: solr lucene solrj solrcloud

我正在针对RACE类型的已定义字段subcategory查询单词solr.TextField,我得到的结果为RACERACING,其中包含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>

1 个答案:

答案 0 :(得分:2)

你的链中有一个词干过滤器:

<filter class="solr.SnowballPorterFilterFactory" language="English" protected="protwords.txt"/>

词干过滤器的任务是将单词减少到它们的共同词干,这意味着raceracingracer等都将被缩减为相同的词干(可能rac)。

如果您不想执行词干分析,请从索引和查询链中删除过滤器。

如果您 想要词干,但仅针对某些查询,请使用您想要的分析创建重复字段,然后使用copyField将相同内容编入两个字段并查询当你不想发生干扰时,没有阻止的领域。