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 <[email protected]>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 <[email protected]> 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/ . [email protected] >> > >
