2015-02-11 130 views
0

我的autosuggest中存在solr停用词问题。所有停用词都由_符号取代。用_符号替换Solr停用词

例如我在文本“deal_title”中有文本“简单文本”。当我尝试搜索单词“simple”solr show me next result“_ simple text _”,但我期望“简单文本”。

有人能解释我为什么这样工作,以及如何解决它? 这里是我的schema.xml中的一部分

<fieldType class="solr.TextField" name="text_auto"> 
    <analyzer type="index"> 
     <charFilter class="solr.HTMLStripCharFilterFactory"/> 
     <tokenizer class="solr.StandardTokenizerFactory"/> 
     <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" /> 
     <filter class="solr.LowerCaseFilterFactory"/> 
     <filter class="solr.RemoveDuplicatesTokenFilterFactory"/> 
     <filter class="solr.ShingleFilterFactory" maxShingleSize="3" outputUnigrams="true" outputUnigramsIfNoShingles="false" /> 
    </analyzer> 
    <analyzer type="query"> 
     <filter class="solr.RemoveDuplicatesTokenFilterFactory"/> 
     <tokenizer class="solr.StandardTokenizerFactory"/> 
     <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" /> 
    </analyzer> 
</fieldType> 

<field name="deal_title" type="text_auto" indexed="true" stored="true" required="false" multiValued="false"/> 

<fieldType name="text_general" class="solr.TextField"> 
    <analyzer type="index"> 
    <tokenizer class="solr.KeywordTokenizerFactory"/> 
    <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="false"/> 
    <filter class="solr.LowerCaseFilterFactory"/> 
    </analyzer> 
    <analyzer type="query"> 
    <tokenizer class="solr.KeywordTokenizerFactory"/> 
    <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="false"/> 
    <filter class="solr.LowerCaseFilterFactory"/> 
    </analyzer> 
</fieldType> 

回答

0

要解决这个问题,你需要在solconfig.xml使用<filter class="solr.StopFilterFactory" words="stopwords.txt" ignoreCase="true" enablePositionIncrements="false" /><luceneMatchVersion>4.3</luceneMatchVersion>

+0

我使用的最后Solr的版本,这就是为什么我有 4.10.3中我的solconfig.xml。看起来我应该降级luceneMatchVersion,因为它不适用于当前版本(4.10.3)。 – 2015-02-13 10:12:56

+0

它不适用于Solr 4.4及更高版本。在Solr5中它将被删除。我试图阻止这一点。 – 2015-02-13 11:01:50

+0

https://issues.apache.org/jira/browse/SOLR-6468 – 2015-02-13 11:19:21

0

我解决这个Solr中6.3(其中enablePositionIncrements="false"是不可能的了)是:

  1. 移除停止词
  2. 木瓦与fillerToken=""(其去除_
  3. 删除开头和结尾的间隔
  4. 删除重复

    <filter class="solr.StopFilterFactory" format="snowball" words="lang/stopwords_de.txt" ignoreCase="true"/> 
    <filter class="solr.ShingleFilterFactory" fillerToken=""/> 
    <filter class="solr.PatternReplaceFilterFactory" pattern="(^ | $)" replacement=""/> 
    <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>