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 回答