Solr4.6のリクエストクエリの構文について
Solrのリクエスト時に、複雑なクエリを投げるとなかなか思い通りに動かないので質問させてください。
たとえば、text_ngram ”製品” と、text_ngram ”説明” というフィールドがあります。
_製品_ / _説明__
X製品A-1 / X説明A-1
X製品A-2 / X製品A-2
X製品A-3 / X製品A-3
X製品B-1 / X製品B-1
Y製品B-2 / Y製品B-2
Y製品C-2 / Y製品C-2
Y製品C-3 / Y製品C-3
Y製品C-4 / Y製品C-4
というデータが登録されていたとして、
製品:(X)-製品:(B)-製品:(1)
というクエリを投げると、
X製品A-2
X製品A-3
がマッチします。
ですが、
製品:(X) AND ((-製品:(B)-製品:(1)) OR (-説明:(1)-説明:(2)))
= X製品A-3 / X説明A-3
とするとき、このクエリでは検索できません。
おそらく、条件句(AND OR NOT)を連続して使うことはできないようです。
※ "AND NOT", "OR NOT"は使えます。
この時、かろうじて期待値が返ってくるクエリが以下です。
製品:(X) AND ((*:* AND NOT 製品:(B) AND NOT 製品:(1)) OR (*:* AND NOT 説明:(1) AND NOT 説明:(2)))
いろいろ試したんですが、うまく検索できるクエリがこれしかありませんでした。
デフォルトオペレータはORになっています。
もう少しスマートにかけないものでしょうか?
複雑な検索を扱うので、
フィールド:(A B C)
等、まとめるのは無しです。