lucene-java-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "host unknown" <linux_new...@hotmail.com>
Subject problem with date range
Date Thu, 05 Dec 2002 23:17:04 GMT
Hi all,

I've been heavily modifying the demo code, and really like what I see thus 
far.  However I've run into a problem when trying to add a date range to the 
BooleanQuery.  When I leave the date range out of my query, I get the 
expected results.  When I put the date range in (even if the range is 
[00000000 - 99999999]) I get no results....

The code and some sample output (leaving the date range blank, and using the 
date range [00000000 - 99999999]) are included below..

Thanks for your help,
Dominic
madison.com

*******CODE********
package com.madison.lucene;

import java.io.IOException;
import java.io.BufferedReader;
import java.io.InputStreamReader;

import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.search.Searcher;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.Hits;
import org.apache.lucene.queryParser.QueryParser;

import org.apache.lucene.search.BooleanQuery;
import org.apache.lucene.search.TermQuery;
import org.apache.lucene.index.Term;

class SearchFilesComplex {
  public static void main(String[] args) {
    try {
      Searcher searcher = new 
IndexSearcher("/home/dominic/lucene_test/index");
      Analyzer analyzer = new StandardAnalyzer();

      BufferedReader in = new BufferedReader(new 
InputStreamReader(System.in));
      while (true) {
	System.out.print("Section: ");
	String section = in.readLine();

//	if (section.length() <= 0)
//	  break;

   System.out.print("Search Words: ");
   String search_words = in.readLine();

   System.out.println("From Date (yyyymmdd):  ");
   String from_date = in.readLine();

   System.out.println("To Date (yyyymmdd):  ");
   String to_date = in.readLine();

//	Query query = QueryParser.parse(line, "contents", analyzer);
   BooleanQuery query = new BooleanQuery();
   //if someone has entered a section....
   if (section.length() > 0) {
      query.add(new TermQuery( new Term ("section", section)), true, false);
      System.out.println("section added *" + section + "*");
   }
   //if someone has entered keywords
   if (search_words.length() > 0) {
      query.add(new TermQuery( new Term ("contents", search_words)), true, 
false);
      System.out.println("search_words added *" + search_words + "*");
   }

   //if someone has entered a date range
   if ( (from_date.length() == 8) && (to_date.length() == 8) ) {
      query.add(new TermQuery( new Term ("date_published", "[" + from_date + 
" - " + to_date + "]")), true, false);
      System.out.println("date range added [" + from_date + " - " + to_date 
+ "]");
   }

	Hits hits = searcher.search(query);
	System.out.println(hits.length() + " total matching documents");

	final int HITS_PER_PAGE = 10;
	for (int start = 0; start < hits.length(); start += HITS_PER_PAGE) {
	  int end = Math.min(hits.length(), start + HITS_PER_PAGE);
	  for (int i = start; i < end; i++) {
	    Document doc = hits.doc(i);
	    String path = doc.get("path");
	    if (path != null) {
              System.out.print(i + ". " + path);
              System.out.println(" ++ " + doc.get("date_published"));

	    } else {
              String url = doc.get("url");
	      if (url != null) {
		System.out.println(i + ". " + url);
		System.out.println("   - " + doc.get("title"));
	      } else {
		System.out.println(i + ". " + "No path nor URL for this document");
	      }
	    }
	  }

	  if (hits.length() > end) {
	    System.out.print("more (y/n) ? ");
	    String line = in.readLine();
	    if (line.length() == 0 || line.charAt(0) == 'n')
	      break;
	  }
	}
      }
//      searcher.close();

    } catch (Exception e) {
      System.out.println(" caught a " + e.getClass() +
			 "\n with message: " + e.getMessage());
    }
  }
}
***********************************************


*****OUTPUT (Without date range parameters filled in)****
[dominic@localhost classes]$ java com.madison.lucene.SearchFilesComplex
Section: communities
Search Words: capital
>From Date (yyyymmdd):

To Date (yyyymmdd):

section added *communities *
search_words added *capital*
22 total matching documents
0. /home/dominic/tct/2002/10/02/19623.php ++ 20021002
1. /home/dominic/tct/2002/03/07/27506.php ++ 20020307
2. /home/dominic/tct/2002/11/05/36510.php ++ 20021105
3. /home/dominic/tct/2002/09/13/18159.php ++ 20020913
4. /home/dominic/tct/2002/11/07/36780.php ++ 20021107
5. /home/dominic/tct/2002/09/13/17651.php ++ 20020913
6. /home/dominic/tct/2002/03/05/27214.php ++ 20020305
7. /home/dominic/tct/2002/08/02/12995.php ++ 20020802
8. /home/dominic/tct/2002/03/21/29105.php ++ 20020321
9. /home/dominic/tct/2002/08/19/14759.php ++ 20020819
more (y/n) ?

*********Same query w/ date ranges**********

Section: communities
Search Words: capital
>From Date (yyyymmdd):
00000000
To Date (yyyymmdd):
99999999
section added *communities *
search_words added *capital*
date range added [00000000 - 99999999]
0 total matching documents
Section:


_________________________________________________________________
Tired of spam? Get advanced junk mail protection with MSN 8. 
http://join.msn.com/?page=features/junkmail


--
To unsubscribe, e-mail:   <mailto:lucene-user-unsubscribe@jakarta.apache.org>
For additional commands, e-mail: <mailto:lucene-user-help@jakarta.apache.org>


Mime
View raw message