hello I would like to search a word in differents fields of a document with an OR operator.
My fields are "id", "shortDesc" and "longDesc". In java I want to search a word simultanly in "shortDesc" and "longDesc" field. for example: doc1: id:1 shortDesc: a foo desc longDesc: a doc long desc doc2: id:2 shortDesc:a doc short desc longDesc:a foo long desc doc3: id:3 shortDesc:another short desc longDesc:another long desc if the search word is "foo" i want to retreive doc1 and doc3. in my program, fields are stored in fieldName list. associated values are stored in fieldValue. thanks private static Hits search(List fieldName, List fieldValue) { Hits hits = null; int fieldNameSize = fieldName.size(); int fieldValueSize = fieldValue.size(); if (fieldNameSize != fieldValueSize) { return null; } IndexSearcher searcher = getSearcher(); if (searcher != null) { BooleanQuery query = new BooleanQuery(); //populate the query with all terms for (int i=0; i<fieldNameSize; i++) { String currentFieldName = (String) fieldName.get(i); String currentFieldValue = (String) fieldValue.get(i); StringTokenizer tokenizer = new StringTokenizer(currentFieldValue); while (tokenizer.hasMoreTokens()) { String currentToken = tokenizer.nextToken(); Term currentTerm = new Term(currentFieldName,currentToken); TermQuery termQuery = new TermQuery(currentTerm); query.add(termQuery,false,false); } } //do the search try { //System.out.println("IndexManager query = " + query.toString()); hits = searcher.search(query); } catch (IOException ioe) { LogManager.log(LogManager.LOG_ERROR,"Cannot search in index.",ioe); } finally { try { searcher.close(); } catch (IOException ioe) { LogManager.log(LogManager.LOG_WARNING,"Cannot close searcher in search method.",ioe); } } } return hits; }