2011-12-27 43 views
1

我有各種文本字段,有時它們的值在它們中有超/短劃線,例如,歐米加3。現在,當我搜索'歐米茄'或甚至'歐米茄'時,我會得到相關的結果,但是當我搜索'歐米茄-3'時,我得到零結果。Solr:使用'hypens'/破折號搜索返回零結果

在'WordDelimiterFilterFactory'中設置catenateAll = 1是否解決了這個問題?如果是,那麼我是否應該在查詢時間和索引時間將它設置爲1?還是有什麼我需要做的,以解決這個問題?謝謝!

以下是定義文本字段類型的模式部分。

<fieldType name="text" class="solr.TextField" positionIncrementGap="100"> 
     <analyzer type="index"> 
      <tokenizer class="solr.WhitespaceTokenizerFactory" /> 

      <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.SnowballPorterFilterFactory" language="English" 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.SnowballPorterFilterFactory" language="English" protected="protwords.txt" /> 
      <filter class="solr.PorterStemFilterFactory"/> 
     </analyzer> 
    </fieldType> 
+0

請包括相關查詢URL和哪個查詢解析器處理它。這很牽強,但如果Dismax正在處理它,'-3'將意味着''3'被禁止從結果中「:-)除了遠處的場景,破折號可能是*打破了*語法:字符在[ URL級別](http://www.w3schools.com/tags/ref_urlencode.asp)和[solr級別](http://lucene.apache.org/java/2_9_1/queryparsersyntax.html#Escaping+Special+Characters) – aitchnyu 2011-12-28 08:17:19

回答