Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to OR null value in Apache Solr query?

Tags:

solr

sql-null

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.

like image 434
emregecer Avatar asked Oct 06 '11 09:10

emregecer


2 Answers

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

like image 109
Aliya Avatar answered Oct 25 '22 16:10

Aliya


You can also use it like this.

&fq=name:john OR !name:['' TO *]
like image 25
user1976546 Avatar answered Oct 25 '22 16:10

user1976546