lucene-java-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Alan Chandler <>
Subject Confused about boolean query and how an IndexReader is associated with Hits
Date Wed, 07 Dec 2005 07:38:42 GMT
I am trying to construct, via individual query api, a query to search for 
documents with a field name of "Category" and a value of either "Category1" 
OR "Category2" (or both).

My code to do this (given categories is the set of strings with the category 
names I wish to search for) is as follows

		BooleanQuery query = new BooleanQuery();
		if (categories != null && !categories.isEmpty()) {
			for (String category : categories) {
				TermQuery t =new TermQuery(new Term("Category",category));
				query.add(t,false,false); //Saywould like that category

I have three documents in the index

Document 1 has zero fields called "Category"

Document 2 has one keyword  field called "Category" with value "Category1"

Document 3 has two keyword fields called "Category", one with a value of 
"Category1" and the other with a value of "Category2"

When I run a search with the above query, I get only one hit instead of the 
expected 2. (Hits.length()=1)

Worse than that, when I attempt to access Hits.doc(0) I am getting an 
immediate IOException with the message "Bad file descriptor".  I think this 
must be because by that time I have closed the indexSearcher (and therefore 
the Reader that sat behind it).  Its not clear to me how hits are associated 
with a reader.  Is it possible to close the reader and then re-open it later 
to access a document with the hit?
Alan Chandler
Open Source. It's the difference between trust and antitrust.

To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message