2015-11-19 2 views
1

В модуле elasticsearch, который я построил, можно ли вернуть «входной поисковый запрос» в результатах поиска?Возврат «условия поиска» вместе с результатом - Elasticsearch

Например:

GET /signals/_search 
{ 
"query": { 
"match": { 
    "focused_content": "stock" 
} 
} 
} 

Это возвращает

{ 
"took": 2, 
"timed_out": false, 
"_shards": { 
    "total": 5, 
    "successful": 5, 
    "failed": 0 
}, 
"hits": { 
    "total": 1, 
    "max_score": 0.057534903, 
    "hits": [ 
    { 
     "_index": "signals", 
     "_type": "signal", 
     "_id": "13", 
     "_score": 0.057534903, 
     "_source": { 
      "username": "[email protected]", 
      "tags": [ 
       "News" 
      ], 
      "content_url": "http://www.wallstreetscope.com/morning-stock-highlights-western-digital-corporation-wdc-fibria-celulose-sa-fbr-ametek-inc-ame-cott-corporation-cot-graftech-international-ltd-gti/25375462/", 
      "source": null, 
      "focused_content": "Morning Stock Highlights: Western Digital Corporation (WDC), Fibria Celulose SA (FBR), Ametek Inc. (AME), Cott Corporation (COT), GrafTech International Ltd. (GTI) - WallStreet Scope", 
      "time_stamp": "2015-08-12" 
     } 
    } 
    ] 
} 

Можно ли иметь термин вход поиск «запас» по каждому из результатов (например, дополнительный ключ JSON вместе с " content_url "," source "," focus_content "," time_stamp "), чтобы определить, какой поисковый запрос принес этот результат?

Спасибо заранее!

ответ

0

Все, что я могу придумать, будет использовать функцию highlighting. Таким образом, он вернет дополнительный ключ _highlight, и он выделит все, что соответствует.

Это не принесет точных согласующих терминов, tho. Вам придется иметь дело с ними в вашем приложении. Вы могли бы использовать функции pre/post tags, чтобы их каким-то образом специально обернуть их, чтобы ваше приложение могло распознать, что это совпадение.

0

Вы можете использовать блики во всех полях, например, @Evaldas. Это вернет результат вместе со значением в поле, которое соответствует, в окружении настраиваемых тегов (по умолчанию <em>).

GET /signals/_search 
{ 
    "highlight": { 
    "fields": { 
    "username": {}, 
    "tags": {}, 
    "source": {}, 
    "focused_content": {}, 
    "time_stamp": {} 
    } 
}, 
    "query": { 
    "match": { 
     "focused_content": "stock" 
    } 
    } 
} 
Смежные вопросы