Sounds to me that all you need is to AND rather than OR your search terms. QueryParser qp = new QueryParser("keywords", analyzer); qp.setOperator(QueryParser.DEFAULT_OPERATOR_AND); Query q = qp.parse(words);
where analyzer is just the standard one. Or search for +MAIN +BOARD. Or MAIN AND BOARD. -- Ian. On 13 Jul 2005 12:18:44 -0000, Rahul D Thakare <[EMAIL PROTECTED]> wrote: > > Hi, > > We are using doc.add(Field.Text("keywords",keywords)); to add the keywords > to the document, where keywords is comma separated keywords string. > Lucene seems to tokenize the keywords with multiple words like(MAIN BOARD) as > different keywords(ie as MAIN and BOARD). Tokenization is based on comma and > space...So if we search for "MAIN BOARD", documents having keywords like > "MAIN LOGIC", "MAIN PARTS", etc also show up > > If one searches for "MAIN BOARD", we want get only the documents have "MAIN > BOARD". How to do this ? > > To achieve this we used doc.add(Field.Keyword("keywords", keywords)); and > while searching > we cannot use standard analyzer, while searching, as divides the keywords if > we search keywords having space... so we wrote an > KeywordAnalyser(KeywordAnalyzer is basically returns only one single token) > as given below. > > /** > * Tokenizes the entire stream as single token > */ > > public class KeywordAnalyzer extends Analyzer > { > public TokenStream tokenStream(String fieldName, final Reader reader) > { > return new TokenStream(){ > private boolean done; > private final char[] buffer = new char[1024]; > public Token next() throws IOException > { > if(!done) > { > done = true; > StringBuffer buffer = new > StringBuffer(); > int length = 0; > while(true) > { > length = > reader.read(this.buffer); > if(length == -1) break; > > > buffer.append(this.buffer,0,length); > } > String text = buffer.toString(); > return new > Token(text.toUpperCase(),0,text.length()); > } > return null; > } > }; > } > } > > Which solve the above said problem, but we are not able to the wild card > searchs like MAIN*, etc. > > We need both the functionality ie. > 1. if user searches for MAIN BOARD, should get only documents that contain > MAIN BOARD and not MAIN LOGIC, MAIN, MAIN PART etc. > 2. User should be able to do the wild card search like MAIN*, etc and get the > desired documents. > > Please let us know, how we should do the indexing ? and which analyzer to use > to do the search ? > > thanks > Rahul... > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]