Thank you, Ian.

I tried the AND search you suggested and it is working fine.

Regards,
Raghu

IT Compliance Systems Development
BARCLAYS 
70 Hudson , 
Jersey City, NJ  
+1 201 499 6984 (O) +1 917 565 6276 (M)
raghavendra.k....@barclays.com


-----Original Message-----
From: Ian Lea [mailto:ian....@gmail.com] 
Sent: Thursday, June 27, 2013 5:38 AM
To: java-user@lucene.apache.org
Subject: Re: How to perform Date Range Search

Concatenating all your searchable fields into one is certainly what I'd do.  
Simple and efficient.

And yes, you can perform range searches via the query parser - the example you 
give matches the one in the docs at 
http://lucene.apache.org/core/4_3_1/queryparser/org/apache/lucene/queryparser/classic/package-summary.html#Boolean_operators
so it looks like you've found the docs.

Assemble your query as you want e.g. "contents: important AND date:[whatever TO 
whatever]".

You'll get better performance by indexing the data as a NumericField and using 
NumericRangeQuery or, better if often searching over the same date range, 
NumericRangeFilter optionally cached with CachingWrapperFilter.

I don't think the standard query parser supports ranges on a NumericField 
directly.  See 
http://stackoverflow.com/questions/5026185/how-do-i-make-the-queryparser-in-lucene-handle-numeric-ranges
or one of the other hits for a google search on the subject.

Or simply build the query up in code.


--
Ian.

On Wed, Jun 26, 2013 at 9:36 PM,  <raghavendra.k....@barclays.com> wrote:
> Hi,
>
> I have indexed a database table which has about 70 columns out of which 60 
> columns have been indexed and the rest have been stored. There are 70 million 
> records in this table. This is a static table and hence I plan to index them 
> at once and then perform the search on these indices.
>
> I performed a brief comparison between the usually discussed 2 options:
>
> -          Concatenate all the fields separated by a space and then search my 
> keyword in this single field.
>
> -          Store the 60 columns in 60 separate fields while indexing and then 
> use MultiFieldQueryParser to search the single keyword in all the 60 fields.
>
> I noticed that the performance was significantly better in option 1. Hence I 
> continued with it. Please let me know if you still think this is not an 
> efficient approach.
>
> Question 2:
>
> Among the 60 columns, one column is a date field and I need to perform a 
> date-range filter while searching for a keyword. I read that date-range 
> filter can be performed as below in the documentation.
>
> mod_date:[20020101 TO 20030101]
>
> I presume mod_date is the name of one of the fields stored in the indexes. Do 
> I have to use MultiFieldQueryParser to be able to perform date-range filter 
> or is there a way to perform date-range and string search using the 
> QueryParser?
>
> Right now, to search a word "important", I search it against one field (which 
> is a list of concatenated columns). Do you think I can do that as well as 
> filter records by the date column?
>
> Regards,
> Raghu
>
>
> _______________________________________________
>
> This message is for information purposes only, it is not a recommendation, 
> advice, offer or solicitation to buy or sell a product or service nor an 
> official confirmation of any transaction. It is directed at persons who are 
> professionals and is not intended for retail customer use. Intended for 
> recipient only. This message is subject to the terms at: 
> www.barclays.com/emaildisclaimer.
>
> For important disclosures, please see: 
> www.barclays.com/salesandtradingdisclaimer regarding market commentary from 
> Barclays Sales and/or Trading, who are active market participants; and in 
> respect of Barclays Research, including disclosures relating to specific 
> issuers, please see http://publicresearch.barclays.com.
>
> _______________________________________________

---------------------------------------------------------------------
To unsubscribe, e-mail: java-user-unsubscr...@lucene.apache.org
For additional commands, e-mail: java-user-h...@lucene.apache.org

_______________________________________________

This message is for information purposes only, it is not a recommendation, 
advice, offer or solicitation to buy or sell a product or service nor an 
official confirmation of any transaction. It is directed at persons who are 
professionals and is not intended for retail customer use. Intended for 
recipient only. This message is subject to the terms at: 
www.barclays.com/emaildisclaimer.

For important disclosures, please see: 
www.barclays.com/salesandtradingdisclaimer regarding market commentary from 
Barclays Sales and/or Trading, who are active market participants; and in 
respect of Barclays Research, including disclosures relating to specific 
issuers, please see http://publicresearch.barclays.com.

_______________________________________________

---------------------------------------------------------------------
To unsubscribe, e-mail: java-user-unsubscr...@lucene.apache.org
For additional commands, e-mail: java-user-h...@lucene.apache.org

Reply via email to