0

プレーンでないクエリ内にフィールド化された検索を含むクエリでSolrExtendedDisMaxクエリパーサーを使用する際に問題が発生しました。

ケースは次のとおりです。

パラメータを使用してedismaxリクエスト(defType = edismax)をSOLRに送信すると

  1. qf = field1 ^ 10
  2. q = field2:ciao
  3. 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です

4

1 に答える 1

2

Solr 3.6 を使用している場合、Solr 3.6 で導入された eDisMax および Fielded 検索に関する現在の問題があります。回避策は、フィールド名の前にスペースを入れることです。

したがって、クエリを次のように変更します。

  1. qf=フィールド1^10
  2. q=( field2:ciao)

詳細については、「eDismax: 括弧で囲まれたフィールド化されたクエリが認識されない」を参照してください。

于 2012-06-06T12:44:17.093 に答える