1. 程式人生 > >solr之positionIncrementGap

solr之positionIncrementGap

positionIncrementGap這個特性針對multiValue欄位使用,用於設定多值資料間的間隔,常見用法如下:

    <fieldType name="text_general_pos0" class="solr.TextField" positionIncrementGap="100">
      <analyzer type="index">
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
        <!-- in this example, we will only use synonyms at query time
        <filter class="solr.SynonymGraphFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
        <filter class="solr.FlattenGraphFilterFactory"/>
        -->
        <filter class="solr.LowerCaseFilterFactory"/>
      </analyzer>
      <analyzer type="query">
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
        <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
        <filter class="solr.LowerCaseFilterFactory"/>
      </analyzer>
    </fieldType>

針對多指字元型欄位而言,positionIncrementGap這個值最好不要設定為0,否則查詢到的結果可能不是我們想要的,

上面查詢中cd跟xy屬於兩個短語,但返回的查詢結果仍然將cd xy作為一個短語理解了,為了避免出現上面的問題,一般在設定多值字元型別的positionIncrementGap都設定為非0值,常見值為100

 

注意

上面positionIncrementGap=0導致查詢的問題僅僅出現在同一個文件間,不同的文件間不存在這個問題!!!