Lucene->SOLR transition

classic Classic list List threaded Threaded
7 messages Options
Reply | Threaded
Open this post in threaded view
|

Lucene->SOLR transition

Scott Smith-2
I've been using lucene for a number of years.  We've now decided to move to SOLR.  I have a couple of questions.


1.       I'm used to creating Boolean queries, filter queries, term queries, etc. for lucene.  Am I right in thinking that for SOLR my only option is creating string queries (with q and fq components) for solrj?

2.       Assuming that the answer to 1 is "correct", then is there an easy way to take a lucene query (with nested Boolean queries, filter queries, etc.) and generate a SOLR query string with q and fq components?

Thanks

Scott
Reply | Threaded
Open this post in threaded view
|

Re: Lucene->SOLR transition

Federico Fissore
Hi

Scott Smith, il 16/09/2011 02:30, ha scritto:
> I've been using lucene for a number of years.  We've now decided to move to SOLR.  I have a couple of questions.
>
>
> 1.       I'm used to creating Boolean queries, filter queries, term queries, etc. for lucene.  Am I right in thinking that for SOLR my only option is creating string queries (with q and fq components) for solrj?
>
> 2.       Assuming that the answer to 1 is "correct", then is there an easy way to take a lucene query (with nested Boolean queries, filter queries, etc.) and generate a SOLR query string with q and fq components?


one other option is to build your own SearchComponent and handle
additional parameters

best regards

federico
Reply | Threaded
Open this post in threaded view
|

Re: Lucene->SOLR transition

Tomás Fernández Löbbe
Hi Scott, now your queries are going to be created by a QueryParser. you
have a couple of options here, most common are LuceneQueryParser,
DismaxQueryParser and ExtendedDismaxQueryParser, but there are others. The
QueryParser will be creating all those queries you mentiones, for example,
if you are using the LuceneQueryParser and you send the query string:

field1:foo AND field2:bar

it will create a BooleanQuery with two TermQuery as clauses. The same with
more complex queries.

There are also some other QueryParsers for more specific cases. Take a look
at this class: org.apache.solr.search.QParserPlugin

You can choose and change the query parser with each request.

Local params can also be useful for you:
http://wiki.apache.org/solr/LocalParams

Regards,

Tomás

On Fri, Sep 16, 2011 at 4:25 AM, Federico Fissore <[hidden email]>wrote:

> Hi
>
> Scott Smith, il 16/09/2011 02:30, ha scritto:
>
>  I've been using lucene for a number of years.  We've now decided to move
>> to SOLR.  I have a couple of questions.
>>
>>
>> 1.       I'm used to creating Boolean queries, filter queries, term
>> queries, etc. for lucene.  Am I right in thinking that for SOLR my only
>> option is creating string queries (with q and fq components) for solrj?
>>
>> 2.       Assuming that the answer to 1 is "correct", then is there an easy
>> way to take a lucene query (with nested Boolean queries, filter queries,
>> etc.) and generate a SOLR query string with q and fq components?
>>
>
>
> one other option is to build your own SearchComponent and handle additional
> parameters
>
> best regards
>
> federico
>
Reply | Threaded
Open this post in threaded view
|

Re: Lucene->SOLR transition

Michael Sokolov
In reply to this post by Scott Smith-2
On 9/15/2011 8:30 PM, Scott Smith wrote:
>
> 2.       Assuming that the answer to 1 is "correct", then is there an easy way to take a lucene query (with nested Boolean queries, filter queries, etc.) and generate a SOLR query string with q and fq components?
>
>
I believe that Query.toString() will probably get you back something
that can be parsed in turn by the traditional lucene QueryParser, thus
completing the circle and returning your original Query.  But why would
you want to do that?

-Mike
Reply | Threaded
Open this post in threaded view
|

Re: Lucene->SOLR transition

Erik Hatcher-4

On Sep 18, 2011, at 19:43 , Michael Sokolov wrote:

> On 9/15/2011 8:30 PM, Scott Smith wrote:
>>
>> 2.       Assuming that the answer to 1 is "correct", then is there an easy way to take a lucene query (with nested Boolean queries, filter queries, etc.) and generate a SOLR query string with q and fq components?
>>
>>
> I believe that Query.toString() will probably get you back something that can be parsed in turn by the traditional lucene QueryParser, thus completing the circle and returning your original Query.  But why would you want to do that?

No, you can't rely on Query.toString() roundtripping (think stemming, for example - but many other examples that won't work that way too).

What you can do, since you know Lucene's API well, is write a QParser(Plugin) that takes request parameters as strings and generates the Query from that like you are now with your Lucene app.

        Erik

Reply | Threaded
Open this post in threaded view
|

Re: Lucene->SOLR transition

Michael Sokolov
On 9/19/2011 5:27 AM, Erik Hatcher wrote:
> On Sep 18, 2011, at 19:43 , Michael Sokolov wrote:
>
>> On 9/15/2011 8:30 PM, Scott Smith wrote:
>>> 2.       Assuming that the answer to 1 is "correct", then is there an easy way to take a lucene query (with nested Boolean queries, filter queries, etc.) and generate a SOLR query string with q and fq components?
>>>
>>>
>> I believe that Query.toString() will probably get you back something that can be parsed in turn by the traditional lucene QueryParser, thus completing the circle and returning your original Query.  But why would you want to do that?
> No, you can't rely on Query.toString() roundtripping (think stemming, for example - but many other examples that won't work that way too).
Oops - thanks for clearing that up, Erik

Reply | Threaded
Open this post in threaded view
|

RE: Lucene->SOLR transition

Scott Smith-2
In reply to this post by Erik Hatcher-4
OK.  Thanks for all of the suggestions.

Cheers

Scott

-----Original Message-----
From: Erik Hatcher [mailto:[hidden email]]
Sent: Monday, September 19, 2011 3:27 AM
To: [hidden email]
Subject: Re: Lucene->SOLR transition


On Sep 18, 2011, at 19:43 , Michael Sokolov wrote:

> On 9/15/2011 8:30 PM, Scott Smith wrote:
>>
>> 2.       Assuming that the answer to 1 is "correct", then is there an easy way to take a lucene query (with nested Boolean queries, filter queries, etc.) and generate a SOLR query string with q and fq components?
>>
>>
> I believe that Query.toString() will probably get you back something that can be parsed in turn by the traditional lucene QueryParser, thus completing the circle and returning your original Query.  But why would you want to do that?

No, you can't rely on Query.toString() roundtripping (think stemming, for example - but many other examples that won't work that way too).

What you can do, since you know Lucene's API well, is write a QParser(Plugin) that takes request parameters as strings and generates the Query from that like you are now with your Lucene app.

        Erik