2016-09-29 8 views
0

검색어에 "house garden garage"라는 검색어가 있다고 가정합니다. 색인에있는 문서에는 "집, 정원", "정원, 차고"및 "집 차고"만 포함되지만 문서에는 세 단어가 모두 포함되어 있지 않습니다.여러 단어 검색, 일치하지 않는 단어 표시

현재 쿼리는 split_keyword 분석기와 연산자 "AND"로 빌드됩니다. 그래서 쿼리는 결과를 반환하지 않습니다.

그러나 하나의 검색어가 생략되면 결과가 나타납니다.

3 개의 조건 중 일부만 일치하는 문서를 반환하고 결과에서 생략 된 용어를 얻을 수 있습니까?

내가보기에 유일한 방법은 "OR"연산자를 사용하여 쿼리를 실행하고 각 필드에 대해 단일 단어의 점수를 선택하고 일치하는 용어를 찾는다는 것입니다. 그러나 이것은 의도하지 않은 것으로 보인다.

답변

0

나는 여기 Named Queries이 매우 도움이 될 것이라고 생각합니다. 당신은 결과에서 예를 들어

{ 
    "query": { 
    "bool": { 
     "should": [ 
     { 
      "match": { 
      "your_field": { 
       "query": "house", 
       "_name" : "house" 
      } 
      } 
     }, 
     { 
      "match": { 
      "your_field": { 
       "query": "garden", 
       "_name" : "garden" 
      } 
      } 
     }, 
     { 
      "match": { 
      "your_field": { 
       "query": "garage", 
       "_name" : "garage" 
      } 
      } 
     } 
     ] 
    } 
    } 
} 

에 일치가 일치하는 단어를 알려줍니다 matched_queries 필드를 확인하는 단어를 알아 내기 위해 _name PARAM 인다 절에 쿼리를 작성할 수 있고 당신은 알아낼 수있을 것이다 조건이 생략되었습니다.