Solr索引删除停用词似乎不起作用

时间:2016-08-29 09:27:41

标签: indexing solr

我想在索引和查询过程中从索引中删除停用词,但不知何故,stopwords.txt中的单词似乎没有从我的索引中删除(我仍然可以在查询中使用这些词并获得结果命中)

这是我的schema.xml:

    <fieldType name="text" class="solr.TextField"         positionIncrementGap="100">
          <analyzer type="index">
            <tokenizer class="solr.StandardTokenizerFactory"/>
            <!-- 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"/>
            <filter class="solr.StopFilterFactory"         ignoreCase="true"         words="stopwords.txt" />
            <filter class="solr.WordDelimiterFilterFactory"         generateWordParts="1" generateNumberParts="1" catenateWords="1"         catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>        
            <filter class="solr.KeywordMarkerFilterFactory"         protected="protwords.txt"/>
            <filter class="solr.KStemFilterFactory"/>
            <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
          </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.StopFilterFactory" ignoreCase="true"         words="stopwords.txt" />
            <filter class="solr.WordDelimiterFilterFactory"         generateWordParts="1" generateNumberParts="1" catenateWords="0"         catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/>        
            <filter class="solr.KeywordMarkerFilterFactory"         protected="protwords.txt"/>
            <filter class="solr.KStemFilterFactory"/>
            <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
          </analyzer>
        </fieldType>
      <field name="_version_" type="long" indexed="true" stored="true"/>
      <field name="id" type="string" indexed="true" stored="true"         required="true" multiValued="false" />
      <field name="post_content" type="text" indexed="true"         stored="true"/>
      <field name="post_title" type="text" indexed="true" stored="true"/>
      <field name="post_date" type="date" indexed="true" stored="true"/>
      <field name="_text_" type="text" indexed="true"         stored="false"          multiValued="true" termVectors="true"                 termPositions="true" termOffsets="true"/>

我正在使用Solr 6.0。

感谢您的任何建议,

萨宾

1 个答案:

答案 0 :(得分:0)

默认情况下,文件stopwords.txt中没有任何停用词。

您可以在Solr给出的任何configSet中检查相同内容。

但是如果你检查conf / lang文件夹,你会发现很多停用词文件。

根据您的语言,您可以使用适合您的任何一种。

出于测试目的,您可以复制stopwords_en.txt文件中的停用词,并将其粘贴到路径stopward.txt中的文件configsets/basic_configs/conf/中。这里的configset可能与您有所不同。这取决于你使用的是哪一个。