ジオコード・フィルタ

ジオコード型の標準属性で使用する場合、EQLのDISTANCE関数は、指定の参照ポイントからの該当ジオコード属性の距離に基づくフィルタを示します。

DISTANCE関数は、2つのジオコード間の距離(キロメートル単位)を返します。DISTANCEの構文は次のとおりです。
DISTANCE(geoAttribute, TO_GEOCODE(latitude,longtitude))
ここで、geoAttributeは、ジオコード型の標準属性です。
TO_GEOCODE関数は、どちらもDouble型である必要がある指定の緯度および経度のペアからジオコードを作成します。
  • 整数および小数の度数での場所の緯度が指定されます(正の値は北緯を示し、負の値は南緯を示します)。
  • 整数および小数の度数での場所の経度(正の値は東経を示し、負の値は西経を示します)。

ジオコード・フィルタの距離制限は、常にキロメートル単位で表されます。レコードは、ジオコード参照ポイントから緯度/経度のペアまでの距離でフィルタ処理されます。

「間」ジオコード・フィルタ

BETWEEN演算子を使用して、ジオコード属性から参照ポイントまでの距離が2つの境界の間にあることを示します。
  • 下限は、ジオコード属性から参照ポイントまでの、「より大きい」距離(キロメートル単位)を指定します。
  • 上限は、ジオコード属性から参照ポイントまでの、「より小さい」距離(キロメートル単位)を指定します。
次の例では、BETWEEN演算子を使用します。
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
   <soapenv:Header/>
   <soapenv:Body>
      <Request xmlns="http://www.endeca.com/MDEX/conversation/2/0">
        <Language>en</Language>
        <State>
          <DataSourceFilterString>
            COUNTRY_NAME = 'United States of America'
          </DataSourceFilterString>
          <SelectionFilterString>
            DISTANCE(Location, TO_GEOCODE(40.758224, -73.917404)) BETWEEN 1 AND 500
          </SelectionFilterString>
        </State>
        <ContentElementConfig xsi:type="RecordListConfig"
          HandlerFunction="RecordListHandler"
          HandlerNamespace="http://www.endeca.com/MDEX/conversation/handlers/2010"
          Id="RecordList" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
        </ContentElementConfig>
       </Request>
    </soapenv:Body>
</soapenv:Envelope>

問合せは、(Locationプロパティの)場所が参照ポイントから1から500キロメートルであるレコードのみを返します。

「より小さい」および「より大きい」ジオコード・フィルタ

参照ポイントから、指定したキロメートルよりも小さい(または大きい)レコードを返す問合せを作成できます。
  • 「より小さい」ジオコード問合せを作成するには、<(より小さい)演算子のみを使用します。参照ポイントから距離の上限のみを指定するため、返されるレコードはすべてこの上限よりも小さくなります。
  • 「より大きい」ジオコード問合せを作成するには、>(より大きい)演算子のみを使用します。範囲の下限のみを指定するため、返されるレコードはすべてこの下限よりも大きくなります。
次に、「より大きい」ジオコード問合せの例を示します。
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
   <soapenv:Header/>
   <soapenv:Body>
      <Request xmlns="http://www.endeca.com/MDEX/conversation/2/0">
        <State>
          <DataSourceFilterString>
            COUNTRY_NAME = 'United States of America'
          </DataSourceFilterString>
          <SelectionFilterString>
            DISTANCE(Location, TO_GEOCODE(40.758224, -73.917404)) > 200
          </SelectionFilterString>
        </State>
        <ContentElementConfig xsi:type="RecordListConfig"
          HandlerFunction="RecordListHandler"
          HandlerNamespace="http://www.endeca.com/MDEX/conversation/handlers/2010"
          Id="RecordList" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
        </ContentElementConfig>
       </Request>
    </soapenv:Body>
</soapenv:Envelope>

問合せは、(Locationプロパティの)場所が参照ポイントから200キロメートル以上のレコードのみを返します。

「より小さい」問合せの例は、<(より小さい)演算子を使用する以外は同じです。