2

フィールドを定義する代わりに、「逆」範囲クエリを作成する方法を探しています

<field name="myfield" type="int" ...>

次に、クエリで間隔を指定します

myfield:[x TO y]

スキーマで「間隔フィールド」を定義したい

<field name="myfield" type="<whatever_fits_here>" multivalued="true" ...>

たとえば、このフィールドの値は次のようになります。

[100 TO 250], [460 TO 800], [970 TO 1040]

クエリにはこのフィールドの正確な値が含まれるため、値がその間隔のいずれかに含まれている場合にレコードが一致します。

注: 間隔から多値フィールドにすべての可能な値を収集することは、ここではオプションではありません。これにより、多くの場合、レコードごとに約 10000 の値になります (つまり、間隔の上限と下限はその数だけ異なります)。

4

2 に答える 2

3

このブログ投稿で説明されているポリゴン フィールドは、探しているものでなければなりません。

location(Double,Double)型のスキーマ定義が含まれています。

<fieldType name=”location” class=”solr.PointType” dimension=”2″ subFieldType=”double”/>
<field name=”store” type=”location” indexed=”true” stored=”true”/>

そしてクエリ:

q=store:[44,-90 TO 46,-94]

したがって、range(Int,Int) フィールド タイプとそれを使用する複数値フィールドを作成できます。

q=myfield:[75,* TO *,75] //a range that includes 75
q=myfield:[50,* TO *,100] //a range that includes 50-100

免責事項:私は自分でポリゴン フィールドを使用したことはありません。これらのクエリが多値フィールドでどのように機能するかわかりません。

于 2012-04-26T09:29:40.293 に答える
0

UpdateProcessorでこれを行い、そのフィールドの値を調べて、そのフィールドが属する場所に応じて別のfield2を「range1」、「range2」などに設定してから、field2にクエリを実行します。

于 2012-04-25T09:34:17.543 に答える