正则表达式过滤器提升
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/
中的说明使用分析器时
我正在尝试弄清楚是否可以根据正则表达式提高点击率。例如,搜索带有用户名的记录,我想提升那些以查询开头的记录。我已经尝试过如下查询,但它没有像我希望的那样工作:
{
"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/
中的说明使用分析器时