7

solr では、nodeId:-1 のような負の数を持つ 1 つのフィールドを検索したいと考えています。schema.xml で、次のように定義しました: <field name="nodeId" type="int" indexed="true" stored="true" />

「nodeId:-1」を使用して次のように検索すると、solr がエラーをスローします: org.apache.lucene.queryParser.ParseException: Cannot parse 'storeId:-1': Encountered " "-" "- "" at line 1, column 8 "(" ... "*" ... ... ... ... ... "[" ... "{" ... ...

答えを得るには、storeId:\-1 または storeId:"-1" で検索する必要があります。

ここでの質問は、エスケープ文字なしで検索するように solr 構成ファイルを変更できますか? または、Java コードを変更せずにこの問題を解決する別の方法。ありがとう。

4

2 に答える 2

3

個人的には、Java コード内で適切にエスケープする方が良い方法だと思います。ClientUtils.escapeQueryCharsが最適な方法です。

于 2011-11-22T14:04:19.483 に答える
2

「-」はクエリパーサーの特殊文字であり、一部の句を禁止としてマークするために使用されます。この文字をエスケープしたくない場合は、クエリパーサーを変更する必要があります。

生のクエリパーサーを試してみることもできますq={!raw f=nodeId}-1が、デフォルトのクエリパーサーの機能はありません。実際、生のクエリパーサーでは、純粋な用語クエリのみを実行できます。

于 2011-11-22T13:00:53.247 に答える