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 回答