набранное в ElasticSearch чрезвычайно настраиваемый, применяется следующее для запроса времени на основе пользовательского скоринга. Существуют различные другие параметры подсчета очков, по индексу, в вашем сопоставлении (и, следовательно, применяются к каждому запросу), по фильтрам или граням, с использованием ускорений или пользовательского скоринга.
В то время как пользовательский запрос оценки, как правило, является самым мощным решением, здесь представлены документы для различных пользовательских методов подсчета очков для чтения.
Следующая, вероятно, самые простые методы, чтобы применить пользовательский счет во времени запроса, хотя я предлагаю вам прочитать на заказ Score запроса.
"query": {
"filtered": {
"query":
"bool": {
"must": [
{"multi_match": {
"fields": [
"name^4",
"author^3",
"summery^2",
"body^1"
],
"query": "xyz",
"operator": "AND",
"type": "cross_fields",
"analyzer": "standard"
}}
]
}
}
}
}
Для людей, которые ищут этот ответ, но хотят использовать NEST, это тот же запрос, что и NEST. Используйте символ ^, чтобы увеличить определенные поля или использовать OnFieldsWithBoost, чтобы дать собственные баллы, и запрос сортируется по результату.
var query = "xyz";
//Add your field names to a string in lower camelCase as is ES default.
List<string> searchIn = new List<string(new string[] {"_id","name","author","summery","body"});
.Type("blogType")
.SortDescending("_score")
.Query(
q => q.MultiMatch(
t => t.OnFields(
searchIn
.Select(qs => qs == "name" ? "name^4" : qs)
.Select(qs => qs == "author" ? "author^3" : qs)
.Select(qs => qs == "summery" ? "summery^2" : qs)
.Select(qs => qs == "body" ? "body" : qs)
)
.Query(query)
)
)
Если у вас есть правильное отображение (по умолчанию) в ES (C# объекта для ES индексируется JSON объект), вы также можете использовать следующие в пределах OnFields:
t => t.OnFieldsWithBoost(qs => qs.Add(entry => entry.Name, 4.0)
.Add(entry => entry.Author, 3.0)
.Add(entry => entry.Summary, 2.0)
.Add(entry => entry.Body, 1.0))
Можете ли вы поделиться подход вы взяли здесь? – oblivion