Apache Solrのmanaged-schema.xmlにおいてpositionIncrementGapとは、multiValued="true"のフィールドにて、各値間のギャップ値を設定します。
たとえば、次のようなスキーマ設定があるとします。
<fieldType name="text" class="solr.TextField" positionIncrementGap="100">
<analyzer>
<tokenizer name="standard"/>
<filter name="lowercase"/>
</analyzer>
</fieldType>
<field name="body" type="text" indexed="true" stored="true" multiValued="true"/>
こうすることで、multiValued="true"と設定されたbodyフィールドには、次のようなデータを登録できます。
{
"body": [
"I am a boy",
"Girl likes a boy"
]
}
このとき、bodyの1つ目の値"I am a boy"と2つ目の値"Girl likes a boy"の間はpositionIncrementGap="100"の設定により100トークンのギャップがあると解釈され、この事により、次のフレーズ検索ではこの文書がヒットしません。
q=body:"boy girl"
しかし、positionIncrementGap="100"の指定がないと、上記JSONの2文は連続しているとみなされ、上記フレーズクエリによりヒットするようになります。通常、multiValued="true"と指定されているフィールドの配列内の連続している要素同士間でフレーズ検索を行いたくはないので、positionIncrementGap="100"のように設定しておくことが普通です。