If you haven't, I *strongly* recommend you get a copy of luke. google lucene and luke to find it. It allows you to examine your index and also to see how queries parse. It's invaluable.
I can't say exactly what the difference is, but there are several possibilities. Note that in general it's best to use the same analyzer during both index and query time. One of the things an analyzer does is break up the input stream into tokens that get passed on. So, say you're using a WhitespaceAnalyzer and indexing "this is a (silly) example". Your tokens would be this is a (silly) example But StandardAnalyzer might (I'm not completely sure about this, but this is the general idea) this is a silly example Note that the parens () were removed. Now, if you construct your TermQuery with "silly", it would match the StandardAnalyzer at query time, but NOT the terms indexed with WhitespaceAnalyzer. You'd get opposite matches if your termquery were constructed with "(silly)" So that's why I recommend you get a copy of Luke. I'm guessing that when you indexed things with StandardAnalyzer your stream was broken up differently than you expect. And when you constructed your TermQuery, your term had some characters that the StandardAnalyzer stripped form your original input stream. But that's just a guess. Luke will tell you for sure. Best Erick On 5/24/07, Rodrigo F Valverde <[EMAIL PROTECTED]> wrote:
Hi again! That´s all diferent now! I´m no more using the "reader.search()"...now, i´m using the QueryParser: - QueryParser qp = new QueryParser("content", new StandardAnalyzer()); - query = qp.parse(keyWordToSearch); now, it works fine! :D But now I need to know the diference between them! :) Thanks! :D ----- Mensagem original ---- De: Rodrigo F Valverde <[EMAIL PROTECTED]> Para: java-user@lucene.apache.org Enviadas: Quinta-feira, 24 de Maio de 2007 15:00:49 Assunto: Res: How to search more than one word? I will try to resume the code: INDEX TIME - IndexWriter writer = new IndexWriter(indexDir, new StandardAnalyzer(), true); - writer.setUseCompoundFile(false); - while has files into the given dir... - Document doc = new Document(); - doc.add(new Field("content", new FileReader(file))); - doc.add(new Field("filename", file.getPath(), Field.Store.YES, Field.Index.UN_TOKENIZED)); - writer.addDocument(doc); - end while. - writer.optimize(); - writer.close(); SEARCH TIME - Directory directory = FSDirectory.getDirectory(indexDir, false); - IndexSearcher reader = new IndexSearcher(directory); - Hits hits = reader.search(new TermQuery(new Term ("content",keyWordToSearch))); - Iterator<Hit> i = hits.iterator(); - while (i.hasNext()){ - Hit hit = i.next(); - Document d =(Document) hit.getDocument(); - d.get("filename") And so, I take the name of the file where the word was found into to do what need to do... I can do when I use only one key word, but more than that, or, if I use some word than I know than is found with the operator "+", I can´t find that! :( So, for the Erick questions: 1- In particular, what analyzers you use at index and search time. Answer: Standard, only at index time! That´s wrong?! 2- What the string was originally and how you indexed it. Answer: I use html, htm and txt files! How I index, is above! 3- What query.toString() shows you. Answer: I used no query! Only the reader.search()... If I write some thing wrong, I´m sorry... :P Thanks in advance! ;) ----- Mensagem original ---- De: Erick Erickson <[EMAIL PROTECTED]> Para: java-user@lucene.apache.org Enviadas: Quinta-feira, 24 de Maio de 2007 13:36:12 Assunto: Re: How to search more than one word? Not until you give us more information <G>. In particular, what analyzers you use at index and search time. What the string was originally and how you indexed it. What query.toString() shows you. Best Erick On 5/24/07, Rodrigo F Valverde <[EMAIL PROTECTED]> wrote: > > Hi all! > > I implemented a searcher with Lucene and i´m trying to search two words, > the both into the same text file, but...i can´t! > > When I search the first word and the second separated, everithing happens > ok, but when together, with or wtithout "AND" or "+"...nothing is found! :( > > Can somebody help me? > > > > __________________________________________________ > Fale com seus amigos de graça com o novo Yahoo! Messenger > http://br.messenger.yahoo.com/ __________________________________________________ Fale com seus amigos de graça com o novo Yahoo! Messenger http://br.messenger.yahoo.com/ __________________________________________________ Fale com seus amigos de graça com o novo Yahoo! Messenger http://br.messenger.yahoo.com/