半径が交差するすべてのオブジェクトを返す必要があります。つまり、2 つのオブジェクトの半径の合計は、それらの間の距離よりも大きくなります。
たとえば、次のオブジェクトがあり、検索センターが A だったとします。
A, radius=3k
B, radius=5k, distance from A = 6k
C, radius=15k, distance from A = 100k
上記のオブジェクトを使用して、検索センターがオブジェクト A の場合、オブジェクト B のみを返す必要があります。システムには何千ものオブジェクトが存在する可能性があり、検索センターはそれらのいずれかにある可能性があります。
solr を使用して単純な地理距離フィルタリングを実装しました (つまり、A から 3k のすべてを取得します) が、このクエリをどこから始めればよいかわかりません。これはSolrで行うことができますか? 私はデータにアクセスできるので、ドキュメントを solr にロードする前に、クエリに役立つ必要な値を事前に計算できます。また、Solr 4 を使用しています。
前もって感謝します!
編集:
本当に必要なのは、A (検索センター) の半径と、クエリ自体内で検査されている他のオブジェクトを取得して、それらの違いを使用できるようにすることです。私が現在使用しているクエリは、ポイント x、y の 3k 以内のものを返すだけです。
fl=*,_dist_:geodist()&fq={!geofilt}&pt=x,y&sfield=location&d=3&q=*:*
パラメータは次のd=3
ようにする必要がありますd=(doc1.radius + doc2.radius) >= _dist_
。問題は、クエリ内で比較されているドキュメントの要素をどのように参照するかです。また、疑似フィールド_dist_
をクエリの値として使用できますか?