2016-12-17 25 views
0

クエリに対してSOLRを使用するAPIに対してURLリクエストを作成しようとしています。SOLRクエリでNULL値を持つフィールドを除外します。

私は、さまざまな値を含む多くのフィールドを持つデータがたくさんあり、それらのフィールドのいくつかにはnull値が含まれることがよくあります。

特定のフィールドがnullではなく、実際の値が含まれているすべてのデータを取得するクエリを作成したいとします。

たとえば、各エントリにはtagsという名前のフィールドがあり、これはタグの配列です。タグは、例えば、単語テストとすることができる。

私はタグ:[* TO *]を実行しようとしましたが、タグが返されるすべてのデータセットが返されます。

私はまたタグを試しました:[* TO *]は、タグがヌルでタグが実際に設定されている場所のすべてのデータを返します。

私は、値を持つタグだけが返され、あなたが私を助けてくれることを望む最後のケースに入るためにあらゆることを試みてきました。

+0

をあなたは –

+0

ハイテク@Binoのタグフィールドに正規表現マッチをやってみてくださいあなたはそれがどのように機能するかについて詳しく説明できますか? – Luffen

+0

'tags:/ [A-Za-z0-9] + /'のようなものです。私は正規表現マッチャーのUnicodeサポートについてはわかりませんが、ほとんどの場合、これはうまくいくはずです。 –

答えて

0

andは、ANDとは異なります。これは、クエリで使用するセパレータです。

あなたのクエリはおそらくちょうどまたは(deleted:false)または(tags:[* TO *])(andデフォルトのフィールドではその中のどこかで文書)を検索します。

複数の条件をグループ化するには、適切な区切り文字をスペースで囲んで使用します。また、フィルタクエリ(fq)を静的なもの(deleted:falseなど)に使用することをお勧めします。これは、そのクエリを実際のクエリとは別にキャッシュすることができます。

0

「データの取得」や「フィールドの取得」などの用語を混乱させる可能性があるため、少し混乱します。 SOLRでは、問合せによっての文書(またはレコード)が取得されます。

あなたは、フィールドの「タグ」のいくつかの値を持つすべてのドキュメントをしたい場合は、フィールドの「タグ」に値を持たないすべてのドキュメントをしたい場合は、あなたがして、

(tags:*) 

を使用することができますあなたが使用することができます。

(*:* AND NOT tags:*) 

または

(*:* AND -tags:*) 
+0

HIヒューゴ、答えを おかげで、私が持っています(タグ:*)を試してみましたが、それが単なる文字列フィールドの場合は正常に動作しますが、これはSetなので、まだnullのフィールドを返します – Luffen

+0

フィールドはおそらく**空ではありませんか?カスタムのUpdateRequestProcessorチェーンを使用して空のフィールドを取り除くことができます。 –

+0

が奇妙な場合は、そのようなドキュメントの例を示す必要があります。XMLの代わりにJSONにシリアル化すると、値が何であるかがより明確にわかります(&wt = jsonクエリパラメータでこれを行うことができます) –

関連する問題