我有像Elastic一样索引的文件(这是简历):
{
id: 1
title: 'Full Stack Developper',
updatedAt: '2016-01-01'
experiences: [
{
title: 'Java Software Engineer',
endedAt: '2016-01-01'
},
{
title: 'PHP Software Engineer',
endedAt: '2008-01-01'
},
]
}
{
id : 2
title: 'Backend Developper',
updatedAt: '2016-01-01'
experiences: [
{
title: 'Senior PHP Software Engineer',
endedAt: '2016-01-01'
},
{
title: 'Ruby On Rails advocate',
endedAt: '2008-01-01'
},
]
}
我想通过例如并包含“PHP”来提高XP在过去5年结束的简历分数。
有可能这样做吗? (我没有看到任何方法,但Elastic有很多功能!)
由于
答案 0 :(得分:1)
是的,您可以boost
符合特定条件的特定简历的分数。您可以将nested query与function score合并。这是一个基本的例子
{
"query": {
"function_score": {
"query": {
"nested": {
"path": "experiences",
"score_mode": "sum",
"query": {
"bool": {
"must": [
{
"match": {
"experiences.title": "php"
}
},
{
"range": {
"endedAt": {
"gte": "now-5y"
}
}
}
]
}
}
}
},
"boost": 5
}
}
}
这将为您提供所需的结果,我正在使用score_mode:sum
,以便具有多个PHP经验的候选人获得更高的分数。
希望这会有所帮助!!
答案 1 :(得分:0)
感谢@ ChintanShah25的回答,这对我很有帮助。这里是一个完整的请求,在任何地方搜索“java”,并且将通过例如在体验标题中增加术语“java”的文档。 我使用function_score,因为在我的实际情况中我有一些功能。
希望它有所帮助(我不是弹性专家,所以如果你看到错误的语法随意添加评论;)
{
"query": {
"function_score": {
"query": {
"bool": {
"must": {
"term": {
"_all": "java"
}
},
"should": [
{
"nested": {
"path": "experiences",
"score_mode": "sum",
"query": {
"bool": {
"should": [
{
"match": {
"experiences.title": "java"
}
},
{
"range": {
"experiences.start": {
"gte": "now-5y"
}
}
}
]
}
}
}
}
]
}
}
}
}
}