Re: Boost query syntax error

2014-03-03 Thread Chris Hostetter

: But this query does not work:
: 
: q={!boost
: b=if(exists(query({!v='user_type:ADMIN'})),10,1)}id:1rows=1fl=*,score
: It gives an error like this:

The problem is the way you are trying to nest queries inside of each other 
w/o any sort of quoting -- the parser has no indication that the b param 
is if(exists(query({!v='user_type:ADMIN'})),10,1) it thinks it' 
if(exists(query({!v='user_type:ADMIN' and the rest is confusing it.

If you quote the b param to the boost parser, then it should work...

http://localhost:8983/solr/select?q={!boost%20b=%22if%28exists%28query%28{!v=%27foo_s:ADMIN%27}%29%29,10,1%29%22}id:1

...or if you could use variable derefrencing, either of these should 
work...

http://localhost:8983/solr/select?q={!boost%20b=$b}id:1b=if%28exists%28query%28{!v=%27foo_s:ADMIN%27}%29%29,10,1%29
http://localhost:8983/solr/select?q={!boost%20b=if(exists(query($nestedq)),10,1)}id:1nestedq=foo_s:ADMIN


-Hoss
http://www.lucidworks.com/


Re: Boost query syntax error

2014-03-03 Thread Arun Rangarajan
All of them work like a charm! Thanks, Chris.


On Mon, Mar 3, 2014 at 1:28 PM, Chris Hostetter hossman_luc...@fucit.orgwrote:


 : But this query does not work:
 :
 : q={!boost
 : b=if(exists(query({!v='user_type:ADMIN'})),10,1)}id:1rows=1fl=*,score
 : It gives an error like this:

 The problem is the way you are trying to nest queries inside of each other
 w/o any sort of quoting -- the parser has no indication that the b param
 is if(exists(query({!v='user_type:ADMIN'})),10,1) it thinks it'
 if(exists(query({!v='user_type:ADMIN' and the rest is confusing it.

 If you quote the b param to the boost parser, then it should work...


 http://localhost:8983/solr/select?q={!boost%20b=%22if%28exists%28query%28{!v=%27foo_s:ADMIN%27}%29%29,10,1%29%22}id:1

 ...or if you could use variable derefrencing, either of these should
 work...


 http://localhost:8983/solr/select?q={!boost%20b=$b}id:1b=if%28exists%28query%28{!v=%27foo_s:ADMIN%27}%29%29,10,1%29

 http://localhost:8983/solr/select?q={!boost%20b=if(exists(query($nestedq)),10,1)}id:1nestedq=foo_s:ADMIN


 -Hoss
 http://www.lucidworks.com/



Boost query syntax error

2014-02-28 Thread Arun Rangarajan
The Solr function query documentation (
https://wiki.apache.org/solr/FunctionQuery#exists) says:

exists(query({!v='year:2012'})) will return true for docs with year=2012

I have a document like:

{
  id: 1,
  user_type: ADMIN,
  like_score: 1
}
id, user_type and like_score are all indexed and stored files, with id
being int, user_type being string and like_score being int.

I issue a query like this:

q={!boost b=if(true,10,1)}id:1rows=1fl=*,score
which works.

But this query does not work:

q={!boost
b=if(exists(query({!v='user_type:ADMIN'})),10,1)}id:1rows=1fl=*,score
It gives an error like this:

error:{
  msg:org.apache.solr.search.SyntaxError: Cannot parse ')),5,10)}id:1':
Encountered \ \)\ \) \\ at line 1, column 0.\nWas expecting one of:\n
   NOT ...\n\+\ ...\n\-\ ...\nBAREOPER ...\n\(\
...\n\*\ ...\nQUOTED ...\nTERM ...\nPREFIXTERM
...\nWILDTERM ...\nREGEXPTERM ...\n\[\ ...\n\{\
...\nLPARAMS ...\nNUMBER ...\nTERM ...\n\*\ ...\n
 ,
  code:400
}
How do I fix the query?

This syntax works:

q={!func}if(exists(query({!v='user_type:ADMIN'})),5,10)rows=1fl=*,score
but it doesn't give the multiplicative score I want.