Re: Default query parser operator

2011-06-15 Thread Chris Hostetter


You might be able to do something like this in a custom QParser.  look at 
the LuceneQParser as an example, but replace usages of QueryParser with 
your own subclass of QueryParser where you override the getBooleanQuery 
method and muck with the Occur property of the BooleanClauses if they all 
have the same field.

the thing you might not want though is that by the time you get to that 
part of the API there's no way to tell the diff between...

field1:foo field1:bar
field1:(foo bar)

...not sure if you care.

you'd also have to consider what you want to happen if some one entered...

field1:foo field1:bar field1:baz field2:xx

...because at that layer of the API it's a sigle list of BooleanClauses.

Another thing to consider is that the new QueryParser framework might make 
dealing with this a lot easier (but i'm jues guessing, i'm not really 
familiar with it)...

http://lucene.apache.org/java/3_2_0/api/contrib-queryparser/index.html


:   field1:foo field2:bar field1:baz field2:bom 
:  
:   would by written as
:  
:   http://localhost:8983/solr/?q=field1:foo OR field2:bar OR field1:baz OR
:   field2:bom
:  
:   But if they were written together like:
:  
:   http://localhost:8983/solr/?q=field1:(foo baz) field2:(bar bom)
:  
:   I would want it to be
:  
:   http://localhost:8983/solr/?q=field1:(foo AND baz) OR field2:(bar OR
:  bom)



-Hoss


Re: Default query parser operator

2011-06-10 Thread Brian Lamb
It could, it would be a little bit clunky but that's the direction I'm
heading.

On Tue, Jun 7, 2011 at 6:05 PM, lee carroll lee.a.carr...@googlemail.comwrote:

 Hi Brian could your front end app do this field query logic?

 (assuming you have an app in front of solr)



 On 7 June 2011 18:53, Jonathan Rochkind rochk...@jhu.edu wrote:
  There's no feature in Solr to do what you ask, no. I don't think.
 
  On 6/7/2011 1:30 PM, Brian Lamb wrote:
 
  Hi Jonathan,
 
  Thank you for your reply. Your point about my example is a good one. So
  let
  me try to restate using your example. Suppose I want to apply AND to any
  search terms within field1.
 
  Then
 
  field1:foo field2:bar field1:baz field2:bom
 
  would by written as
 
  http://localhost:8983/solr/?q=field1:foo OR field2:bar OR field1:baz OR
  field2:bom
 
  But if they were written together like:
 
  http://localhost:8983/solr/?q=field1:(foo baz) field2:(bar bom)
 
  I would want it to be
 
  http://localhost:8983/solr/?q=field1:(foo AND baz) OR field2:(bar OR
 bom)
 
  But it sounds like you are saying that would not be possible.
 
  Thanks,
 
  Brian Lamb
 
  On Tue, Jun 7, 2011 at 11:27 AM, Jonathan Rochkindrochk...@jhu.edu
   wrote:
 
  Nope, not possible.
 
  I'm not even sure what it would mean semantically. If you had default
  operator OR ordinarily, but default operator AND just for field2,
  then
  what would happen if you entered:
 
  field1:foo field2:bar field1:baz field2:bom
 
  Where the heck would the ANDs and ORs go?  The operators are BETWEEN
 the
  clauses that specify fields, they don't belong to a field. In general,
  the
  operators are part of the query as a whole, not any specific field.
 
  In fact, I'd be careful of your example query:
 q=field1:foo bar field2:baz
 
  I don't think that means what you think it means, I don't think the
  field1 applies to the bar in that case. Although I could be wrong,
  but
  you definitely want to check it.  You need field1:foo field1:bar, or
  set
  the default field for the query to field1, or use parens (although
 that
  will change the execution strategy and ranking): q=field1:(foo bar)
  
 
  At any rate, even if there's a way to specify this so it makes sense,
 no,
  Solr/lucene doesn't support any such thing.
 
 
 
 
  On 6/7/2011 10:56 AM, Brian Lamb wrote:
 
  I feel like this should be fairly easy to do but I just don't see
  anywhere
  in the documentation on how to do this. Perhaps I am using the wrong
  search
  parameters.
 
  On Mon, Jun 6, 2011 at 12:19 PM, Brian Lamb
  brian.l...@journalexperts.comwrote:
 
   Hi all,
 
  Is it possible to change the query parser operator for a specific
 field
  without having to explicitly type it in the search field?
 
  For example, I'd like to use:
 
  http://localhost:8983/solr/search/?q=field1:word token field2:parser
  syntax
 
  instead of
 
  http://localhost:8983/solr/search/?q=field1:word AND token
  field2:parser
  syntax
 
  But, I only want it to be applied to field1, not field2 and I want
 the
  operator to always be AND unless the user explicitly types in OR.
 
  Thanks,
 
  Brian Lamb
 
 
 



Re: Default query parser operator

2011-06-07 Thread Brian Lamb
I feel like this should be fairly easy to do but I just don't see anywhere
in the documentation on how to do this. Perhaps I am using the wrong search
parameters.

On Mon, Jun 6, 2011 at 12:19 PM, Brian Lamb
brian.l...@journalexperts.comwrote:

 Hi all,

 Is it possible to change the query parser operator for a specific field
 without having to explicitly type it in the search field?

 For example, I'd like to use:

 http://localhost:8983/solr/search/?q=field1:word token field2:parser
 syntax

 instead of

 http://localhost:8983/solr/search/?q=field1:word AND token field2:parser
 syntax

 But, I only want it to be applied to field1, not field2 and I want the
 operator to always be AND unless the user explicitly types in OR.

 Thanks,

 Brian Lamb



Re: Default query parser operator

2011-06-07 Thread Jonathan Rochkind

Nope, not possible.

I'm not even sure what it would mean semantically. If you had default 
operator OR ordinarily, but default operator AND just for field2, 
then what would happen if you entered:


field1:foo field2:bar field1:baz field2:bom

Where the heck would the ANDs and ORs go?  The operators are BETWEEN the 
clauses that specify fields, they don't belong to a field. In general, 
the operators are part of the query as a whole, not any specific field.


In fact, I'd be careful of your example query:
q=field1:foo bar field2:baz

I don't think that means what you think it means, I don't think the 
field1 applies to the bar in that case. Although I could be wrong, 
but you definitely want to check it.  You need field1:foo field1:bar, 
or set the default field for the query to field1, or use parens 
(although that will change the execution strategy and ranking): 
q=field1:(foo bar)   


At any rate, even if there's a way to specify this so it makes sense, 
no, Solr/lucene doesn't support any such thing.




On 6/7/2011 10:56 AM, Brian Lamb wrote:

I feel like this should be fairly easy to do but I just don't see anywhere
in the documentation on how to do this. Perhaps I am using the wrong search
parameters.

On Mon, Jun 6, 2011 at 12:19 PM, Brian Lamb
brian.l...@journalexperts.comwrote:


Hi all,

Is it possible to change the query parser operator for a specific field
without having to explicitly type it in the search field?

For example, I'd like to use:

http://localhost:8983/solr/search/?q=field1:word token field2:parser
syntax

instead of

http://localhost:8983/solr/search/?q=field1:word AND token field2:parser
syntax

But, I only want it to be applied to field1, not field2 and I want the
operator to always be AND unless the user explicitly types in OR.

Thanks,

Brian Lamb



Re: Default query parser operator

2011-06-07 Thread Brian Lamb
Hi Jonathan,

Thank you for your reply. Your point about my example is a good one. So let
me try to restate using your example. Suppose I want to apply AND to any
search terms within field1.

Then

field1:foo field2:bar field1:baz field2:bom

would by written as

http://localhost:8983/solr/?q=field1:foo OR field2:bar OR field1:baz OR
field2:bom

But if they were written together like:

http://localhost:8983/solr/?q=field1:(foo baz) field2:(bar bom)

I would want it to be

http://localhost:8983/solr/?q=field1:(foo AND baz) OR field2:(bar OR bom)

But it sounds like you are saying that would not be possible.

Thanks,

Brian Lamb

On Tue, Jun 7, 2011 at 11:27 AM, Jonathan Rochkind rochk...@jhu.edu wrote:

 Nope, not possible.

 I'm not even sure what it would mean semantically. If you had default
 operator OR ordinarily, but default operator AND just for field2, then
 what would happen if you entered:

 field1:foo field2:bar field1:baz field2:bom

 Where the heck would the ANDs and ORs go?  The operators are BETWEEN the
 clauses that specify fields, they don't belong to a field. In general, the
 operators are part of the query as a whole, not any specific field.

 In fact, I'd be careful of your example query:
q=field1:foo bar field2:baz

 I don't think that means what you think it means, I don't think the
 field1 applies to the bar in that case. Although I could be wrong, but
 you definitely want to check it.  You need field1:foo field1:bar, or set
 the default field for the query to field1, or use parens (although that
 will change the execution strategy and ranking): q=field1:(foo bar)   

 At any rate, even if there's a way to specify this so it makes sense, no,
 Solr/lucene doesn't support any such thing.




 On 6/7/2011 10:56 AM, Brian Lamb wrote:

 I feel like this should be fairly easy to do but I just don't see anywhere
 in the documentation on how to do this. Perhaps I am using the wrong
 search
 parameters.

 On Mon, Jun 6, 2011 at 12:19 PM, Brian Lamb
 brian.l...@journalexperts.comwrote:

  Hi all,

 Is it possible to change the query parser operator for a specific field
 without having to explicitly type it in the search field?

 For example, I'd like to use:

 http://localhost:8983/solr/search/?q=field1:word token field2:parser
 syntax

 instead of

 http://localhost:8983/solr/search/?q=field1:word AND token field2:parser
 syntax

 But, I only want it to be applied to field1, not field2 and I want the
 operator to always be AND unless the user explicitly types in OR.

 Thanks,

 Brian Lamb




Re: Default query parser operator

2011-06-07 Thread Jonathan Rochkind

There's no feature in Solr to do what you ask, no. I don't think.

On 6/7/2011 1:30 PM, Brian Lamb wrote:

Hi Jonathan,

Thank you for your reply. Your point about my example is a good one. So let
me try to restate using your example. Suppose I want to apply AND to any
search terms within field1.

Then

field1:foo field2:bar field1:baz field2:bom

would by written as

http://localhost:8983/solr/?q=field1:foo OR field2:bar OR field1:baz OR
field2:bom

But if they were written together like:

http://localhost:8983/solr/?q=field1:(foo baz) field2:(bar bom)

I would want it to be

http://localhost:8983/solr/?q=field1:(foo AND baz) OR field2:(bar OR bom)

But it sounds like you are saying that would not be possible.

Thanks,

Brian Lamb

On Tue, Jun 7, 2011 at 11:27 AM, Jonathan Rochkindrochk...@jhu.edu  wrote:


Nope, not possible.

I'm not even sure what it would mean semantically. If you had default
operator OR ordinarily, but default operator AND just for field2, then
what would happen if you entered:

field1:foo field2:bar field1:baz field2:bom

Where the heck would the ANDs and ORs go?  The operators are BETWEEN the
clauses that specify fields, they don't belong to a field. In general, the
operators are part of the query as a whole, not any specific field.

In fact, I'd be careful of your example query:
q=field1:foo bar field2:baz

I don't think that means what you think it means, I don't think the
field1 applies to the bar in that case. Although I could be wrong, but
you definitely want to check it.  You need field1:foo field1:bar, or set
the default field for the query to field1, or use parens (although that
will change the execution strategy and ranking): q=field1:(foo bar)   

At any rate, even if there's a way to specify this so it makes sense, no,
Solr/lucene doesn't support any such thing.




On 6/7/2011 10:56 AM, Brian Lamb wrote:


I feel like this should be fairly easy to do but I just don't see anywhere
in the documentation on how to do this. Perhaps I am using the wrong
search
parameters.

On Mon, Jun 6, 2011 at 12:19 PM, Brian Lamb
brian.l...@journalexperts.comwrote:

  Hi all,

Is it possible to change the query parser operator for a specific field
without having to explicitly type it in the search field?

For example, I'd like to use:

http://localhost:8983/solr/search/?q=field1:word token field2:parser
syntax

instead of

http://localhost:8983/solr/search/?q=field1:word AND token field2:parser
syntax

But, I only want it to be applied to field1, not field2 and I want the
operator to always be AND unless the user explicitly types in OR.

Thanks,

Brian Lamb




Re: Default query parser operator

2011-06-07 Thread lee carroll
Hi Brian could your front end app do this field query logic?

(assuming you have an app in front of solr)



On 7 June 2011 18:53, Jonathan Rochkind rochk...@jhu.edu wrote:
 There's no feature in Solr to do what you ask, no. I don't think.

 On 6/7/2011 1:30 PM, Brian Lamb wrote:

 Hi Jonathan,

 Thank you for your reply. Your point about my example is a good one. So
 let
 me try to restate using your example. Suppose I want to apply AND to any
 search terms within field1.

 Then

 field1:foo field2:bar field1:baz field2:bom

 would by written as

 http://localhost:8983/solr/?q=field1:foo OR field2:bar OR field1:baz OR
 field2:bom

 But if they were written together like:

 http://localhost:8983/solr/?q=field1:(foo baz) field2:(bar bom)

 I would want it to be

 http://localhost:8983/solr/?q=field1:(foo AND baz) OR field2:(bar OR bom)

 But it sounds like you are saying that would not be possible.

 Thanks,

 Brian Lamb

 On Tue, Jun 7, 2011 at 11:27 AM, Jonathan Rochkindrochk...@jhu.edu
  wrote:

 Nope, not possible.

 I'm not even sure what it would mean semantically. If you had default
 operator OR ordinarily, but default operator AND just for field2,
 then
 what would happen if you entered:

 field1:foo field2:bar field1:baz field2:bom

 Where the heck would the ANDs and ORs go?  The operators are BETWEEN the
 clauses that specify fields, they don't belong to a field. In general,
 the
 operators are part of the query as a whole, not any specific field.

 In fact, I'd be careful of your example query:
    q=field1:foo bar field2:baz

 I don't think that means what you think it means, I don't think the
 field1 applies to the bar in that case. Although I could be wrong,
 but
 you definitely want to check it.  You need field1:foo field1:bar, or
 set
 the default field for the query to field1, or use parens (although that
 will change the execution strategy and ranking): q=field1:(foo bar)
 

 At any rate, even if there's a way to specify this so it makes sense, no,
 Solr/lucene doesn't support any such thing.




 On 6/7/2011 10:56 AM, Brian Lamb wrote:

 I feel like this should be fairly easy to do but I just don't see
 anywhere
 in the documentation on how to do this. Perhaps I am using the wrong
 search
 parameters.

 On Mon, Jun 6, 2011 at 12:19 PM, Brian Lamb
 brian.l...@journalexperts.comwrote:

  Hi all,

 Is it possible to change the query parser operator for a specific field
 without having to explicitly type it in the search field?

 For example, I'd like to use:

 http://localhost:8983/solr/search/?q=field1:word token field2:parser
 syntax

 instead of

 http://localhost:8983/solr/search/?q=field1:word AND token
 field2:parser
 syntax

 But, I only want it to be applied to field1, not field2 and I want the
 operator to always be AND unless the user explicitly types in OR.

 Thanks,

 Brian Lamb





Default query parser operator

2011-06-06 Thread Brian Lamb
Hi all,

Is it possible to change the query parser operator for a specific field
without having to explicitly type it in the search field?

For example, I'd like to use:

http://localhost:8983/solr/search/?q=field1:word token field2:parser syntax


instead of

http://localhost:8983/solr/search/?q=field1:word AND token field2:parser
syntax

But, I only want it to be applied to field1, not field2 and I want the
operator to always be AND unless the user explicitly types in OR.

Thanks,

Brian Lamb