FAQ

Q.positionIncrementGapとはなんですか?

A.

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"のように設定しておくことが普通です。

お見積もり・詳細は KandaSearch チームに
お気軽にお問い合わせください。

お問い合わせ