0

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> ...
4

2 に答える 2

1

「Was expected one of」ビットに示されているように、Surround は +/- 構文をサポートしていませんが、以下を備えていNOTます。

NOT(fieldName:baz)

ただし、その孤独なNOTに注意してください。

于 2015-07-30T16:12:26.293 に答える