I am using Lucene 2.0 and trying to use the MultiFieldQueryParser in my search. I want to limit my search to documents which have "silly" in "field1" ...within that subset of documents, I want documents which have "example" in "field2" OR "field3" The code fragment below is my attempt at this ...code blows on the : Query query = qp.parse(... statement ... Besides blowing, I believe that the MUST / MUST for field2 and field3 is inappropriate ...I really want to say ..if field1 has "silly" return documents with "example" in field2 OR field3.
Any suggestions for accomplishing this ? Someone suggested BooleanQuery but I was not sure how to merge that concept in with the MultiFieldQueryParser .. . . . if (fsDir != null) { IndexSearcher is = new IndexSearcher(fsDir); MultiFieldQueryParser qp == new MultiFieldQueryParser(searchFields,new StopAnalyzer()); // Is a Lucene IndexSearcher object available if (qp != null) { String [] searchTerms = {"silly", "example"}; // search terms String [] searchFields = {"field1", "field2", "field3"}; // search field names // silly MUST occur in field1 - example SHOULD occur in field2 BooleanClause.Occur [] booleanClauses = { BooleanClause.Occur.MUST, BooleanClause.Occur.MUST, BooleanClause.Occur.MUST}; Query query = qp.parse(searchTerms, searchFields, booleanClauses, new StopAnalyzer()); is.search(query); Thanks