BackEnd/Elasticsearch API

Proximity Search

hanseom 2025. 3. 31. 05:00
반응형

  구문(Phrase) 쿼리와 근접 쿼리(Proximity Search)는 검색 방식에서 중요한 차이점을 가집니다.

  구문 쿼리는 검색어의 정확한 순서와 연속성을 요구합니다. 예를 들어 "New York"이라는 구문 쿼리는 두 단어가 정확히 같은 순서로 붙어있는 문서만 찾습니다. 이는 Elasticsearch에서 match_phrase 쿼리로 구현됩니다.

  반면, 근접 쿼리는 더 유연한 검색을 제공합니다. 검색어들이 정확한 순서나 인접성을 갖지 않아도 되며, 지정된 거리(슬롭/slop) 내에 있으면 결과로 반환됩니다.

 

Proximity Search

  match_phrase 쿼리에 slop 파라미터를 추가하여 Proximity Search를 수행합니다.

GET /my_index/_search
{
  "query": {
    "match_phrase": {
      "content": {
        "query": "quick brown fox",
        "slop": 2
      }
    }
  }
}
  • 해당 쿼리는 "quick", "brown", "fox" 단어들이 지정된 순서로 나타나되, 최대 2개의 단어가 그 사이에 올 수 있음을 의미합니다.

 

slop 파라미터

  • slop은 검색어 간 허용되는 최대 단어 수를 지정합니다.
  • slop: 0은 정확한 구문 일치를 의미합니다.
  • slop 값이 클수록 더 유연한 검색이 가능하지만, 관련성이 떨어질 수 있습니다.

 

단어 순서 무관 검색

GET /my_index/_search
{
  "query": {
    "match_phrase": {
      "text": {
        "query": "search Elasticsearch",
        "slop": 2
      }
    }
  }
}
  • 해당 쿼리는 "Elasticsearch search" 또는 "search using Elasticsearch"와 같은 구문을 찾을 수 있습니다.

 

[참고자료]

반응형