我正在尝试以下查询并且只得到零结果(根据我的数据集,我应该得到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中的错误还是我错过了什么?
答案 0 :(得分:2)
Solr将顶级否定查询(-field:something)转换为q = + : -field:某事
似乎你错过了这一部分。
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;
}`