2013-03-05 1 views
7

중첩 된 오브젝트 필드를 강조 표시하는 데 대한 질문이 있습니다. 이와 하나로서 translations.value는 N- 그램 필터가있는 경우중첩 된 오브젝트로 강조 표시 검색 강조

_source: { 

    id: 286 
    translations: [ 
     { 
      id: 568 
      language: lang1 
      value: foo1 bar1 
     } 
     { 
      id: 569 
      language: lang2 
      value: foo2 bar2 
     } 
    ] 

} 

, 그것은 중첩 된 객체의 일치를 강조 할 수 있습니다 :

이 같은 기록을 고려? 그리고 하이라이트 쿼리는 어떻게 생겼을까요?

답장을 보내 주셔서 감사합니다.

+0

오늘 같은 문제를 히트 - 그것은 내가 강조를 알려줍니다 (예를 들어, 값 : 에서는 foo2 바 2 foo2를 검색 할 때) 소스 문서로 다시 묶는 간단한 방법은 아니지만 – Phantomwhale

답변

3

여기에서 같은 문제가 발생합니다. 지금은 신축성있는 검색에서 그것을 할 방법이 있으며 가까운 장래에 없을 것 같습니다.

Developer Shay Banon wrote

는 : 중첩 된 쿼리를 기반으로 강조 할하기 위해

, 중첩 된 문서가 더 문제 (적은 확대됨)입니다을 강조하기 위해, 에서뿐만 아니라 추출 할 필요가있다.

Also

는 :

그의 설명은이 아이들의 많은 수의있을 수 로 메모리의 좋은 시간이 걸릴 것이라고했다. 그리고 그것은 정품이 봐서 이 기능을 추가하면 처리의 기본 개념을 한 번에 N 개의 피드를 위반합니다.

유일한 방법은 하이라이트를 추가하기 위해 자신의 programm에서 수동으로 쿼리 결과를 처리하는 것입니다.

업데이트

나는 타이어 또는 N- 그램 필터에 대해 알고하지 않습니다하지만 난 중첩 된면과면 필터를 사용하여 중첩 된 문서를 일치하는 모든 필터를 검색 할 수있는 방법을 발견했다. 하이라이팅을 위해 별도의 쿼리가 필요하지만 적어도 내 경우에는 _source를 탐색하는 것보다 훨씬 빠릅니다.

{"query": 
    {"match_all":{}}, 
    "facets":{ 
     "matching_translations":{ 
      "nested":"translations", 
      "terms":{"field":"translations.value"}, 
      "facet_filter":{ 
       "bool":{"must":[{"terms":{"translations.value":["foo1"]}}]} 
      } 
     } 
    } 
} 

결과 패싯 용어를 사용하여 프로그램에서 강조 표시 할 수 있습니다.

예를 들면 : 나는 (JQuery와)에 중첩 된 문서에 대한 링크를 강조하려는 :

setHighlights = function(sdata){ 
     var highlightDocs = []; 
     if(sdata['facets'] && sdata['facets']['docIDs'] && sdata['facets']['doctIDs']['terms'] && sdata['facets']['docIDs']['terms'].length >0){ 
      for(var i in sdata['facets']['docIDs']['terms']){ 
       highlightDocs.push(sdata['facets']['docIDs']['terms'][i]['term']) 
      } 
     } 
     $('li.document_link').each(function(){ 
      if($.inArray($(this).attr('id'),highlightDocs) != -1) { 
       $(this).addClass('document_selected'); 
      } 
     }); 

나는 그 조금 도움이되기를 바랍니다. .

-1

당신은 force_source "를 사용할 수 있습니다 : 문서가 한 번 중첩 된 필드가 결합되어 강조 원인이 분야에서 진실을