2

ドキュメントから、複数の用語でワイルドカード検索を行う方法を理解できませんが、いくつかをブースト/デブーストするだけです。

次のような JSON 構造があります。

{
  'indices_boost': {
    'football': 1.2,
    'horse-race': 1.1
  },
  'query': {
    'bool': {
      'minimum_number_should_match': 2,
      'should': [
        {
          'wildcard': {
            'name': {
              'boost': 1.2,
              'value': 'polan*'
            }
          }
        },
        {
          'wildcard': {
            'nicknames': u
            'polan*'
          }
        },
        {
          'wildcard': {
            'horses': 'polan*'
          }
        },
        {
          'wildcard': {
            'jockeys': 'polan*'
          }
        },
        {
          'wildcard': {
            'parent': {
              'boost': 0.7,
              'value': 'polan*'
            }
          }
        },
        {
          'terms': {
            'minimum_match': 1,
            'state': [
              'upcoming',
              'live'
            ]
          }
        }
      ]
    }
  },
  'size': 5
}

その意図は、フィールドでのワイルドカード マッチをnameブーストする必要がある一方で、parentフィールドでのワイルドカード マッチは依然として関連性がありますが、一致する結果の上に置くべきではありませんname

この特定のクエリは結果を返しません (_allワイルドカードを使用したクエリは結果を返します)。

4

1 に答える 1

3

'boost':0.0 を使用して、一致した用語がスコアに与える影響を排除できます。

フィールドにデフォルト以外のアナライザーが指定されている場合、これらのフィールドには _all フィールドとは異なる用語が含まれている可能性があります。これは、ワイルドカードが _all では機能するのに個々のフィールドでは機能しない理由を説明している可能性があります。

于 2012-05-03T14:53:52.930 に答える