solr サラウンド クエリを無効にする方法はありますか? 結果を否定するためのより多くのオプションが得られる場合は、fq フィールドで使用しています。
fq={!surround}fieldName:2w(foo,bar)
通常、「-」を先頭に追加してフィルターを無効にします。たとえば、
fq=-fieldName:baz
しかし、サラウンド クエリでこれを行うと、エラーが発生します。
fq=-{!surround}fieldName:2w(foo,bar)
org.apache.solr.search.SyntaxError: org.apache.lucene.queryparser.surround.parser.ParseException: Encountered "<EOF>" at line 1, column 24.
Was expecting one of:
<OR> ...
<AND> ...
<NOT> ...
<W> ...
<N> ...
")" ...
"," ...
"^" ...
「-」は許可されておらず、孤独な NOT を持つことはできません。これは機能します:
q={!surround}AND(fieldName:2w(foo,bar),otherField:baz)
しかし、これは失敗します
q={!surround}AND(NOT(fieldName:2w(foo,bar)),otherField:baz)
org.apache.solr.search.SyntaxError: org.apache.lucene.queryparser.surround.parser.ParseException: Encountered " <NOT> "NOT "" at line 1, column 4.
Was expecting one of:
<OR> ...
<AND> ...
<W> ...
<N> ...
"(" ...
<TRUNCQUOTED> ...
<QUOTED> ...
<SUFFIXTERM> ...
<TRUNCTERM> ...
<TERM> ...