ポイントの地理空間的クエリー

ポイントの地理空間的クエリーを実行します。

ポイントの地理空間的クエリーを実行します。

地理空間的なポイント型のスキーマの定義

たとえば、地理空間的なフィールド型のスキーマを以下のように定義します。
<?xml version="1.0" ?>
<schema name="spatial-no-jts" version="1.5">
<types>
<fieldType name="string" class="solr.StrField"/>
<fieldType name="boolean" class="solr.BoolField" />
<!-- When geo="false", indicate worldBounds using ENVELOPE(minX, maxX, maxY, minY) notation -->
<fieldType name="rpt"
class="solr.SpatialRecursivePrefixTreeFieldType"
geo="false"
worldBounds="ENVELOPE(-1000, 1000, 1000, -1000)"
maxDistErr="0.001"
units="degrees" />
</types>
<fields>
<field name="id"  type="string" indexed="true"  stored="true"/>
<field name="point" type="rpt" indexed="true" stored="true" />
</fields>
<uniqueKey>id</uniqueKey>
</schema>

Solr地理空間的なフィールド型

Solr地理空間的なフィールド型の場合、各地理空間的なフィールド型をテーブル・スキーマで宣言します。例:
CREATE TABLE points (
id text PRIMARY KEY, 
point 'PointType')

地理空間的データの挿入または更新

データベースのデータを挿入または更新するには、INSERTまたはUPDATEコマンドで地理型を指定します。例:
INSERT INTO points (id, point) VALUES ('1', 'POINT(5 50)')
INSERT INTO points (id, point) VALUES ('2', 'POINT(100 100)')

地理空間的データのクエリー

SELECT * FROM points WHERE solr_query=' {"q":"*:*", "fq":"point:\"IsWithin(BUFFER(POINT(4.0 49.0), 10.0))\""}';