

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)

等、まとめるのは無しです。


CC BY-SA 3.0
2015-04-09T09:32:33.343
8950
2015-04-21T07:43:50.957
2015-04-21T07:43:50.957
7214
8396
question
java apache solr
Solr4.6のリクエストクエリの構文について