我正在试图弄清楚是否有可能根据正则表达式提升命中率。例如,使用用户名搜索记录,我想提升那些以查询开头的记录。我尝试了类似下面的查询,但它不像我想的那样工作:
{
"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
}
}
}
]
}
}
}
}
}
这可能吗?如果是这样,怎么样?谢谢!
答案 0 :(得分:0)
这似乎给了我想要的结果:
{
"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/
中的说明使用分析仪时