2011-07-09 35 views
0

這是我的「文本」字段類型的副本。當我輸入查詢時,同義詞和停用詞不被尊重。但是,WordDelimiterFilterFactor按預期工作....我的模式有問題嗎?我的solr服務似乎沒有應用停用詞和同義詞

http://pastebin.com/i552PCAE(相同的代碼可以在這裏找到)

<fieldType name="text" class="solr.TextField" positionIncrementGap="100" autoGeneratePhraseQueries="true"> 
<analyzer type="index"> 
<tokenizer class="solr.WhitespaceTokenizerFactory"/> 
<!-- in this example, we will only use synonyms at query time 
     <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/> 
     --> 
<!-- Case insensitive stop word removal. 
      add enablePositionIncrements=true in both the index and query 
      analyzers to leave a 'gap' for more accurate phrase queries. 
     --> 
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true"/> 
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/> 
<filter class="solr.LowerCaseFilterFactory"/> 
<filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/> 
<filter class="solr.PorterStemFilterFactory"/> 
</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" enablePositionIncrements="true"/> 
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/> 
<filter class="solr.LowerCaseFilterFactory"/> 
<filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/> 
<filter class="solr.PorterStemFilterFactory"/> 
</analyzer> 
</fieldType> 

回答

0

檢查stopWords.txt中的文件是否是在正確的conf目錄下,並在it.cant想到的任何其他原因停用詞。

0
expand=true 

根據您的同義詞文件,這將匹配所有的同義詞(所以不會取代一個與其他)

# If expand==true, "ipod, i-pod, i pod" is equivalent to the explicit mapping: 
ipod, i-pod, i pod => ipod, i-pod, i pod 
# If expand==false, "ipod, i-pod, i pod" is equivalent to the explicit mapping: 
ipod, i-pod, i pod => ipod 

http://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters#solr.SynonymFilterFactory