Solr:重新索引是否必须用于停止词?

时间:2017-02-01 10:28:18

标签: solr

如果我们在stopwords.txt文件中添加stop-words而不重新索引文档,Solr 4.10.3是否会从查询短语中删除停用词?还是必须重新编制索引文件?

因为我添加了停用词(没有重新索引文档),solr仍然给我结果而不删除停用词。

我在stopwords.txt文件中添加列表后重新启动了solr

<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100">
  <analyzer type="index">
<similarity class="solr.DFRSimilarityFactory">
        <str name="basicModel">I(F)</str>
        <str name="afterEffect">B</str>
        <str name="normalization">H2</str>
    </similarity>
    <tokenizer class="solr.StandardTokenizerFactory"/>
    <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
    <!-- in this example, we will only use synonyms at query time
                 <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
    -->
    <filter class="solr.LowerCaseFilterFactory"/>
  </analyzer>
  <analyzer type="query">
    <tokenizer class="solr.StandardTokenizerFactory"/>
    <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
    <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
    <filter class="solr.LowerCaseFilterFactory"/>
  </analyzer>
</fieldType>

1 个答案:

答案 0 :(得分:2)

考虑查询q =印度钢铁侠

如果您在查询分析器中使用停用词,并且在停用词列表中包含单词of。 solr会将令牌分开,如下所示

Iron, man, of, India 

由于您使用了停用词过滤器,它将丢弃单词"of",它将搜索包含令牌(铁,男,印度)的文档。结果文件分数取决于各种因素,例如doc中存在多少令牌,它出现的次数(tf-IDF得分)

在索引编制期间使用停用词时也是如此。 它将索引标记(铁,人,印度)它不会索引(of)。