と私はfq=score_dx:[0.0 TO 1]
どのようにOR Solrのクエリでは、null値の範囲
クエリを持っていることは私たちは、これが動作しないscore_dx:[0.0 TO 1] OR score_dx:''
ようなものが必要。どのようにOR null
を既存のfq
としますか?
と私はfq=score_dx:[0.0 TO 1]
どのようにOR Solrのクエリでは、null値の範囲
クエリを持っていることは私たちは、これが動作しないscore_dx:[0.0 TO 1] OR score_dx:''
ようなものが必要。どのようにOR null
を既存のfq
としますか?
は、私はそれが役に立てば幸い、このような-field_name:*
として負の句を使用してみてください。 fq=(score_dx:[0.0 TO 1]) OR (*:* AND -score_dx:[* TO *])
どのように動作し、なぜん:
これは行く方法はありますか?ここでは説明の試み:
Solrの標準クエリパーサが空/ NULL値のフィールドを検索をサポートしません。この状況では、フィールド内の値を持つ文書を除外してフィルタをネゲートする必要があり、クエリが有効なままです。任意の値を一致させるには、負のクエリでワイルドカードを使用するときに矛盾する動作([* TO *]
部分)を防ぐためにrange queryを使用する必要があります。
fq
のparamで否定フィルタを適用し、あなたが(それはANDのように振る舞うだろう)それ以外の場合はORが正しく適用されません後者に
*:*
を追加する必要がありますが、私が説明することはできませんなぜ。ネゲートされたクエリは完全な結果セットを必要とするように見えます。それ以外の場合は、前のフィルタ結果と「交差」します。
私は 'score_dx:[0.2 TO 1] OR(-score_dx:[* TO *] AND *:*)'のようなことをしています。 ITはうまくいくようですが、これが何を意味するのか分かりません(-score_dx:[* TO *] AND *:*)? – user1324887
私はちょうどscore_dx:[0.2 TO 1] OR(-score_dx:[* TO *]) – ameertawfik
こんにちは@ user1324887、@ameertawfikを使っていないのですが、私は '[* TO *]' 2番目のフィルタに '*:* 'を追加する必要があります。 – EricLavault