2012-08-16 59 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