2013-09-18 4 views
1

У меня есть следующие проблемы:Elasticsearch подсветка - не работает

Я делаю некоторые тесты с facetings

Мой сценарий выглядит следующим образом:

https://gist.github.com/nayelisantacruz/6610862

результат я получаю следующим образом:

{ 
    "took": 2, 
    "timed_out": false, 
    "_shards": { 
     "total": 5, 
     "successful": 5, 
     "failed": 0 
    }, 
    "hits": { 
     "total": 2, 
     "max_score": 1, 
     "hits": [] 
    }, 
    "facets": { 
     "title": { 
      "_type": "terms", 
      "missing": 0, 
      "total": 2, 
      "other": 0, 
      "terms": [ 
       { 
        "term": "JavaScript", 
        "count": 1 
       }, 
       { 
        "term": "Java Platform, Standard Edition", 
        "count": 1 
       } 
      ] 
     } 
    } 
} 

, который является прекрасным, b ут проблема в том, что я не могу отобразить «подсветка»

Я ожидал, что результат, как следующее:

.......... ......... . ..........

"facets": { 
    "title": { 
     "_type": "terms", 
     "missing": 0, 
     "total": 2, 
     "other": 0, 
     "terms": [ 
      { 
       "term": "<b>Java</b>Script", 
       "count": 1 
      }, 
      { 
       "term": "<b>Java</b> Platform, Standard Edition", 
       "count": 1 
      } 
     ] 
    } 
} 

.......... .......... .........

Любой может мне помочь и рассказать мне, что я делаю неправильно или что мне не хватает,

Большое спасибо за внимание

ответ

6

Облицовка и выделение - это две совершенно разные вещи. Подсветка работает вместе с поиском, чтобы возвращать выделенные фрагменты для каждого из результатов поиска.

Faceting - совершенно другая история, поскольку фасет эффективно просматривает все термины, индексированные для определенного поля, во всех документах, соответствующих основному запросу. В этом отношении запрос контролирует только документы, которые будут приняты во внимание для выполнения огранки. Вернутся только верхние термины (по умолчанию с более высоким счетом). Эти условия не только связаны с результатами поиска (по умолчанию 10), но и со всеми документами, соответствующими запросу.

Это означает, что термины, возвращенные с фасетками, никогда не выделяются.

Если вы используете highlighting, вы должны увидеть в своем ответе, как упоминалось в ссылке, новый раздел, содержащий выделенные фрагменты для каждого из ваших результатов поиска. Причина, по которой вы не видите этого, заключается в том, что вы запрашиваете поле title.autocomplete, но вы делаете выделение в поле title с включенным require_field_match. Вы либо должны установить require_field_match в true, либо выделить то же поле, на которое вы запрашиваете. Но опять же это не связано с огранкой вообще.

+0

Большое спасибо за Ваш комментарий, это было очень полезно – user1086138

+0

Вас! Возможно, вы захотите принять ответ, если это было полезно http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work – javanna

6

Обратите внимание на использование * вместо _all. Это работает как шарм на всех уровнях вложенности:

POST 123821/Encounters/_search 
{ 
    "query": { 
    "query_string": { 
     "query": "Aller*" 
    } 
    }, 
    "highlight": { 
    "fields": { 
     "*": {} 
    } 
    } 
} 
+0

Для справки о том, почему «_all» не работает для вложенных поля https://www.elastic.co/guide/en/elasticsearch/reference/current/nested.html – elachell

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