2015-06-01 6 views
1

ElasticSearch Query формируется с использованием строки запроса с несколькими операторами AND/OR. т. е. ((Условие 1 ИЛИ Условие 2) И (Условие 3 ИЛИ Условие 4 ИЛИ Условие 5)), в зависимости от условия, которое оно предоставляет мне несколько документов. Для получения точного условия я снова повторяю все результирующие документы и отмечаю особые условия. Есть ли простой способ получить результирующие условия, характерные для документов?Извлечение условий сопоставления из строки запроса

Может ли кто-нибудь предоставить лучший пример, используя NEST API?

ответ

0

Я думаю, что вам нужно, чтобы выделить данные, которые сделали удар по вашему запросу. Выделение функциональности elasticsearch фактически маркирует текст из каждого результата поиска, чтобы пользователь мог понять, почему документ соответствует запросу. Отмеченный текст возвращается в ответе.

Пожалуйста, обратитесь к elasticsearch documentation, чтобы понять, как это работает. Обратитесь к Nest Documentation, чтобы узнать, как вы можете реализовать его с помощью библиотеки Nest.

Например, с помощью elasticsearch API представить себе следующий пример:

GET /someIndex/someType/_search 
{ 
    "query" : { 
     "match_phrase" : { 
      "about" : "rock climbing" 
     } 
    }, 
    "highlight": { 
     "fields" : { 
      "about" : {} 
     } 
    } 
} 

То же самое с гнездом:

var result = _client.Search<someIndex>(s => s 
    .Query(q => q 
     .MatchPhrase(qs => qs 
      .OnField(e => e.about) 
      .Query("rock climbing") 
     ) 
    ) 
    .Highlight(h => h 
     .OnFields(f => f 
      .OnField(e => e.about) 
     ) 
    ) 
); 

Ответ будет иметь форму ниже для каждого результата поиска (обратите внимание на выделить часть)

"_score": 0.23013961, 
"_source": { 
    "first_name": "John", 
    "last_name": "Smith", 
    "age":   25, 
    "about":  "I love to go rock climbing", 
    "interests": [ "sports", "music" ] 
}, 
"highlight": { 
    "about": [ 
     "I love to go <em>rock</em> <em>climbing</em>" 
    ] 
} 
+0

Thanks Manolis, ваш комментарий был очень полезным. – Jack

Смежные вопросы