How to OR null value in Apache Solr query?

emregecer picture emregecer · Oct 6, 2011 · Viewed 14.8k times · Source

The last option to solve this for me was to ask StackOverflow.

I am trying to create a Solr query to get documents that have a specific value on one of its fields OR that does not have a value...

Theorically, this query should have worked.

Here is some information:

Query: (name: john) --> Result count: 15383 //Johns

Query: (name: {* TO *}) --> Result count: 61013 //People that have a name

Query: -(name: {* TO *}) --> Result count: 216888 //People that do not have a name

Now, when I use first and third query in a same query with OR operator, I expect to get (216888 + 15383) results. But SOLR gives 15383 results, simply ignores the effect of third query:

Query: +((name:john) (-(name:{* TO *}))) //This is the query I was used.

Is this a bug of Solr or am I doing wrong in query? Merging two query results is an additional solution but I do not want to do extra code implementation if I could do it with a simple query.

Any help would be appreciated.

Answer

Aliya picture Aliya · Feb 7, 2012

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