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 arshad ansari <ar...@gmail.com> on 2011/11/01 12:46:44 UTC

Is SQL Like operator feature available in Apache Solr query

Hi,

Is SQL Like operator feature available in Apache Solr Just like we have it
in SQL.

SQL example below -

*Select * from Employee where employee_name like '%Solr%'*

If not is it a Bug with Solr. If this feature available, please tell the
examples available.

Thanks!

-- 
Best Regards,
Arshad

Re: Is SQL Like operator feature available in Apache Solr query

Posted by Erick Erickson <er...@gmail.com>.
Start here: http://lucene.apache.org/solr/api/org/apache/solr/analysis/NGramFilterFactory.html

But the idea is that you define a field with the NGramFilterFactory and it
indexes, (here are bigrams) mysolrstuff as separate tokens: my ys so ol lr
rs st tu uf ff. This supports the %solr% idea if you strip off the % and
bigram the text, you search for so ol lr which matches. You can do some
tricks with phrase queries to make sure it exactly matches only those three
tokens one right after the other.

Of course this expands your index significantly.

Best
Erick

On Tue, Nov 1, 2011 at 11:45 AM, Memory Makers <me...@gmail.com> wrote:
> Eric,
>
> NGrams could you elaborate on that ? -- haven't seen that before.
>
> Thanks.
>
> On Tue, Nov 1, 2011 at 11:06 AM, Erick Erickson <er...@gmail.com>wrote:
>
>> NGrams are often used in Solr for this case, but they will also add to
>> your index size.
>>
>> It might be worthwhile to look closely at your user requirements
>> before going ahead
>> and supporting this functionality....
>>
>> Best
>> Erick
>>
>> 2011/11/1 François Schiettecatte <fs...@gmail.com>:
>> > Kuli
>> >
>> > Good point about just tokenizing the fields :)
>> >
>> > I ran a couple of tests to double-check my understanding and you can
>> have a wildcard operator at either or both ends of a term. Adding
>> ReversedWildcardFilterFactory to your field analyzer will make leading
>> wildcard searches a lot faster of course but at the expense of index size.
>> >
>> > Cheers
>> >
>> > François
>> >
>> >
>> > On Nov 1, 2011, at 9:07 AM, Michael Kuhlmann wrote:
>> >
>> >> Hi,
>> >>
>> >> this is not exactly true. In Solr, you can't have the wildcard operator
>> on both sides of the operator.
>> >>
>> >> However, you can tokenize your fields and simply query for "Solr". This
>> is what's Solr made for. :)
>> >>
>> >> -Kuli
>> >>
>> >> Am 01.11.2011 13:24, schrieb François Schiettecatte:
>> >>> Arshad
>> >>>
>> >>> Actually it is available, you need to use the
>> ReversedWildcardFilterFactory which I am sure you can Google for.
>> >>>
>> >>> Solr and SQL address different problem sets with some overlaps but
>> there are significant differences between the two technologies. Actually
>> '%Solr%' is a worse case for SQL but handled quite elegantly in Solr.
>> >>>
>> >>> Hope this helps!
>> >>>
>> >>> Cheers
>> >>>
>> >>> François
>> >>>
>> >>>
>> >>> On Nov 1, 2011, at 7:46 AM, arshad ansari wrote:
>> >>>
>> >>>> Hi,
>> >>>>
>> >>>> Is SQL Like operator feature available in Apache Solr Just like we
>> have it
>> >>>> in SQL.
>> >>>>
>> >>>> SQL example below -
>> >>>>
>> >>>> *Select * from Employee where employee_name like '%Solr%'*
>> >>>>
>> >>>> If not is it a Bug with Solr. If this feature available, please tell
>> the
>> >>>> examples available.
>> >>>>
>> >>>> Thanks!
>> >>>>
>> >>>> --
>> >>>> Best Regards,
>> >>>> Arshad
>> >>>
>> >>
>> >
>> >
>>
>

Re: Is SQL Like operator feature available in Apache Solr query

Posted by Memory Makers <me...@gmail.com>.
Eric,

NGrams could you elaborate on that ? -- haven't seen that before.

Thanks.

On Tue, Nov 1, 2011 at 11:06 AM, Erick Erickson <er...@gmail.com>wrote:

> NGrams are often used in Solr for this case, but they will also add to
> your index size.
>
> It might be worthwhile to look closely at your user requirements
> before going ahead
> and supporting this functionality....
>
> Best
> Erick
>
> 2011/11/1 François Schiettecatte <fs...@gmail.com>:
> > Kuli
> >
> > Good point about just tokenizing the fields :)
> >
> > I ran a couple of tests to double-check my understanding and you can
> have a wildcard operator at either or both ends of a term. Adding
> ReversedWildcardFilterFactory to your field analyzer will make leading
> wildcard searches a lot faster of course but at the expense of index size.
> >
> > Cheers
> >
> > François
> >
> >
> > On Nov 1, 2011, at 9:07 AM, Michael Kuhlmann wrote:
> >
> >> Hi,
> >>
> >> this is not exactly true. In Solr, you can't have the wildcard operator
> on both sides of the operator.
> >>
> >> However, you can tokenize your fields and simply query for "Solr". This
> is what's Solr made for. :)
> >>
> >> -Kuli
> >>
> >> Am 01.11.2011 13:24, schrieb François Schiettecatte:
> >>> Arshad
> >>>
> >>> Actually it is available, you need to use the
> ReversedWildcardFilterFactory which I am sure you can Google for.
> >>>
> >>> Solr and SQL address different problem sets with some overlaps but
> there are significant differences between the two technologies. Actually
> '%Solr%' is a worse case for SQL but handled quite elegantly in Solr.
> >>>
> >>> Hope this helps!
> >>>
> >>> Cheers
> >>>
> >>> François
> >>>
> >>>
> >>> On Nov 1, 2011, at 7:46 AM, arshad ansari wrote:
> >>>
> >>>> Hi,
> >>>>
> >>>> Is SQL Like operator feature available in Apache Solr Just like we
> have it
> >>>> in SQL.
> >>>>
> >>>> SQL example below -
> >>>>
> >>>> *Select * from Employee where employee_name like '%Solr%'*
> >>>>
> >>>> If not is it a Bug with Solr. If this feature available, please tell
> the
> >>>> examples available.
> >>>>
> >>>> Thanks!
> >>>>
> >>>> --
> >>>> Best Regards,
> >>>> Arshad
> >>>
> >>
> >
> >
>

Re: Is SQL Like operator feature available in Apache Solr query

Posted by Michael Kuhlmann <ku...@solarier.de>.
Am 01.11.2011 16:06, schrieb Erick Erickson:
> NGrams are often used in Solr for this case, but they will also add to
> your index size.
>
> It might be worthwhile to look closely at your user requirements
> before going ahead
> and supporting this functionality....
>
> Best
> Erick

My opinion. Wildcards are good for "peeking into the index", i.e. for 
checking data in the browser. I haven't yet found a real life use case 
for them.

-Kuli

Re: Is SQL Like operator feature available in Apache Solr query

Posted by Erick Erickson <er...@gmail.com>.
NGrams are often used in Solr for this case, but they will also add to
your index size.

It might be worthwhile to look closely at your user requirements
before going ahead
and supporting this functionality....

Best
Erick

2011/11/1 François Schiettecatte <fs...@gmail.com>:
> Kuli
>
> Good point about just tokenizing the fields :)
>
> I ran a couple of tests to double-check my understanding and you can have a wildcard operator at either or both ends of a term. Adding ReversedWildcardFilterFactory to your field analyzer will make leading wildcard searches a lot faster of course but at the expense of index size.
>
> Cheers
>
> François
>
>
> On Nov 1, 2011, at 9:07 AM, Michael Kuhlmann wrote:
>
>> Hi,
>>
>> this is not exactly true. In Solr, you can't have the wildcard operator on both sides of the operator.
>>
>> However, you can tokenize your fields and simply query for "Solr". This is what's Solr made for. :)
>>
>> -Kuli
>>
>> Am 01.11.2011 13:24, schrieb François Schiettecatte:
>>> Arshad
>>>
>>> Actually it is available, you need to use the ReversedWildcardFilterFactory which I am sure you can Google for.
>>>
>>> Solr and SQL address different problem sets with some overlaps but there are significant differences between the two technologies. Actually '%Solr%' is a worse case for SQL but handled quite elegantly in Solr.
>>>
>>> Hope this helps!
>>>
>>> Cheers
>>>
>>> François
>>>
>>>
>>> On Nov 1, 2011, at 7:46 AM, arshad ansari wrote:
>>>
>>>> Hi,
>>>>
>>>> Is SQL Like operator feature available in Apache Solr Just like we have it
>>>> in SQL.
>>>>
>>>> SQL example below -
>>>>
>>>> *Select * from Employee where employee_name like '%Solr%'*
>>>>
>>>> If not is it a Bug with Solr. If this feature available, please tell the
>>>> examples available.
>>>>
>>>> Thanks!
>>>>
>>>> --
>>>> Best Regards,
>>>> Arshad
>>>
>>
>
>

Re: Is SQL Like operator feature available in Apache Solr query

Posted by François Schiettecatte <fs...@gmail.com>.
Kuli

Good point about just tokenizing the fields :)

I ran a couple of tests to double-check my understanding and you can have a wildcard operator at either or both ends of a term. Adding ReversedWildcardFilterFactory to your field analyzer will make leading wildcard searches a lot faster of course but at the expense of index size.

Cheers

François


On Nov 1, 2011, at 9:07 AM, Michael Kuhlmann wrote:

> Hi,
> 
> this is not exactly true. In Solr, you can't have the wildcard operator on both sides of the operator.
> 
> However, you can tokenize your fields and simply query for "Solr". This is what's Solr made for. :)
> 
> -Kuli
> 
> Am 01.11.2011 13:24, schrieb François Schiettecatte:
>> Arshad
>> 
>> Actually it is available, you need to use the ReversedWildcardFilterFactory which I am sure you can Google for.
>> 
>> Solr and SQL address different problem sets with some overlaps but there are significant differences between the two technologies. Actually '%Solr%' is a worse case for SQL but handled quite elegantly in Solr.
>> 
>> Hope this helps!
>> 
>> Cheers
>> 
>> François
>> 
>> 
>> On Nov 1, 2011, at 7:46 AM, arshad ansari wrote:
>> 
>>> Hi,
>>> 
>>> Is SQL Like operator feature available in Apache Solr Just like we have it
>>> in SQL.
>>> 
>>> SQL example below -
>>> 
>>> *Select * from Employee where employee_name like '%Solr%'*
>>> 
>>> If not is it a Bug with Solr. If this feature available, please tell the
>>> examples available.
>>> 
>>> Thanks!
>>> 
>>> --
>>> Best Regards,
>>> Arshad
>> 
> 


Re: Is SQL Like operator feature available in Apache Solr query

Posted by Michael Kuhlmann <ku...@solarier.de>.
Hi,

this is not exactly true. In Solr, you can't have the wildcard operator 
on both sides of the operator.

However, you can tokenize your fields and simply query for "Solr". This 
is what's Solr made for. :)

-Kuli

Am 01.11.2011 13:24, schrieb François Schiettecatte:
> Arshad
>
> Actually it is available, you need to use the ReversedWildcardFilterFactory which I am sure you can Google for.
>
> Solr and SQL address different problem sets with some overlaps but there are significant differences between the two technologies. Actually '%Solr%' is a worse case for SQL but handled quite elegantly in Solr.
>
> Hope this helps!
>
> Cheers
>
> François
>
>
> On Nov 1, 2011, at 7:46 AM, arshad ansari wrote:
>
>> Hi,
>>
>> Is SQL Like operator feature available in Apache Solr Just like we have it
>> in SQL.
>>
>> SQL example below -
>>
>> *Select * from Employee where employee_name like '%Solr%'*
>>
>> If not is it a Bug with Solr. If this feature available, please tell the
>> examples available.
>>
>> Thanks!
>>
>> --
>> Best Regards,
>> Arshad
>


Re: Is SQL Like operator feature available in Apache Solr query

Posted by François Schiettecatte <fs...@gmail.com>.
Arshad

Actually it is available, you need to use the ReversedWildcardFilterFactory which I am sure you can Google for.

Solr and SQL address different problem sets with some overlaps but there are significant differences between the two technologies. Actually '%Solr%' is a worse case for SQL but handled quite elegantly in Solr.

Hope this helps!

Cheers

François


On Nov 1, 2011, at 7:46 AM, arshad ansari wrote:

> Hi,
> 
> Is SQL Like operator feature available in Apache Solr Just like we have it
> in SQL.
> 
> SQL example below -
> 
> *Select * from Employee where employee_name like '%Solr%'*
> 
> If not is it a Bug with Solr. If this feature available, please tell the
> examples available.
> 
> Thanks!
> 
> -- 
> Best Regards,
> Arshad