2014-07-11 1 views
3

나는 Elasticsearch를 사용하여 데이터베이스에서 이름을 검색하고 있으며 사소한 철자 오류를 허용하기 위해 애매하게하고 싶습니다. 이 문제에서 발견 한 조언을 토대로 필자는 "퍼지 (fuzzy)"대신 "일치 (match)"와 "퍼지 (fuzziness)"를 사용하고 있습니다. 나 또한 처음에 LAST_NAME "너도밤 나무"와 "Berch"와 결과를 얻을 수 (나는 적어도 100이 알고) 나는 LAST_NAME "비치"수많은 결과에도 불구하고, 그러나탄성 검색 퍼지 매칭 : 먼저 직접적인 히트 곡을 어떻게 얻을 수 있습니까?

{ "query": 
    { "match": 
     { "last_name": 
      { "query": "Beach", 
       "type": "phrase", 
       "fuzziness": 2 
      } 
     } 
    } 
} 

: 이것은 내 쿼리입니다 내 조회로 10 건의 조회수가 반환되었습니다. 누군가가 정확한 일치를 먼저 얻는 방법을 찾도록 도와 줄 수 있습니까?

답변

3

2 개의 쿼리를 사용하여 쿼리를 부울 쿼리로 변경해보십시오.

첫 번째 쿼리는 현재 쿼리이고 두 번째 쿼리는 정확히 일치하는 쿼리이므로 큰 쿼리 (예 : 10.0)를 제공합니다.

부분 일치를 계속 나열하면서 정확하게 일치해야합니다.

+0

많은 도움이되었습니다. 감사합니다. –

+1

@ user3784238 어떻게이 작업을 수행 했습니까? 하나와 하나는 쿼리해야합니까? 둘 다 모호하거나 그 중 하나가 없다면? – batmaci