近接検索

近接検索(プロキシミティ検索)

近接検索は、フレーズに含まれる単語が隣り合っていなくても、互いに近い位置にあるドキュメントを検索する方法です。探している単語の間に別の語が入る可能性がある場合に有効です。

利用方法

単語を二重引用符で囲み、閉じる引用符の後ろに「~」と数字を付加します。

たとえば、以下のように入力すると、「Fess」と「検索」が距離 3 以内にあるドキュメントを検索できます。

"Fess 検索"~3

数字は、単語の間で許容される位置の移動回数の最大値です (詳しくは後述の「距離の数え方」を参照してください)。数字が大きいほど、単語が離れていても一致します。

フィールドを指定して近接検索を行うこともできます。次の例では、title フィールドを検索します。

title:"Fess 検索"~3

数字を省略して「~」のみを指定した場合 (たとえば "Fess 検索"~) は、単語が隣り合っている必要がある通常のフレーズ検索として扱われます。小数を指定した場合は小数点以下が切り捨てられます (~2.5 は ~2 として扱われます)。

ブーストと組み合わせることもできます。次の例では、近接検索に 2 のブーストを適用します (ブースト検索 を参照)。

"Fess 検索"~5^2

距離の数え方

  • 数字は、単語の間で許容される位置の移動回数の最大値です。対象フィールドのアナライザーが生成したトークンを単位として数え、文字数や空白で区切られた単語数ではありません。英語のテキストでは、おおむね語の間に挟まる単語数になります。解析時にストップワードとして除去された語も数えられます。

  • 単語の順序が入れ替わっていても一致しますが、逆順の場合はより大きな数字が必要です。たとえば「quick brown fox」を含むドキュメントは "quick fox"~1 に一致しますが、"fox quick" に一致させるには ~3 以上が必要です。

"quick fox"~1
"fox quick"~3

日本語などの CJK テキストの場合

日本語などの CJK テキストでは、距離を数える単位がフィールドによって異なります。

  • title や content などの汎用フィールドでは、単語の間にある文字数に近い値になります。

  • 言語別のフィールドでは、形態素を単位として数えられ、除去された助詞なども数えられます。

そのため、単語は空白で区切り、数字は余裕を持って指定してください。

"全文 検索"~5
"大阪 おいしい"~10

空白を含まない文字列 (たとえば "大阪おいしい"~10) は、汎用フィールドでは連続した 1 つの文字列として照合されるため、単語間の近接検索として期待どおりに動作しないことがあります。単語は空白で区切ってください。距離を文字数に正確に換算することはできないため、まず大きめの数字を指定し、結果を確認しながら絞り込んでください。

関連項目