2016-10-24 6 views

答えて

1

は、私はそれが役に立てば幸い、このような-field_name:*

として負の句を使用してみてください。 fq=(score_dx:[0.0 TO 1]) OR (*:* AND -score_dx:[* TO *])

どのように動作し、なぜん:

+0

私は 'score_dx:[0.2 TO 1] OR(-score_dx:[* TO *] AND *:*)'のようなことをしています。 ITはうまくいくようですが、これが何を意味するのか分かりません(-score_dx:[* TO *] AND *:*)? – user1324887

+0

私はちょうどscore_dx:[0.2 TO 1] OR(-score_dx:[* TO *]) – ameertawfik

+0

こんにちは@ user1324887、@ameertawfikを使っていないのですが、私は '[* TO *]' 2番目のフィルタに '*:* 'を追加する必要があります。 – EricLavault

2

これは行く方法はありますか?ここでは説明の試み:

  • Solrの標準クエリパーサが空/ NULL値のフィールドを検索をサポートしません。この状況では、フィールド内の値を持つ文書を除外してフィルタをネゲートする必要があり、クエリが有効なままです。任意の値を一致させるには、負のクエリでワイルドカードを使用するときに矛盾する動作([* TO *]部分)を防ぐためにrange queryを使用する必要があります。

  • フィルタと同じ fqのparamで否定フィルタを適用し、あなたが(それはANDのように振る舞うだろう)それ以外の場合はORが正しく適用されません後者に *:*を追加する必要がありますが、私が説明することはできませんなぜ。ネゲートされたクエリは完全な結果セットを必要とするように見えます。それ以外の場合は、前のフィルタ結果と「交差」します。

関連する問題