2016-07-22 2 views
0

Я новичок в эластичном.
Упругий поиск - отдать предпочтение идеальному совпадению

Я использую эластичный поиск для поиска в поле названия документов, хранящихся в моей базе данных. Больше информации: "title" field - type "String"/indexed and "title.unanalyzed" field - type "String"/unindexed.

Я хочу, чтобы документ, название которого имеет идеальное совпадение с запросом, встречающееся в верхней части результатов поиска, а для всех остальных, я хочу, чтобы они были отсортированы в порядке убывания. Я думаю, что дать оценку 1,1 для документов с точно подобранным названием поможет как эластичные оценки между 0 и 1 для проанализированных полей. Мой текущий запрос:

query: { 
        term: { 
          "title.unanalyzed": "some_title" 
        }, 

        multi_match: { 
          query: "some_title", 
          type: "most_fields", 
          fields: ["title", "other"] 
        } 
     } 

дает ошибку: failed to parse search source. expected field name but got [START_OBJECT]. Нужна помощь, спасибо!

ответ

1

Попробуйте это:

{ 
    "query": { 
    "bool": { 
     "should": [ 
     { 
      "term": { 
      "title.unanalyzed": "some_title" 
      } 
     }, 
     { 
      "multi_match": { 
      "query": "some_title", 
      "type": "most_fields", 
      "fields": [ 
       "title", 
       "other" 
      ] 
      } 
     } 
     ] 
    } 
    } 
} 
Смежные вопросы