次のようなsolrドキュメントがあります。
<doc>
<str name="some_attribute">some_attribute_value</str>
<!-- ... -->
<arr name="locationCoordinates">
<str>48.117,11.539</str>
<str>23.423,11.342</str>
<!-- ... -->
</arr>
</doc>
私の質問は、ドキュメントの返されたフィールドをフィルタリングして、特定の値のみを返すことができるかどうかです。たとえばlocationCoordinates
、別のポイントから 50 km の範囲内にあるフィールドのみを返し、他の値を除外することができます。
つまり、上記のドキュメントを返しますが、最初のlocationCoordinates
.
これがSolrで可能かどうかはよくわかりませんが(ドキュメント指向の構造のため)、少なくとも尋ねることができます:)。
たぶん、この機能を使用する方法と、これに対して「見つけた」代替手段についても詳しく説明する必要があります。
ドキュメントの設計を変更して、場所ごとに 1 つのドキュメントを作成します (長所: 機能、短所: クライアント側で重複をチェックする必要がある、Solr データベース内の重複データの山)
この構造のままにしておきます (長所: 機能します。現在の構造を変更する必要はありません。短所: 自分で (クライアント上で) 正しい座標を並べ替える必要があるため、距離計算で問題が発生します (既にドキュメントをフィルター処理しています)クライアント側で距離を計算すると、データが失われる可能性があります)
Solr側で場所(およびその名前など)の新しいドキュメント「タイプ」を作成し、外部キーのような構造を使用して場所を記事に追加し、距離を計算するためにクエリする必要があります最初に到達可能な場所にアクセスしてから、記事に参加します(長所:すべてがsolr側で機能します。短所:そのためにはSolr-Joinsが必要です)