You are viewing a plain text version of this content. The canonical link for it is here.
Posted to solr-user@lucene.apache.org by Abhishek Mishra <so...@gmail.com> on 2017/04/03 08:54:25 UTC

edismax parsing confusion

Hi all
i am running solr query with these parameter

bf: "sum(product(new_popularity,100),if(exists(third_price),50,0))"
qf: "test_product^5 category_path_tf^4 product_id gender"
q: "handbags between rs150 and rs 400"
defType: "edismax"

parsed query is like below one

for q:-
(+(DisjunctionMaxQuery((category_path_tf:handbags^4.0 | gender:handbag |
test_product:handbag^5.0 | product_id:handbags))
DisjunctionMaxQuery((category_path_tf:between^4.0 | gender:between |
test_product:between^5.0 | product_id:between))
+DisjunctionMaxQuery((category_path_tf:rs150^4.0 | gender:rs150 |
test_product:rs150^5.0 | product_id:rs150))
+DisjunctionMaxQuery((category_path_tf:rs^4.0 | gender:rs |
test_product:rs^5.0 | product_id:rs))
DisjunctionMaxQuery((category_path_tf:400^4.0 | gender:400 |
test_product:400^5.0 | product_id:400))) DisjunctionMaxQuery(("":"handbags
between rs150 ? rs 400")) (DisjunctionMaxQuery(("":"handbags between"))
DisjunctionMaxQuery(("":"between rs150")) DisjunctionMaxQuery(("":"rs
400"))) (DisjunctionMaxQuery(("":"handbags between rs150"))
DisjunctionMaxQuery(("":"between rs150")) DisjunctionMaxQuery(("":"rs150 ?
rs")) DisjunctionMaxQuery(("":"? rs 400")))
FunctionQuery(sum(product(float(new_popularity),const(100)),if(exists(float(third_price)),const(50),const(0)))))/no_coord

but for dismax parser it is working perfect:

(+(DisjunctionMaxQuery((category_path_tf:handbags^4.0 | gender:handbag |
test_product:handbag^5.0 | product_id:handbags))
DisjunctionMaxQuery((category_path_tf:between^4.0 | gender:between |
test_product:between^5.0 | product_id:between))
DisjunctionMaxQuery((category_path_tf:rs150^4.0 | gender:rs150 |
test_product:rs150^5.0 | product_id:rs150))
DisjunctionMaxQuery((product_id:and))
DisjunctionMaxQuery((category_path_tf:rs^4.0 | gender:rs |
test_product:rs^5.0 | product_id:rs))
DisjunctionMaxQuery((category_path_tf:400^4.0 | gender:400 |
test_product:400^5.0 | product_id:400))) DisjunctionMaxQuery(("":"handbags
between rs150 ? rs 400"))
FunctionQuery(sum(product(float(new_popularity),const(100)),if(exists(float(third_price)),const(50),const(0)))))/no_coord


*according to me difference between dismax and edismax is based on some
extra features plus working of boosting fucntions.*



Regards,
Abhishek

Re: edismax parsing confusion

Posted by Greg Pendlebury <gr...@gmail.com>.
Try declaring your mm as 1 then and see if that assumption is correct.
Default 'mm' values are complicated to describe and depend on a variety of
factors. Generally if you want it to be a certain value, just declare it.

On 5 April 2017 at 02:07, Abhishek Mishra <so...@gmail.com> wrote:

> Hello guys
> sorry for late response. @steve I am using solr 5.2 .
> @greg i am using default mm from config file(According to me it is default
> mm is 1).
>
> Regards,
> Abhishek
>
> On Tue, Apr 4, 2017 at 5:27 AM, Greg Pendlebury <greg.pendlebury@gmail.com
> >
> wrote:
>
> > eDismax uses 'mm', so knowing what that has been set to is important, or
> if
> > it has been left unset/default you would need to consider whether 'q.op'
> > has been set. Or the default operator from the config file.
> >
> > Ta,
> > Greg
> >
> >
> > On 3 April 2017 at 23:56, Steve Rowe <sa...@gmail.com> wrote:
> >
> > > Hi Abhishek,
> > >
> > > Which version of Solr are you using?
> > >
> > > I can see that the parsed queries are different, but they’re also very
> > > similar, and there’s a lot of detail there - can you be more specific
> > about
> > > what the problem is?
> > >
> > > --
> > > Steve
> > > www.lucidworks.com
> > >
> > > > On Apr 3, 2017, at 4:54 AM, Abhishek Mishra <so...@gmail.com>
> > > wrote:
> > > >
> > > > Hi all
> > > > i am running solr query with these parameter
> > > >
> > > > bf: "sum(product(new_popularity,100),if(exists(third_price),50,0))"
> > > > qf: "test_product^5 category_path_tf^4 product_id gender"
> > > > q: "handbags between rs150 and rs 400"
> > > > defType: "edismax"
> > > >
> > > > parsed query is like below one
> > > >
> > > > for q:-
> > > > (+(DisjunctionMaxQuery((category_path_tf:handbags^4.0 |
> > gender:handbag |
> > > > test_product:handbag^5.0 | product_id:handbags))
> > > > DisjunctionMaxQuery((category_path_tf:between^4.0 | gender:between |
> > > > test_product:between^5.0 | product_id:between))
> > > > +DisjunctionMaxQuery((category_path_tf:rs150^4.0 | gender:rs150 |
> > > > test_product:rs150^5.0 | product_id:rs150))
> > > > +DisjunctionMaxQuery((category_path_tf:rs^4.0 | gender:rs |
> > > > test_product:rs^5.0 | product_id:rs))
> > > > DisjunctionMaxQuery((category_path_tf:400^4.0 | gender:400 |
> > > > test_product:400^5.0 | product_id:400))) DisjunctionMaxQuery(("":"
> > > handbags
> > > > between rs150 ? rs 400")) (DisjunctionMaxQuery(("":"handbags
> > between"))
> > > > DisjunctionMaxQuery(("":"between rs150"))
> DisjunctionMaxQuery(("":"rs
> > > > 400"))) (DisjunctionMaxQuery(("":"handbags between rs150"))
> > > > DisjunctionMaxQuery(("":"between rs150"))
> > > DisjunctionMaxQuery(("":"rs150 ?
> > > > rs")) DisjunctionMaxQuery(("":"? rs 400")))
> > > > FunctionQuery(sum(product(float(new_popularity),const(
> > > 100)),if(exists(float(third_price)),const(50),const(0)))))/no_coord
> > > >
> > > > but for dismax parser it is working perfect:
> > > >
> > > > (+(DisjunctionMaxQuery((category_path_tf:handbags^4.0 |
> > gender:handbag |
> > > > test_product:handbag^5.0 | product_id:handbags))
> > > > DisjunctionMaxQuery((category_path_tf:between^4.0 | gender:between |
> > > > test_product:between^5.0 | product_id:between))
> > > > DisjunctionMaxQuery((category_path_tf:rs150^4.0 | gender:rs150 |
> > > > test_product:rs150^5.0 | product_id:rs150))
> > > > DisjunctionMaxQuery((product_id:and))
> > > > DisjunctionMaxQuery((category_path_tf:rs^4.0 | gender:rs |
> > > > test_product:rs^5.0 | product_id:rs))
> > > > DisjunctionMaxQuery((category_path_tf:400^4.0 | gender:400 |
> > > > test_product:400^5.0 | product_id:400))) DisjunctionMaxQuery(("":"
> > > handbags
> > > > between rs150 ? rs 400"))
> > > > FunctionQuery(sum(product(float(new_popularity),const(
> > > 100)),if(exists(float(third_price)),const(50),const(0)))))/no_coord
> > > >
> > > >
> > > > *according to me difference between dismax and edismax is based on
> some
> > > > extra features plus working of boosting fucntions.*
> > > >
> > > >
> > > >
> > > > Regards,
> > > > Abhishek
> > >
> > >
> >
>

Re: edismax parsing confusion

Posted by Abhishek Mishra <so...@gmail.com>.
Hello guys
sorry for late response. @steve I am using solr 5.2 .
@greg i am using default mm from config file(According to me it is default
mm is 1).

Regards,
Abhishek

On Tue, Apr 4, 2017 at 5:27 AM, Greg Pendlebury <gr...@gmail.com>
wrote:

> eDismax uses 'mm', so knowing what that has been set to is important, or if
> it has been left unset/default you would need to consider whether 'q.op'
> has been set. Or the default operator from the config file.
>
> Ta,
> Greg
>
>
> On 3 April 2017 at 23:56, Steve Rowe <sa...@gmail.com> wrote:
>
> > Hi Abhishek,
> >
> > Which version of Solr are you using?
> >
> > I can see that the parsed queries are different, but they’re also very
> > similar, and there’s a lot of detail there - can you be more specific
> about
> > what the problem is?
> >
> > --
> > Steve
> > www.lucidworks.com
> >
> > > On Apr 3, 2017, at 4:54 AM, Abhishek Mishra <so...@gmail.com>
> > wrote:
> > >
> > > Hi all
> > > i am running solr query with these parameter
> > >
> > > bf: "sum(product(new_popularity,100),if(exists(third_price),50,0))"
> > > qf: "test_product^5 category_path_tf^4 product_id gender"
> > > q: "handbags between rs150 and rs 400"
> > > defType: "edismax"
> > >
> > > parsed query is like below one
> > >
> > > for q:-
> > > (+(DisjunctionMaxQuery((category_path_tf:handbags^4.0 |
> gender:handbag |
> > > test_product:handbag^5.0 | product_id:handbags))
> > > DisjunctionMaxQuery((category_path_tf:between^4.0 | gender:between |
> > > test_product:between^5.0 | product_id:between))
> > > +DisjunctionMaxQuery((category_path_tf:rs150^4.0 | gender:rs150 |
> > > test_product:rs150^5.0 | product_id:rs150))
> > > +DisjunctionMaxQuery((category_path_tf:rs^4.0 | gender:rs |
> > > test_product:rs^5.0 | product_id:rs))
> > > DisjunctionMaxQuery((category_path_tf:400^4.0 | gender:400 |
> > > test_product:400^5.0 | product_id:400))) DisjunctionMaxQuery(("":"
> > handbags
> > > between rs150 ? rs 400")) (DisjunctionMaxQuery(("":"handbags
> between"))
> > > DisjunctionMaxQuery(("":"between rs150")) DisjunctionMaxQuery(("":"rs
> > > 400"))) (DisjunctionMaxQuery(("":"handbags between rs150"))
> > > DisjunctionMaxQuery(("":"between rs150"))
> > DisjunctionMaxQuery(("":"rs150 ?
> > > rs")) DisjunctionMaxQuery(("":"? rs 400")))
> > > FunctionQuery(sum(product(float(new_popularity),const(
> > 100)),if(exists(float(third_price)),const(50),const(0)))))/no_coord
> > >
> > > but for dismax parser it is working perfect:
> > >
> > > (+(DisjunctionMaxQuery((category_path_tf:handbags^4.0 |
> gender:handbag |
> > > test_product:handbag^5.0 | product_id:handbags))
> > > DisjunctionMaxQuery((category_path_tf:between^4.0 | gender:between |
> > > test_product:between^5.0 | product_id:between))
> > > DisjunctionMaxQuery((category_path_tf:rs150^4.0 | gender:rs150 |
> > > test_product:rs150^5.0 | product_id:rs150))
> > > DisjunctionMaxQuery((product_id:and))
> > > DisjunctionMaxQuery((category_path_tf:rs^4.0 | gender:rs |
> > > test_product:rs^5.0 | product_id:rs))
> > > DisjunctionMaxQuery((category_path_tf:400^4.0 | gender:400 |
> > > test_product:400^5.0 | product_id:400))) DisjunctionMaxQuery(("":"
> > handbags
> > > between rs150 ? rs 400"))
> > > FunctionQuery(sum(product(float(new_popularity),const(
> > 100)),if(exists(float(third_price)),const(50),const(0)))))/no_coord
> > >
> > >
> > > *according to me difference between dismax and edismax is based on some
> > > extra features plus working of boosting fucntions.*
> > >
> > >
> > >
> > > Regards,
> > > Abhishek
> >
> >
>

Re: edismax parsing confusion

Posted by Greg Pendlebury <gr...@gmail.com>.
eDismax uses 'mm', so knowing what that has been set to is important, or if
it has been left unset/default you would need to consider whether 'q.op'
has been set. Or the default operator from the config file.

Ta,
Greg


On 3 April 2017 at 23:56, Steve Rowe <sa...@gmail.com> wrote:

> Hi Abhishek,
>
> Which version of Solr are you using?
>
> I can see that the parsed queries are different, but they’re also very
> similar, and there’s a lot of detail there - can you be more specific about
> what the problem is?
>
> --
> Steve
> www.lucidworks.com
>
> > On Apr 3, 2017, at 4:54 AM, Abhishek Mishra <so...@gmail.com>
> wrote:
> >
> > Hi all
> > i am running solr query with these parameter
> >
> > bf: "sum(product(new_popularity,100),if(exists(third_price),50,0))"
> > qf: "test_product^5 category_path_tf^4 product_id gender"
> > q: "handbags between rs150 and rs 400"
> > defType: "edismax"
> >
> > parsed query is like below one
> >
> > for q:-
> > (+(DisjunctionMaxQuery((category_path_tf:handbags^4.0 | gender:handbag |
> > test_product:handbag^5.0 | product_id:handbags))
> > DisjunctionMaxQuery((category_path_tf:between^4.0 | gender:between |
> > test_product:between^5.0 | product_id:between))
> > +DisjunctionMaxQuery((category_path_tf:rs150^4.0 | gender:rs150 |
> > test_product:rs150^5.0 | product_id:rs150))
> > +DisjunctionMaxQuery((category_path_tf:rs^4.0 | gender:rs |
> > test_product:rs^5.0 | product_id:rs))
> > DisjunctionMaxQuery((category_path_tf:400^4.0 | gender:400 |
> > test_product:400^5.0 | product_id:400))) DisjunctionMaxQuery(("":"
> handbags
> > between rs150 ? rs 400")) (DisjunctionMaxQuery(("":"handbags between"))
> > DisjunctionMaxQuery(("":"between rs150")) DisjunctionMaxQuery(("":"rs
> > 400"))) (DisjunctionMaxQuery(("":"handbags between rs150"))
> > DisjunctionMaxQuery(("":"between rs150"))
> DisjunctionMaxQuery(("":"rs150 ?
> > rs")) DisjunctionMaxQuery(("":"? rs 400")))
> > FunctionQuery(sum(product(float(new_popularity),const(
> 100)),if(exists(float(third_price)),const(50),const(0)))))/no_coord
> >
> > but for dismax parser it is working perfect:
> >
> > (+(DisjunctionMaxQuery((category_path_tf:handbags^4.0 | gender:handbag |
> > test_product:handbag^5.0 | product_id:handbags))
> > DisjunctionMaxQuery((category_path_tf:between^4.0 | gender:between |
> > test_product:between^5.0 | product_id:between))
> > DisjunctionMaxQuery((category_path_tf:rs150^4.0 | gender:rs150 |
> > test_product:rs150^5.0 | product_id:rs150))
> > DisjunctionMaxQuery((product_id:and))
> > DisjunctionMaxQuery((category_path_tf:rs^4.0 | gender:rs |
> > test_product:rs^5.0 | product_id:rs))
> > DisjunctionMaxQuery((category_path_tf:400^4.0 | gender:400 |
> > test_product:400^5.0 | product_id:400))) DisjunctionMaxQuery(("":"
> handbags
> > between rs150 ? rs 400"))
> > FunctionQuery(sum(product(float(new_popularity),const(
> 100)),if(exists(float(third_price)),const(50),const(0)))))/no_coord
> >
> >
> > *according to me difference between dismax and edismax is based on some
> > extra features plus working of boosting fucntions.*
> >
> >
> >
> > Regards,
> > Abhishek
>
>

Re: edismax parsing confusion

Posted by Steve Rowe <sa...@gmail.com>.
Hi Abhishek,

Which version of Solr are you using?

I can see that the parsed queries are different, but they’re also very similar, and there’s a lot of detail there - can you be more specific about what the problem is?

--
Steve
www.lucidworks.com

> On Apr 3, 2017, at 4:54 AM, Abhishek Mishra <so...@gmail.com> wrote:
> 
> Hi all
> i am running solr query with these parameter
> 
> bf: "sum(product(new_popularity,100),if(exists(third_price),50,0))"
> qf: "test_product^5 category_path_tf^4 product_id gender"
> q: "handbags between rs150 and rs 400"
> defType: "edismax"
> 
> parsed query is like below one
> 
> for q:-
> (+(DisjunctionMaxQuery((category_path_tf:handbags^4.0 | gender:handbag |
> test_product:handbag^5.0 | product_id:handbags))
> DisjunctionMaxQuery((category_path_tf:between^4.0 | gender:between |
> test_product:between^5.0 | product_id:between))
> +DisjunctionMaxQuery((category_path_tf:rs150^4.0 | gender:rs150 |
> test_product:rs150^5.0 | product_id:rs150))
> +DisjunctionMaxQuery((category_path_tf:rs^4.0 | gender:rs |
> test_product:rs^5.0 | product_id:rs))
> DisjunctionMaxQuery((category_path_tf:400^4.0 | gender:400 |
> test_product:400^5.0 | product_id:400))) DisjunctionMaxQuery(("":"handbags
> between rs150 ? rs 400")) (DisjunctionMaxQuery(("":"handbags between"))
> DisjunctionMaxQuery(("":"between rs150")) DisjunctionMaxQuery(("":"rs
> 400"))) (DisjunctionMaxQuery(("":"handbags between rs150"))
> DisjunctionMaxQuery(("":"between rs150")) DisjunctionMaxQuery(("":"rs150 ?
> rs")) DisjunctionMaxQuery(("":"? rs 400")))
> FunctionQuery(sum(product(float(new_popularity),const(100)),if(exists(float(third_price)),const(50),const(0)))))/no_coord
> 
> but for dismax parser it is working perfect:
> 
> (+(DisjunctionMaxQuery((category_path_tf:handbags^4.0 | gender:handbag |
> test_product:handbag^5.0 | product_id:handbags))
> DisjunctionMaxQuery((category_path_tf:between^4.0 | gender:between |
> test_product:between^5.0 | product_id:between))
> DisjunctionMaxQuery((category_path_tf:rs150^4.0 | gender:rs150 |
> test_product:rs150^5.0 | product_id:rs150))
> DisjunctionMaxQuery((product_id:and))
> DisjunctionMaxQuery((category_path_tf:rs^4.0 | gender:rs |
> test_product:rs^5.0 | product_id:rs))
> DisjunctionMaxQuery((category_path_tf:400^4.0 | gender:400 |
> test_product:400^5.0 | product_id:400))) DisjunctionMaxQuery(("":"handbags
> between rs150 ? rs 400"))
> FunctionQuery(sum(product(float(new_popularity),const(100)),if(exists(float(third_price)),const(50),const(0)))))/no_coord
> 
> 
> *according to me difference between dismax and edismax is based on some
> extra features plus working of boosting fucntions.*
> 
> 
> 
> Regards,
> Abhishek