プレーンでないクエリ内にフィールド化された検索を含むクエリでSolrExtendedDisMaxクエリパーサーを使用する際に問題が発生しました。
ケースは次のとおりです。
パラメータを使用してedismaxリクエスト(defType = edismax)をSOLRに送信すると
- qf = field1 ^ 10
- q = field2:ciao
- debugQuery = on(デバッグ目的)
solrは私が期待するようにクエリを解析します。実際、応答のデバッグ部分は次のように指示します。
[parsedquery_toString] => +field2:ciao
しかし、条件を角かっこで囲むように、式を少しだけ複雑にすると、次のようになります。1. qf = field1 ^ 10 2. q =(field2:ciao)
[parsedquery_toString] => +(((field1:field2:^2.0) (field1:ciao^2.0))~2)
ここで、Solrはフィールド構文を認識していないようです。
私はドキュメントでこの振る舞いについての言及を見つけませんでした、代わりに彼らはそれを言います
このパーサーは、ブール演算子'AND'、'OR'、'NOT'、'+'、および'-'、フィールド検索、用語ブースト、ファジーを含む完全なLuceneQueryParser構文をサポートします。
edismaxパーサーを使用しても、強制ブール値とフィールド化されたクエリを実行したいので、この問題は本当に厄介です。
これを回避する方法を知っていますか?
編集:Solrのバージョンは3.6です