8

クエリ "state:OR" を渡すと、lucene は "OR" をブール句のキーワードと見なすためエラーが発生しましたが、ここでは実際にはオレゴン州の略語を操作しています。

OR を引用すると、クエリが 'state:"OR"' になり、機能することがわかりました。

しかし、lucene が使用する各キーワードの文字列置換を行う必要があるため、これはあまり良いアプローチとは思えません: AND OR NOT およびその他?? 何人かはわかりません

queryParser.parse() を実行する代わりに、クエリを直接構築しようとしましたが、これはアナライザーを通過しないようで、これは大きな問題です。

4

3 に答える 3

7

これをエスケープする方法はいくつかありますが、よりクリーンなのは、先頭のバックスラッシュで AND、OR、& NOT をエスケープすることです。

\\AND \\OR \\NOT

または、コード パーサーは、対応する小文字を演算子として解析しません。

于 2012-05-25T16:17:36.053 に答える
4

Lucene クエリ構文には、AND、OR、NOTの 3 つのスタンドアロン キーワードしかありません。(「TO」も使用されますが、範囲クエリ内でのみ認識されます。)

引用コードが、アプリケーションで実際に用語として使用される Lucene キーワードのみを認識する必要があると役立つ場合があります (上記の例の「OR」など)。

于 2012-04-27T11:49:03.460 に答える
0

履歴書を作るだけでも、他の人がこの問題の答えを探すのに役立つかもしれません。

正しいはずの答えは、icyitscold によって提供されたコメントです。

予約語 (OR、AND、NOT) を小文字( and、or、to ) で使用する必要があります。エラーは発生せず、正しく検索されます。

于 2020-07-29T19:41:45.680 に答える