2012-08-16 39 views
1

我在Solr得到了意想不到的結果,並希望有人可以提供幫助。對於我正在搜索的字段(索引&查詢),我的schema.xml具有splitOnCaseChange =「1」,默認搜索行爲是「OR」。Solr splitOnCaseChange查詢時間?

我有一個字段「航空公司」索引。當我搜索「航空公司」時,我得到了比賽。當我搜索「航空公司別名」時,我得到了匹配(如預期的那樣,因爲它是或)。但是,當我搜索「AirlineAlias」時,我沒有找到匹配。我期待splitOnCaseChange屬性將術語AirlineAlias查詢分成兩個基本單詞。但是,如果發生這種情況,那麼它應該找到與「航空公司」相匹配的內容(即它應該與「航空公司別名」完全相同的查詢)。

我的理解是否正確?如果是這樣,關於爲什麼我不會得到正確的搜索結果的任何想法?

我已經從下面的schema.xml文件中複製了相關的部分。

在此先感謝您的幫助。

<fieldType name="text_en_splitting" class="solr.TextField" positionIncrementGap="100" autoGeneratePhraseQueries="true"> 
    <analyzer type="index"> 
      <tokenizer class="solr.WhitespaceTokenizerFactory" /> 
      <filter class="solr.StopFilterFactory" 
        ignoreCase="true" 
        words="lang/stopwords_en.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="lang/stopwords_en.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> 

<fields> 

<field name="value" type="text_en_splitting" indexed="true" stored="true" multiValued="true" omitNorms="true" /> 
/fields> 

<solrQueryParser defaultOperator="OR" /> 

回答

2

得到了傑克Krupansky Solr的郵件列表上的答案,所以這裏更新爲未來的搜索...

只需設置autoGeneratePhraseQueries =上=「text_en_splitting」字段 型「假」 。目前的設置將AirlineAlias視爲引用短語「航空公司 別名」。

+0

您應該接受您自己的回覆。 – mihaicc 2012-08-20 23:03:47