2012-05-30 1 views
7

Google App Engine은 쿼리 당 하나의 불평등 필터 만 지원한다는 것을 알고 있습니다. 이 제한 사항의 해결 방법은 무엇입니까? 비슷한 효과를 낼 수있는 솔루션이 있습니까?AppEngine Datastore의 비공개 필터

답변

1

쿼리 당 하나의 부등식 필터가 있는지에 대한 해결 방법은 쿼리하는 데이터 집합의 유형에 따라 다릅니다.

예를 들어, 위도 및 경도 주소를 사용하여 위치 데이터를 쿼리하려는 경우 일반적으로 두 속성 (위도 및 경도)의 값 범위를 쿼리해야합니다. 그러나 geohash 알고리즘을 사용하면 단일 속성 만 사용하여 동일한 쿼리를 수행 할 수 있습니다.

3

실제로 GAE는 on the same property 인 경우 여러 개의 부등식 필터를 지원합니다.

이 제한 사항에 대한 대안은 데이터와 관련이 있습니다 (예 : 그것은 당신의 데이터가 어떻게 구조화되고 당신이 어떻게 그것을 쿼리하기를 원하는지에 달려 있습니다. 예를 들어, @Dan Holevoet이 언급했듯이 지역 검색의 경우 다양한 지리 해싱 알고리즘이 있습니다. 기본적으로 이러한 알고리즘은 여러 속성을 하나의 속성으로 결합하는 동시에 속성을 양자화 (이산 값 만들기)하는 작업을 포함합니다. 예를 들어, geo-hashing은 평등 연산자를 통해 검색 할 수 있도록 작은 고정 크기 영역 (= 위도/경도 결합 및 양자화 결합)으로 세계지도를 나눕니다.

0

이 문제를 해결할 때 (예 : 범위를 -에서) 검색 할 때 단일 불평등 필터로 쿼리를 사용합니다. 정렬 순서 (오름차순 또는 내림차순)에 따라 상한 또는 하한을 선택합니다. 그 후 쿼리 필터에없는 하단 또는 상단 제한을 사용하여 결과를 프로그래밍 방식으로 필터링합니다.

+0

이 필요 했습니까? 피터 (Peter)가 언급했듯이 동일한 속성을 가진다면 여러 개의 부등호 필터가 지원됩니다. –

+0

동일한 날짜 필드에 대해 하나의 범위 (~부터)까지 사용하려고합니다. 지원되지 않습니다. 나는 JDO와 함께 사용한다. – alexey28