12

これを解決するための最後のオプションは、StackOverflow に問い合わせることでした。

Solr クエリを作成して、フィールドの 1 つに特定の値を持つドキュメント、または値を持たないドキュメントを取得しようとしています...

理論的には、このクエリは機能するはずでした。

ここにいくつかの情報があります:

クエリ: (名前: ジョン) --> 結果カウント: 15383 //ジョンズ

クエリ: (名前: {* TO *}) --> 結果数: 61013 //名前のある人

Query: -(name: {* TO *}) --> Result count: 216888 //名前のない人

ここで、OR 演算子を使用して同じクエリで最初と 3 番目のクエリを使用すると、(216888 + 15383) の結果が得られると予想されます。ただし、SOLR は 15383 の結果を返し、3 番目のクエリの影響を単純に無視します。

クエリ: +((name:john) (-(name:{* TO *}))) //これは私が使用したクエリです。

これは Solr のバグですか、それともクエリで間違っていますか? 2 つのクエリ結果をマージすることは追加の解決策ですが、単純なクエリで実行できるのであれば、余分なコードの実装はしたくありません。

どんな助けでも大歓迎です。

4

4 に答える 4

23

(-name:[* TO *] AND *:*) OR name:john

于 2012-02-06T23:43:52.417 に答える
0

以下を使用して、null と残りの結果を取得できます

-name:[* TO *] OR *:*
于 2021-06-09T15:49:40.377 に答える
-1

以下のクエリを試してください -

q=(name:john OR -(name:[* TO *]))
于 2011-10-06T09:20:16.667 に答える