Lukas Zapletal wrote:
Hello all,
Let`s have an indexed text "Test (1) and test (2)".
Now search for: \(1\)
Everything OK, so lets search for: \(?\)
Nothing found! It`s same with \" and maybe other escaped characters.
Is this a bug? Is it already solved in the CVS? If not, how can we fix
it?
Thanks for help! Lucene rocks.
ps - have anybody compiled lucene with GCJ? if so with any results in
performance?
attaching JUnit test....
--
Lukas Zapletal [[EMAIL PROTECTED]]
http://www.tanecni-olomouc.cz/lzap
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]