4

次のクエリを試していますが、結果はゼロです (データセットによると、10 個の結果が得られるはずです)。

http://mymachine:8983/solr/select/?q=-(HOSTID:302)

以下のクエリも試してみましたが、結果はゼロでした。

http://mymachine:8983/solr/select/?q=NOT(HOSTID:302)

ただし、このようにクエリを配置すると、10件の結果(予想)が得られます。

http://mymachine:8983/solr/select/?q=-(HOSTID:302)AND(*:*)

なぜこの奇妙なことが起こっているのですか?それはsolrのバグですか、それとも何か不足していますか?

4

1 に答える 1

3

solr メーリング リストの Ahmet Arslan が解決策を教えてくれました。将来の利益のためにここで言及するだけです。

Solr はトップレベルのネガティブクエリ (-field:something) を q=+ : -field:somethingに変換します

その部分が欠けているようです。

org.apache.solr.search.QueryUtils

`/** Fixes a negative query by adding a MatchAllDocs query clause.
  * The query passed in *must* be a negative query.
  */
 public static Query fixNegativeQuery(Query q) {
   BooleanQuery newBq = (BooleanQuery)q.clone();
   newBq.add(new MatchAllDocsQuery(), BooleanClause.Occur.MUST);
   return newBq;
 }`
于 2012-06-12T06:04:41.180 に答える