2015-02-11 35 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"/>