忽略自定义过滤器得分查询的提升

时间:2013-10-28 12:59:31

标签: elasticsearch

我使用自定义过滤器得分查询,但是在"条款"过滤器被忽略。唯一不被忽视的分数是"脚本"一个在"存在"过滤。我多次查看文档以找到问题,但我没有成功。

这是实际查询:

{
  'from': 0,
  'query': {
    'custom_filters_score': {
      'filters': [
        {
          'filter': {
            'exists': {
              'field': 'tweet_article_poster'
            }
          },
          'script': "doc['actual_rank'].value/5000.0 + 1.0"
        },
        {
          'boost': '1.3',
          'filter': {
            'terms': {
              'entities.text': [
                'Google',
                'Twitter',
                'Obama',
                'NFL'
              ]
            }
          }
        },
        {
          'boost': '1.3',
          'filter': {
            'terms': {
              'category': [
                'Sports',
                'Politics',
                'Technology_Internet'
              ]
            }
          }
        },
        {
          'boost': '2',
          'filter': {
            'terms': {
              'tweet_article_poster': [
                'JoeGumby1',
                'BBCSport',
                'EyeOnNFL',
                'MadeOfWWEAndHTC'
              ]
            }
          }
        }
      ],
      'query': {
        'bool': {
          'must': {
            'range': {
              'added': {
                'from': '2013-10-27T00:00:00'
              }
            }
          },
          'must_not': {
            'term': {
              'show': 'false'
            }
          }
        }
      },
      'score_mode': 'multiply'
    }
  },
  'si

ze':20 }

1 个答案:

答案 0 :(得分:0)

我猜是因为你的术语过滤器与任何东西都不匹配,所以没有应用提升。这可能是因为tweet_article_postercategoryentities.text字段在索引编制过程中被“分析”并因此转换为小写,而术语过滤器不执行分析并尝试查找术语按原样。