전체 텍스트 검색

전체 텍스트 검색에 지리적 경계 다각형 쿼리 도입

지리적 경계 다각형 쿼리

다음을 사용하여 텍스트 검색을 수행하는 기능 지리공간 쿼리 기능은 전체 텍스트 검색(FTS)에서 매우 강력하고 효과적인 기능입니다. 그리고 다음 릴리스에서는 보다 유연한 지리적 경계 다각형 쿼리 기능을 FTS에 추가할 예정입니다.

지금까지 FTS는 두 가지 유형의 지리적 쿼리를 지원합니다. 포인트 거리 쿼리 그리고 바운드 사각형 쿼리지점 거리 쿼리는 다음과 같은 검색을 제공하는 데 도움이됩니다. 주변의 모든 관심 지점을 찾습니다. 를 정렬된 거리 순서대로 정렬하는 반면, Bounded Rectangle 쿼리는 상단_좌측 및 하단_우측 모서리 위에 지정된 사각형 경계 내에서 모든 관심 지점을 찾는 데 도움이 됩니다.

대부분의 실제 사용 사례에서 지리공간 경계는 단순한 직사각형이나 정사각형 영역처럼 나타나지 않고 임의의 모양으로 나타납니다. 물론 직사각형/정사각형은 주어진 공간 쿼리에 대한 1차적인 근사치로 사용될 수 있습니다. 하지만 더 정확한 결과를 얻으려면 영역 경계를 더 세밀하게 지정할 수 있어야 합니다.

이에 따라 전체 텍스트 검색에 지리적 경계 다각형 쿼리가 도입되었습니다.

필수 항목

이 기능은 무작위 경계 다각형 쿼리를 수행하여 해당 다각형 영역에 속하는 문서를 선택하는 기능을 추가합니다. 입력 매개변수는 다각형 영역을 정의하는 경계 다각형 꼭지점을 나타내는 좌표 쌍의 배열입니다. (가급적 시계 반대 방향). 결과는 해당 영역에 있는 문서 목록이어야 합니다.

경계 다각형 쿼리에 대한 몇 가지 고려 사항은 다음과 같습니다:

  • 다각형 좌표의 방향은 geoJSON 표준에 따라 결정됩니다. 참조 - geojson
  • 좌표는 닫힌 형식(마지막 좌표를 첫 번째 좌표와 동일하게 지정)으로도 지정할 수 있지만 반드시 필요한 것은 아닙니다. 
  • 레이 캐스팅 기법을 사용하여 다각형에서 점 포함 여부를 찾습니다.
  • 현재 다각형의 구멍은 지원되지 않습니다. 그러나 사용자가 부울 쿼리를 사용하여 이러한 쿼리를 수행할 수 있는 방법이 있습니다. (도넛과 같은 모양을 쿼리하려면 내부 다각형에 반드시_not 절을 사용하세요).
  • 문서의 검색 가능한 지리적 위치 필드는 미리 빌드된 "지오포인트" 유형을 사용하여 색인을 생성해야 합니다.

운영 방식

FTS로 경계 다각형 쿼리를 얼마나 쉽게 시도해 볼 수 있는지 간단히 살펴보겠습니다. 3단계 과정만 거치면 됩니다:

  1. 경계 사각형/점 거리 쿼리에서와 동일하게 문서를 색인합니다.
  2. 쿼리할 다각형 영역(꼭지점)을 식별합니다.
  3. 아래 예제에서 언급된 geojson 형식 중 하나로 쿼리를 시도해 보세요.

예를 들어 문서에 "geo"라는 이름의 필드가 있고 이 필드에 지리적 위치 정보를 사용하려면 먼저 아래와 같이 인덱스 정의에 포함시켜야 합니다.

인덱싱이 완료되면 검색을 시도할 준비가 된 것입니다!

특정 지역 내에서 문서를 찾고 싶다고 가정해 보겠습니다.

다음과 같은 다각형 쿼리를 사용해 볼 수 있습니다.

curl -XPOST -H "콘텐츠 유형: 애플리케이션/json"
-u : http://:/api/index//쿼리 -d '

{
 "query": {
   "field": "geo",
   "polygon_points": [
     "37.79393211306212,-122.44234633404847",
     "37.77995881733997,-122.43977141339417",
     "37.788031092020155,-122.42925715405579",
     "37.79026946582319,-122.41149020154114",
     "37.79571192027403,-122.40735054016113",
     "37.79393211306212,-122.44234633404847"
   ]
 }
}'

FTS의 모든 지리적 쿼리는 다음을 지원합니다. geoJSON 형식을 사용하므로 위의 샘플 외에도 아래 다각형 좌표 형식 중 하나를 사용할 수 있습니다.

"polygon_points": [
     {"lat": 37.79393211306212, "lon": -122.44234633404847},
    { "lat": 37.77995881733997, "경도": -122.43977141339417},
     { "lat": 37.788031092020155, "경도": -122.4292571540557},
     { "lat": 37.79026946582319,“lon”: -122.41149020154114},
     { "lat": 37.79571192027403,“lon”: -122.40735054016113},
     { "lat": 37.79393211306212, "경도": -122.44234633404847}
   ]

또는

"polygon_points": [
       [  -122.44234633404847,  37.79393211306212],
       [  -122.43977141339417, 37.77995881733997],
       [ -122.42925715405579, 37.78803109202015],
       [ -122.41149020154114, 37.79026946582319],
       [ -122.40735054016113, 37.79571192027403],
       [ -122.44234633404847,37.79393211306212]
     ]

또는

"polygon_points": ["9Q8ZJBKP", "9Q8YVVDH", "9Q8YYP1E", "9Q8YYRW8", "9Q8ZN83X", "9Q8ZJB0J"]

바운디드 폴리곤 쿼리를 직접 사용해보고 싶으신가요? 곧 출시될 Couchbase 서버 릴리스에 주목해 주세요.

자세히 알아보기

이 문서 공유하기
받은 편지함에서 카우치베이스 블로그 업데이트 받기
이 필드는 필수 입력 사항입니다.

작성자

게시자 스리칸트 시바산카란

스리칸트 시바산카란은 Couchbase R&D의 수석 엔지니어/시니어 엔지니어링 매니저입니다. 그는 분산형 고성능 검색 기능의 설계 및 개발을 이끌고 있습니다. 또한 통신, 핸드셋, 엔터프라이즈 소프트웨어, 빅 데이터 기술, 분산 시스템 등 다양한 분야에서 17년 이상의 제품 개발 경력을 보유하고 있습니다.

댓글 남기기

카우치베이스 카펠라를 시작할 준비가 되셨나요?

구축 시작

개발자 포털에서 NoSQL을 살펴보고, 리소스를 찾아보고, 튜토리얼을 시작하세요.

카펠라 무료 사용

클릭 몇 번으로 Couchbase를 직접 체험해 보세요. Capella DBaaS는 가장 쉽고 빠르게 시작할 수 있는 방법입니다.

연락하기

카우치베이스 제품에 대해 자세히 알고 싶으신가요? 저희가 도와드리겠습니다.