2

schema.xml(Solr 4.1)に次のフィールド定義があります。

<field name="locationCoordinates" type="location_rpt" indexed="true" stored="true" multiValued="true" />

ここで、基本的に次のクエリを実行します。

地理的ポイントの特定の距離にある座標をフィルタリングし(この部分はすでに機能しています)、最も近いポイントまでの距離を返します。

または実際の状況では:

記事があります。すべての記事は複数のストアで入手できます(ジオロケーションとしてのみ保存されます)(N:N、ただし、Solrでモデル化された記事のみがあります)。次に、特定のポイントの範囲内にある記事をクエリし、それらがそのポイントまでの距離も返すかどうかを調べます。

Solr-Queriesを使用してそれをどのように達成できますか?

4

1 に答える 1

2

私があなたを正しく理解しているなら、あなたが必要としているのは地理的な分類ですよね?

同じことを実現するには、Luceneでカスタムソート機能を使用する必要があります。

スコア、ID、フィールドで並べ替えるだけでは不十分な場合、Luceneでは、FieldComparatorSource抽象基本クラスの独自のサブクラスを提供することでカスタムの並べ替えメカニズムを実装できます。

手順:

1)ソートオブジェクトは、インスタンス化中にFieldComparatorSourceタイプのインスタンスを受け入れます。

2)FieldComparatorSourceを拡張します

3)setNextReader()のFieldComparatorSource内のFieldCacheを使用して座標をロードする必要があります

4)ドキュメントごとに、原点からの距離を計算して、{-1、0、1}のいずれかを返すことができます。

実際には、全体の例は次のリンクに示されています。ただし、無料トライアルに登録する必要があります。

Lucene inAction2の本のカスタムソートへのリンク

于 2013-03-10T19:27:01.810 に答える