web-dev-qa-db-ja.com

Solr-NOT NULLロケーションフィールドを必要とするクエリを作成する方法

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

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

26
STW

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

fieldName:[* TO *]

を使って ''ペイジクックが示唆したように左側でもおそらく機能しますが、私は上記のことほど信用していません。そして、これはLocationフィールドに対するものであるため、この論理的な複合フィールドに対して、2つの基礎となる実際のフィールドのいずれかに対してこれを行う必要があるでしょう。それらはfieldNameで始まり、ある種の数値の接尾辞で終わります。 Schema Browserを見て、実際の名前を確認してください。

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

43
David Smiley

これをクエリに追加できますfieldname:['' TO *]。これはNOT NULLチェックに相当します。

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

7
Paige Cook

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

4
mirelon