正则表达式过滤器提升

Regexp Filter Boost

我正在尝试弄清楚是否可以根据正则表达式提高点击率。例如,搜索带有用户名的记录,我想提升那些以查询开头的记录。我已经尝试过如下查询,但它没有像我希望的那样工作:

{
  "query": {
    "function_score": {
      "functions": [
        {
          "boost_factor": 2,
          "filter": {
            "regexp": {
              "name_not_analyzed": "^frank.*"
            }
          }
        }
      ],
      "score_mode": "multiply",
      "query": {
        "bool": {
          "must": [
            {
              "query_string": {
                "query": "frank",
                "default_operator": "AND"
              }
            },
            {
              "term": {
                "site_id": {
                  "term": 1
                }
              }
            }
          ]
        }
      }
    }
  }
}

这可能吗?如果是这样,如何?谢谢!

这似乎给了我想要的结果:

{
  "query": {
    "bool": {
      "must": [
        {
          "query_string": {
            "query": "frank",
            "default_operator": "AND"
          }
        },
        {
          "term": {
            "site_id": {
              "term": 1
            }
          }
        }
      ],
      "should": [
        {
          "match_phrase_prefix": {
            "name": {
              "query": "frank",
              "max_expansions": 5
            }
          }
        }
      ]
    }
  }
}

按照 http://www.elasticsearch.org/blog/starts-with-phrase-matching/

中的说明使用分析器时