Hi Doron, I m not sure I m implement your suggestion correctly.
The way I did is I have 2 separate methods controlling by the check box. I used basic search method for the first time and that will look up the index from the directory. After I got the result, I will check the checkbox and that will lead to 2nd method which the reader again from the index directory and searcher search based on the reader. Next, I m only implement the codes that suggested by you. So, I m not sure I m doing the right thing or not. I have attached the work that I done on below: public String search(String searchString) throws IOException, Exception { StringBuffer buff = new StringBuffer(); String field = ""; try { reader = IndexReader.open(DsConstant.indexDir); Searcher searcher = new IndexSearcher(reader); Analyzer analyzer = new StandardAnalyzer(); QueryParser parser = new QueryParser(DsConstant.idxFileContent, analyzer); //Query query = parser.parse(searchString); String[] metaFields = field.split(":"); metaFields = new String[]{"contents", "companyId", "ownerId", "createdBy", "docName", "docDesc", "keywords", "docId", "docPropName"}; for(int i = 0; i < metaFields.length; i++) { buff.append(metaFields[i] + ":" + searchString); if(i != (metaFields.length-1)) { buff.append(" OR "); } } Query query = parser.parse(buff.toString()); query = query.rewrite(reader); System.out.println("query ::: " + query); searchHits = searcher.search(query); System.out.println("search hits is ::: " +searchHits.length()); if(searchHits.length() > 0) { QueryScorer scorer = new QueryScorer(query); Highlighter highlighter = new Highlighter(new SimpleHTMLFormatter("<span style='background-color:yellow; font-weight:bold;'>", "</span>"), scorer); for(int i = 0; i < searchHits.length(); i++) { Document doc = searchHits.doc(i); String text = doc.get(DsConstant.idxFileContent); TokenStream tokenstream = analyzer.tokenStream(DsConstant.idxFileContent, new StringReader(text)); //buff.append("<p> '" + DsConstant.userDir buff.append("!"); buff.append("<p " + searchHits.doc(i).get(DsConstant.idxPath) + " " + searchHits.doc(i).get("docName") + " <br>"); buff.append("score: " + searchHits.score(i) + "<br>"); buff.append(highlighter.getBestFragments(tokenstream, text, 3, "...")+ "</p>"); } //System.out.println("Folder path is ::: " +DsConstant.folderPath); searcher.close(); } System.out.println("Found "+searchHits.length()+" searchHits with query = "+query); } catch(Exception e) { e.printStackTrace(); } return buff.toString(); //return resultList; } public String refindSearchResult(String searchString1, String searchString2) throws IOException, Exception { System.out.println("inside search util - refind search result"); IndexReader reader = null; StringBuffer buff = new StringBuffer(); try { reader = IndexReader.open(DsConstant.indexDir); Searcher searcher = new IndexSearcher(reader); Analyzer analyzer = new StandardAnalyzer(); QueryParser parser = new QueryParser(DsConstant.idxFileContent, analyzer); Query query1 = parser.parse(searchString1); filter = new QueryFilter(query1); Query query2 = parser.parse(searchString2); searchHits = searcher.search(query2, filter); System.out.println("search hits is ::: " +searchHits.length()); if(searchHits.length() > 0) { QueryScorer scorer = new QueryScorer(query2); Highlighter highlighter = new Highlighter(new SimpleHTMLFormatter("<span style='background-color:yellow; font-weight:bold;'>", "</span>"), scorer); for(int i = 0; i < searchHits.length(); i++) { Document doc = searchHits.doc(i); String text = doc.get(DsConstant.idxFileContent); TokenStream tokenstream = analyzer.tokenStream(DsConstant.idxFileContent, new StringReader(text)); //buff.append("<p> '" + DsConstant.userDir buff.append("<p " + searchHits.doc(i).get(DsConstant.idxPath) + " " + searchHits.doc(i).get("docName") + " <br>"); buff.append("score: " + searchHits.score(i) + "<br>"); buff.append(highlighter.getBestFragments(tokenstream, text, 3, "...")+ "</p>"); buff.append("!").substring(i); } searcher.close(); } System.out.println("Found "+searchHits.length()+" searchHits with query = "+query2); } catch(Exception e) { e.printStackTrace(); } return buff.toString(); } Please point out where I m done wrong and hopefully the right solution that I can use. Thank you. regards, Wooi Meng -- View this message in context: http://www.nabble.com/Filter-query-method-tf2586547.html#a7273997 Sent from the Lucene - Java Users mailing list archive at Nabble.com. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]