1

私のアプリケーションには、開発とプロットという 2 つの主要な概念があります。開発はプロットの集合です。文脈上、開発は住宅開発であり、区画は開発内の住宅/フラットです。

Solr バージョン 4.0 を使用しています。

グループ クエリ (開発 ID でグループ化) を使用して、検索目的でプロットを開発に集約し、次のロジックを使用します: 各開発の最低価格プロットで開発を並べ替えます。開発に価格がゼロのプロットがあり、それ以上の価格のプロットがない場合、それが最も優先度が高くなります。しかし、開発に価格ゼロとゼロより大きい価格のプロットがある場合、並べ替えにはゼロ以外の最低価格を使用する必要があります。

価格は次のように定義されます。

<field name="price" type="int" indexed="true" stored="true" required="false" />

スキーマを変更せずにこれを実装し、開発中のすべてのプロットに対して開発中の最低価格プロットにインデックスを付けようとしています。

私は sort=map(price,0,0,999999999) を試しました。これは、価格が 0 のプロットをはるかに高価なものとして扱い、0 以外の最低価格を使用する問題を解決しますが、これは問題を解決しません。価格が 0 のプロットが 1 つしかない。

グループの並べ替えがグループの最初のアイテムに基づいていることを理解して、 group.sort=map(price,0,0,99999999) も試しましたが、この仮定は正しくないようです。

サンプルデータ:

Development 1:
  Plot 1: Price 1000
  Plot 2: Price 10000
Development 2:
  Plot 3: Price 5000
  Plot 4: Price 8000
Development 3:
  Plot 5: Price 0
  Plot 6: Price 15000
Development 4:
  Plot 7: Price 0

このシナリオでは、正しい並べ替えは次のとおりです。

Developments: 4, 1, 2, 3

これを解決する方法があれば教えてください。

*ユーザーは価格帯でフィルタリングでき、フィルタリングされた結果セットでも上記のロジックが機能する必要があることに注意してください。

4

0 に答える 0