Я просто хочу использовать оценку tf-idf в каком-то «проанализированном» поле и использовать «термин» в поле «не_анализ» для сортировки предпочтительных результатов.Но результаты не такие, как я ожидаю.
Согласно официальным документам, поле «not_analyzed» не будет анализироваться, и я считаю, что они не будут рассчитывать баллы по этим полям.Поэтому я хочу воспользоваться этим, чтобы отсортировать то, что я хочу, потому что я хочу использовать оценку tf-idf для определенного поля, чтобы сделать больше вычислений, но оценки меняются, когда я добавляю условие условия.Я пробовал 3 шага: 1. сделать «сопоставить» на анализируемом поле, и этот результат - то, что я хочу 2. объединить «совпадение» и «термин» в поле not_analyzed, но возвращаемый результат немного выше, чем у1-й шаг 3. сделать только «термин» в поле «not_analyzed» и получить результат.
Часть кода была показана ниже, и это 4 записи данных:
data = {"did": 1, "title": "hu la la", "test": [" a "," b "," c "]}
data = {" did ": 2," title ":" hu la "," test ": [" a ","b "," c "]}
data = {" did ": 3," title ":" hu la la "," test ": [" a "," b "]}
data = {"did": 4, "title": "la la", "test": ["a", "b", "c"]}
mappings = {
"properties": {
"did": {"type": "long", "index": "not_analyzed"},
"title": {"type": "string", "index": "analyzed"},
"test": {"type": "string", "index": "not_analyzed"},
}
}
curl -X GET http://localhost:9200/test7/_search?pretty=true -d '
{
"query": {
"bool": {
"must": [
{
"match": {
"title": "la"
}
}
]
}
}
}
'
один из хитов это то, что
{
"_index" : "test7",
"_type" : "default",
"_id" : "AWoRGrIx5vn17yswf0rR",
"_score" : 0.4203996,
"_source" : {
"did" : 1,
"test" : [ "a", "b", "c" ],
"title" : "hu la la"
}
, но когда я добавляю термин
{
"query": {
"bool": {
"must": [
{
"match": {
"title": "la"
}
},
{
"term": {
"test": "a"
}
}
]
}
}
}
'
, его оценка изменилась!
{
"_index" : "test7",
"_type" : "default",
"_id" : "AWoRGrIx5vn17yswf0rR",
"_score" : 0.7176671,
"_source" : {
"did" : 1,
"test" : [ "a", "b", "c" ],
"title" : "hu la la"
}