You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@solr.apache.org by Rahul Goswami <ra...@gmail.com> on 2021/06/25 13:12:26 UTC

Function query not working

Hello,
I am using Solr 7.7.2. Below query is not returning expected results on the
sample "techproducts" core.

http://localhost:8983/solr/techproducts/select?debug=query&fq={!func}not(exists(popularity))&q=*:*&wt=json&rows=1

The query returns ALL documents in 'numFound' despite the 'not' function.
Result is the same even when with defType=edismax (although that should not
interfere since I am specifying the 'func' parser).
Does this warrant a JIRA?

Thanks,
Rahul

Re: Function query not working

Posted by Rahul Goswami <ra...@gmail.com>.
Ah I see! I must say this was not at all clear from the documentation. A
few more examples would have helped. Also the fact that there are several
boolean functions available (eg:exists(field)) also led me to thinking that
these could be used in 'fq'. And yes, I am aware of the lucene syntax for
negation ( fq=-(popularity:[* TO *]) in your example), but was just playing
around with functions trying to find a solution to a use-case I am
working on.
Thanks for your response!

Rahul

On Mon, Jun 28, 2021 at 6:18 AM Alessandro Benedetti <a....@sease.io>
wrote:

> Hi,
> if I remember correctly, the {!func} query parser just uses the function to
> assign the score to the search results.
> It won't make much sense to use it in a 'fq' parameter.
> I agree it's not well documented though.
>
> You may be interested in the frange query parser instead:
>
> https://solr.apache.org/guide/8_8/other-parsers.html#function-range-query-parser
>  .
>
> Aside from that, you may achieve the same with a simple range query:
> fq=-(popularity:[* TO *]) (make sure the query parser you use it, supports
> pure negative clauses.
>
> Cheers
> --------------------------
> Alessandro Benedetti
> Apache Lucene/Solr Committer
> Director, R&D Software Engineer, Search Consultant
>
> www.sease.io
>
>
> On Fri, 25 Jun 2021 at 14:12, Rahul Goswami <ra...@gmail.com> wrote:
>
> > Hello,
> > I am using Solr 7.7.2. Below query is not returning expected results on
> the
> > sample "techproducts" core.
> >
> >
> >
> http://localhost:8983/solr/techproducts/select?debug=query&fq={!func}not(exists(popularity))&q=*:*&wt=json&rows=1
> >
> > The query returns ALL documents in 'numFound' despite the 'not' function.
> > Result is the same even when with defType=edismax (although that should
> not
> > interfere since I am specifying the 'func' parser).
> > Does this warrant a JIRA?
> >
> > Thanks,
> > Rahul
> >
>

Re: Function query not working

Posted by Alessandro Benedetti <a....@sease.io>.
Hi,
if I remember correctly, the {!func} query parser just uses the function to
assign the score to the search results.
It won't make much sense to use it in a 'fq' parameter.
I agree it's not well documented though.

You may be interested in the frange query parser instead:
https://solr.apache.org/guide/8_8/other-parsers.html#function-range-query-parser
 .

Aside from that, you may achieve the same with a simple range query:
fq=-(popularity:[* TO *]) (make sure the query parser you use it, supports
pure negative clauses.

Cheers
--------------------------
Alessandro Benedetti
Apache Lucene/Solr Committer
Director, R&D Software Engineer, Search Consultant

www.sease.io


On Fri, 25 Jun 2021 at 14:12, Rahul Goswami <ra...@gmail.com> wrote:

> Hello,
> I am using Solr 7.7.2. Below query is not returning expected results on the
> sample "techproducts" core.
>
>
> http://localhost:8983/solr/techproducts/select?debug=query&fq={!func}not(exists(popularity))&q=*:*&wt=json&rows=1
>
> The query returns ALL documents in 'numFound' despite the 'not' function.
> Result is the same even when with defType=edismax (although that should not
> interfere since I am specifying the 'func' parser).
> Does this warrant a JIRA?
>
> Thanks,
> Rahul
>