lucy-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Nikola Tulechki <nikola.tulec...@gmail.com>
Subject Re: [lucy-user] Range queries in Lucy
Date Wed, 01 Aug 2012 10:15:14 GMT
Just a quick follow up concerning the "fixed width string" issue Peter was
talking about.

Note that if you work directly with unix timestamps (as I was), make sure
all your dates are posterior to 09 sept 2001, (1000000000). Otherwise use
Peter's solution (yyyymmdd - format)

NT

On Wed, Jul 25, 2012 at 6:08 PM, Nikola Tulechki
<nikola.tulechki@gmail.com>wrote:

> Thank you Peter,
> It is exactly what I was looking for
> Cheers
> NT
>
>
> On Wed, Jul 25, 2012 at 3:42 PM, Peter Karman <peter@peknet.com> wrote:
>
>> On 7/25/12 6:33 AM, Nikola Tulechki wrote:
>>
>>> Hello,
>>> Is there a way to specify range queries or query numerical fields like
>>> dates or user age in lucy using<  <=>  operators and integrate it in
a
>>> normal query tree object.
>>> Thanks
>>>
>>
>>
>> Nikola,
>>
>> You can create a RangeQuery:
>>
>> https://metacpan.org/module/**Lucy::Search::RangeQuery<https://metacpan.org/module/Lucy::Search::RangeQuery>
>>
>> The Lucy QueryParser doesn't support native syntax for that though, so if
>> you want a query parser that does, you might want to look at:
>>
>> https://metacpan.org/module/**Search::Query::Parser<https://metacpan.org/module/Search::Query::Parser>
>> https://metacpan.org/module/**Search::Query::Dialect::Lucy<https://metacpan.org/module/Search::Query::Dialect::Lucy>
>>
>> where you can do things like:
>>
>>  my $parser = Search::Query->parser( dialect => 'Lucy' );
>>  my $query  = $parser->parse( 'foo=(123..456)' );
>>  # then pass to Lucy
>>  my $hits  = $lucy_searcher->hits( query => $query->as_lucy_query() );
>>
>> An important thing to note is that Lucy has only one public field storage
>> type, which is a string. So if you want to get coherent results from a
>> range query, make sure you are searching fixed-width strings. E.g., I
>> format all my dates as YYYYMMDD so that I can do range queries like:
>>
>>  my $all_hits_in_2012 = $parser->parse( 'mydate=(20120101..20121231)' );
>>
>> HTH,
>> pek
>>
>> --
>> Peter Karman  .  http://peknet.com/  .  peter@peknet.com
>>
>
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message