11

Solr でのフィルター クエリの場合、特定のタイプではないすべてのドキュメントと、特定のフィールドに値を持つそのタイプのすべてのドキュメントを含める必要があります。

私はこれを試しました:

fq=(-type_id:(A) OR content:(['' TO *]))

type_idただし、 null を持つ B、C などのドキュメントは除外されますcontent。(type_idstringフィールドであり、contentですtext。)

私はこの質問を見ました: NOT と OR を含む複雑な SOLR クエリと、演算子に関するこの投稿: http://robotlibrarian.billdueber.com/2011/12/solr-and-boolean-operators/。私が持っている構文は正しいはずだと思います。誰でも私のエラーを見ることができますか?


更新: LuceneQParser を使用しています。上記のフィルタ クエリを次のように解析します。

-type_id:A content:['' TO *]

コメント ( -type_id:A OR (content:[* TO *] AND type_id:A))で提案されているフィルター クエリを次のように解析します。

-type_id:A (+content:[* TO *] +type_id:A)

だから結果なし。

4

1 に答える 1

18

否定にはそれと一致する完全なセットが必要なので、フィルターは次のようにする必要があります。

fq=((*:* AND -type_id:A) OR content:(['' TO *]))
于 2015-01-29T17:47:33.677 に答える