Location
型として格納された座標セットを持つSolrインデックスがあります。このフィールドにnull以外の値があるドキュメントを照会したいと思います。
LocationフィールドでNOT NULLチェックを実行するクエリ構文は何ですか?
標準的な方法は次のとおりです。
fieldName:[* TO *]
を使って ''
ペイジクックが示唆したように左側でもおそらく機能しますが、私は上記のことほど信用していません。そして、これはLocationフィールドに対するものであるため、この論理的な複合フィールドに対して、2つの基礎となる実際のフィールドのいずれかに対してこれを行う必要があるでしょう。それらはfieldName
で始まり、ある種の数値の接尾辞で終わります。 Schema Browserを見て、実際の名前を確認してください。
ここで注意すべき重要なことは、Solrがこのフィールドで完全なインデックススキャンを行うので、このようなクエリはSolrにとってコストがかかることです。多数の個別のロケーションフィールド値がある場合(数千に上る?)、これは大したことです。これをフィルタークエリで実行すると、キャッシュされ、おそらく意味がありません。このクエリを高速で実行する場合は、インデックス作成時にブール値フィールドにインデックスを作成して、このフィールドに値があるかどうかを示す必要があります。
これをクエリに追加できますfieldname:['' TO *]
。これはNOT NULLチェックに相当します。
私はこれを投稿から取得しました- Solr-Field Not Null Searches
場所フィールド(solr.LatLonType)には、次のフィルタークエリを使用します:-fieldName:[-90,-180 TO 90,180]
(この範囲外の座標はまだ無効です)