以下のようなSolrクエリを実行すると、それがわかりました。ExtendedDismaxQParserのSolrがキーワードANDおよびORを疑問符に変換するのはなぜですか?
q:+fruit +"apple and banana"
ExtendedDismaxQParserは以下に変換されます。 (私はデバッグ出力にparsedqueryするクエリ文字列から行くときの変換を見ることができたdebugQueryフラグを使用する。)
+fruit +"apple ? banana"
これは明らかに、間に任意の単語と単語のリンゴとバナナと一致するようにクエリを変更しますそれら。クエリのフレーズに期待される動作ではありません。
この動作をオフにする方法はありますか?フレーズ内のANDとORを尊重しますか?
以下はJSONデバッグ出力のサニタイズバージョンです。
"rawquerystring":"+(field1:\"apple and health\"^1 field2:\"apple and banana\"^5 field3:\"apple and banana\"^1)", "querystring":"+(field1:\"apple and banana\"^1 field2:\"apple and banana\"^5 field3:\"apple and banana\"^1)", "parsedquery":"(+(PhraseQuery(field1:\"apple ? banana\") PhraseQuery(field2:\"apple ? banana\"^5.0) PhraseQuery(field3:\"apple ? banana\")) (field2:[* TO *]^10.0 hasdescription:y^10.0) FunctionQuery((200.0/(2.0*float(div(ms(const(1499700124562),date(displaydate)),const(84000000)))+20.0))^7.0) FunctionQuery((float(erpm))^0.0) FunctionQuery((200.0/(2.0*float(geodist(latlon(latlong),39.8027,-86.1557))+20.0))^10.0))/no_coord", "parsedquery_toString":"+(field1:\"apple ? banana\" field2:\"apple ? banana\"^5.0 field3:\"apple ? banana\") (field2:[* TO *]^10.0 hasdescription:y^10.0) (200.0/(2.0*float(div(ms(const(1499700124562),date(displaydate)),const(84000000)))+20.0))^7.0 (float(erpm))^0.0 (200.0/(2.0*float(geodist(latlon(latlong),39.8027,-86.1557))+20.0))^10.0", "QParser":"ExtendedDismaxQParser",
使用しているクエリを追加してください。 –
@SanjayDutt私は、Solrからのサニタイズされたデバッグ出力を追加しました。 –