DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG 
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://nagoya.apache.org/bugzilla/show_bug.cgi?id=16677>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND 
INSERTED IN THE BUG DATABASE.

http://nagoya.apache.org/bugzilla/show_bug.cgi?id=16677

Escape bug

           Summary: Escape bug
           Product: Lucene
           Version: 1.2
          Platform: All
        OS/Version: Windows XP
            Status: NEW
          Severity: Normal
          Priority: Other
         Component: QueryParser
        AssignedTo: [EMAIL PROTECTED]
        ReportedBy: [EMAIL PROTECTED]


package cz.finesoft.socd;

import junit.framework.*;
import org.apache.lucene.index.*;
import org.apache.lucene.analysis.*;
import org.apache.lucene.analysis.standard.*;
import org.apache.lucene.store.*;
import org.apache.lucene.document.*;
import org.apache.lucene.search.*;
import org.apache.lucene.queryParser.*;

/**
 * Escape bug. Please report solutions on [EMAIL PROTECTED], thanks.
 * Here is the description:
 *
 * When searching for \(1\) everything is ok. But let`s search for: \(?\)
 * YES! Nothing found! It`s same with \" and maybe other escaped characters. 
 *
 * User: Lukas Zapletal
 * Date: Feb 1, 2003
 *
 * JUnit test case follows:
 */
public class juEscapeBug extends TestCase {
    Directory dir = new RAMDirectory();
    String testText = "This is a test. (abc) Is there a bug OR not? \"Question\"!";

    public juEscapeBug(String tn) {
        super(tn);
    }

    protected void setUp() throws Exception {
        IndexWriter writer = new IndexWriter(dir, new SimpleAnalyzer(), true);
        Document doc = new Document();
        doc.add(Field.Text("contents", testText));
        writer.addDocument(doc);
        writer.optimize();
        writer.close();
    }

    private boolean doQuery(String queryString) throws Exception {
        Searcher searcher = new IndexSearcher(dir);
        Analyzer analyzer = new StandardAnalyzer();
        Query query = QueryParser.parse(queryString, "contents", analyzer);
        Hits hits = searcher.search(query);
        searcher.close();
        return (hits.length() == 1);
    }

    public void testBugOk1() throws Exception {
        assertTrue(doQuery("Test"));
    }
    public void testBugOk2() throws Exception {
        assertFalse(doQuery("This is not there"));
    }
    public void testBugOk3() throws Exception {
        assertTrue(doQuery("abc"));
    }
    public void testBugOk4() throws Exception {
        assertTrue(doQuery("\\(abc\\)"));
    }
    public void testBugHere1() throws Exception {
        assertTrue(doQuery("\\(a?c\\)")); // BUG HERE !!!
    }
    public void testBugHere2() throws Exception {
        assertTrue(doQuery("\\(a*\\)")); // BUG HERE !!!
    }
    public void testBugHere3() throws Exception {
        assertTrue(doQuery("\\\"qu*on\\\"")); // BUG HERE !!!
    }
}

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to