Solr空間検索の使用
このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。
このトピックはSitecore 9.0以降で有効です。
SitecoreのSolr空間検索機能の一部を使用できます。空間検索は、次の目的で使用します。
-
インデックスポイントを検索します(緯度、経度の形式を使用)
-
円またはバウンディングボックスに基づいて検索結果をフィルタリングする
-
ポイント間の距離でスコアリングを並べ替えるまたはブーストする
Sitecoreは、インデックス作成と検索のためにSolrのSpatialRecursivePrefixTreeFieldTypeタイプ (略してRPT) をサポートしています。インデックス ポイントを保存するためのSitecoreテンプレートがmasterデータベース/sitecore/templates/System/Geospatial/Coordinateつあります。Coordinateテンプレートには、LatitudeとLongitudeの2つのフィールドがあります。このテンプレートからアイテムを作成すると、座標はSolrでインデックス化されます。
使う
使う
次のコード例は、Sitecore LINQクエリを使用して、クアラルンプール市中心部 (座標3.156230と101.713614) から半径10キロメートル以内にあるポイントのリストを検索する方法を示しています。
The WithinRadius API
The WithinRadius API
このAPIには、次の3つのパラメーターがあります。
-
ポイントの座標を含むプロパティ。このプロパティをIndexField("coordinate") としてマークし、Coordinateクラスを返す必要があります。
例えば:
/// <summary>Gets or sets the coordinate of POI.</summary>
IndexField("coordinate")
DataMember
public Coordinate Location { get; set; }
-
特定の距離内にある他のポイントを検索するときに使用する中心点の座標。
-
指定した中心点の座標から一定の距離内にある点を検索するために使用される半径。
4番目の省略可能なパラメーターがあります。これを使用して、Solrが円内ではなく境界ボックス内の点を検索するかどうかを指定します。
Sitecore LINQクエリの順序を使用して、昇順 (デフォルト) または降順の距離で順序付けられたポイントを返すことができます。
WithinRadius APIをOrderByDistance APIまたはOrderByDistanceDescending APIと組み合わせて、指定した半径内にあるポイントのリストを取得できます。結果は、次の例のように、中心点への近さの昇順または降順で並べ替えられます。
WithinRadius.aspx.cs: