35

Locationタイプとして格納された一連の座標を持つ Solr インデックスがあります。このフィールドの値が null 以外のドキュメントを照会したいと考えています。

場所フィールドで NOT NULL チェックを実行するクエリ構文は何ですか?

4

4 に答える 4

63

標準的な方法は次のとおりです。

fieldName:[* TO *]

''Paige Cook が提案したように左側にa を使用することもおそらくうまくいくでしょうが、私は上記のようにそれを信頼していません. これは場所フィールドに対するものであるため、おそらく、この論理複合フィールドに対して、2 つの基礎となる実際のフィールドの 1 つに対してこれを行う必要があります。fieldNameそれらは、ある種の数値接尾辞で始まり、終わります。Schema Browser を見て、実際の名前を確認してください。

ここで注意すべき重要な点は、このようなクエリは、このフィールドで完全なインデックス スキャンを実行するため、Solr が行うにはコストがかかるということです。多数の個別の場所フィールド値 (数千以上) がある場合、これは大きな問題です。フィルター クエリでこれを行うと、キャッシュされ、おそらく意味がありません。このクエリを高速に実行する場合は、インデックス時にブール フィールドにインデックスを付けて、このフィールドに値があるかどうかを示す必要があります。

于 2012-05-23T18:14:26.927 に答える
11

これをクエリに追加できますfieldname:['' TO *]。これは、NOT NULL チェックと同等です。

私は投稿からこれを得ました - Solr - Field Not Null Searches

于 2012-05-23T15:00:01.230 に答える
6

位置フィールド (solr.LatLonType) の場合、次のフィルター クエリを使用します-fieldName:[-90,-180 TO 90,180](この範囲外の座標は無効です) 。

于 2015-10-30T09:31:05.620 に答える