How to OR null value in Apache Solr query?

2020-06-11 13:42发布

问题:

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.

回答1:

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



回答2:

You can also use it like this.

&fq=name:john OR !name:['' TO *]


回答3:

try the below query -

q=(name:john OR -(name:[* TO *]))


标签: solr sql-null