you know, a lot of what we do is pressing buttons ;) But luckily not everything.
simon On Mon, Mar 25, 2013 at 7:19 PM, Erick Erickson <erickerick...@gmail.com> wrote: > @Simon > > did I actually catch a reference to: http://xkcd.com/722/ > ??? that's one of my all-time favorites on XKCD, I think it > describes my entire professional life.... > > "Bobby Tables" is another (http://xkcd.com/327/)..... > > There, I've done my bit to stop productivity today! > > Erick > > > On Mon, Mar 25, 2013 at 2:08 PM, Simon Willnauer <simon.willna...@gmail.com> > wrote: >> >> adam, thanks for opening it and reporting the bug! Very much >> appreciated and definitely 50% of the work. I just pressed buttons >> until tests passed! >> >> simon >> >> On Mon, Mar 25, 2013 at 5:37 PM, Adam Rauch <a...@labkey.com> wrote: >> > Thanks, Simon. You've obviously seen (and fixed!) the issue already, >> > but for the record: https://issues.apache.org/jira/browse/LUCENE-4878 >> > >> > Adam >> > >> > -----Original Message----- >> > From: Simon Willnauer [mailto:simon.willna...@gmail.com] >> > Sent: Sunday, March 24, 2013 9:28 AM >> > To: java-user@lucene.apache.org >> > Subject: Re: Assert / NPE using MultiFieldQueryParser >> > >> > Hey, >> > >> > this is in-fact a bug in the MultiFieldQueryParser, can you open a >> > ticket for this please in our bugtracker? >> > >> > MultifieldQueryParser should override getRegexpQuery but it doesn't >> > >> > simon >> > >> > On Sun, Mar 24, 2013 at 3:57 PM, Adam Rauch <a...@labkey.com> wrote: >> >> I'm using MultiFieldQueryParser to parse search queries. I find that >> >> certain query strings (e.g., "/study/" without the quotes) cause >> >> MultiFieldQueryParser.parse() to throw an AssertionError, if asserts >> >> are enabled. In production, parse() returns a Query, but it seems to >> >> be corrupt. using it to search my index results in an NPE. This seems >> >> related to regular expressions. That query string is probably invalid >> >> regex syntax. >> >> but shouldn't MultiFieldQueryParser to throw a ParseException in this >> >> case? >> >> >> >> >> >> >> >> Here's a simple example that reproduces the assertion: >> >> >> >> >> >> >> >> // Turn on asserts >> >> >> >> ClassLoader loader = ClassLoader.getSystemClassLoader(); >> >> >> >> loader.setDefaultAssertionStatus(true); >> >> >> >> >> >> >> >> try >> >> >> >> { >> >> >> >> Analyzer analyzer = new >> >> WhitespaceAnalyzer(Version.LUCENE_41); >> >> >> >> QueryParser parser = new >> >> MultiFieldQueryParser(Version.LUCENE_41, new String[]{"title", >> >> "body"}, analyzer); >> >> >> >> Query query = parser.parse("/study/"); >> >> >> >> } >> >> >> >> catch (ParseException e) >> >> >> >> { >> >> >> >> System.out.println("Syntax error, please rephrase your >> >> query"); >> >> >> >> } >> >> >> >> >> >> >> >> This produces: >> >> >> >> >> >> >> >> Exception in thread "main" java.lang.AssertionError >> >> >> >> at >> >> org.apache.lucene.search.MultiTermQuery.<init>(MultiTermQuery.java:252 >> >> ) >> >> >> >> at >> >> org.apache.lucene.search.AutomatonQuery.<init>(AutomatonQuery.java:65) >> >> >> >> at >> >> org.apache.lucene.search.RegexpQuery.<init>(RegexpQuery.java:90) >> >> >> >> at >> >> org.apache.lucene.search.RegexpQuery.<init>(RegexpQuery.java:79) >> >> >> >> at >> >> org.apache.lucene.search.RegexpQuery.<init>(RegexpQuery.java:69) >> >> >> >> at >> >> org.apache.lucene.queryparser.classic.QueryParserBase.newRegexpQuery(Q >> >> ueryPa >> >> rserBase.java:790) >> >> >> >> at >> >> org.apache.lucene.queryparser.classic.QueryParserBase.getRegexpQuery(Q >> >> ueryPa >> >> rserBase.java:1005) >> >> >> >> at >> >> org.apache.lucene.queryparser.classic.QueryParserBase.handleBareTokenQ >> >> uery(Q >> >> ueryParserBase.java:1075) >> >> >> >> at >> >> org.apache.lucene.queryparser.classic.QueryParser.Term(QueryParser.jav >> >> a:359) >> >> >> >> at >> >> org.apache.lucene.queryparser.classic.QueryParser.Clause(QueryParser.j >> >> ava:25 >> >> 8) >> >> >> >> at >> >> org.apache.lucene.queryparser.classic.QueryParser.Query(QueryParser.ja >> >> va:182 >> >> ) >> >> >> >> at >> >> >> >> org.apache.lucene.queryparser.classic.QueryParser.TopLevelQuery(QueryParser. >> >> java:171) >> >> >> >> at >> >> >> >> org.apache.lucene.queryparser.classic.QueryParserBase.parse(QueryParserBase. >> >> java:120) >> >> >> >> at >> >> QueryParserException.main(QueryParserException.java:21) >> >> >> >> >> >> >> >> Turn off the asserts and parse() returns "successfully". but >> >> subsequent use of that Query instance results in NPEs such as: >> >> >> >> >> >> >> >> java.lang.NullPointerException >> >> >> >> at java.util.TreeMap.getEntry(TreeMap.java:342) >> >> >> >> at java.util.TreeMap.get(TreeMap.java:273) >> >> >> >> at >> >> org.apache.lucene.codecs.perfield.PerFieldPostingsFormat$FieldsReader. >> >> terms( >> >> PerFieldPostingsFormat.java:215) >> >> >> >> at >> >> org.apache.lucene.search.TermCollectingRewrite.collectTerms(TermCollec >> >> tingRe >> >> write.java:58) >> >> >> >> at >> >> org.apache.lucene.search.ConstantScoreAutoRewrite.rewrite(ConstantScor >> >> eAutoR >> >> ewrite.java:95) >> >> >> >> at >> >> org.apache.lucene.search.MultiTermQuery$ConstantScoreAutoRewrite.rewri >> >> te(Mul >> >> tiTermQuery.java:220) >> >> >> >> at >> >> org.apache.lucene.search.MultiTermQuery.rewrite(MultiTermQuery.java:28 >> >> 6) >> >> >> >> at >> >> org.apache.lucene.search.BooleanQuery.rewrite(BooleanQuery.java:429) >> >> >> >> at >> >> org.apache.lucene.search.FilteredQuery.rewrite(FilteredQuery.java:334) >> >> >> >> at >> >> org.apache.lucene.search.IndexSearcher.rewrite(IndexSearcher.java:616) >> >> >> >> at >> >> >> >> org.apache.lucene.search.IndexSearcher.createNormalizedWeight(IndexSearcher. >> >> java:663) >> >> >> >> at >> >> org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:281) >> >> >> >> at >> >> org.labkey.search.model.LuceneSearchServiceImpl.search(LuceneSearchSer >> >> viceIm >> >> pl.java:1160) >> >> >> >> >> >> >> >> This is appearing on production deployments with reasonable (from a >> >> user's >> >> perspective) search queries (e.g., "http://labkey.org/study/xml" >> >> without the quotes). I'd like to either turn off regex parsing >> >> altogether or detect the syntax error at parse time so I can provide >> >> my standard syntax guidance back to the user. >> >> >> >> >> >> >> >> Thanks, >> >> >> >> Adam >> >> >> > >> > --------------------------------------------------------------------- >> > To unsubscribe, e-mail: java-user-unsubscr...@lucene.apache.org >> > For additional commands, e-mail: java-user-h...@lucene.apache.org >> > >> > >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: java-user-unsubscr...@lucene.apache.org >> For additional commands, e-mail: java-user-h...@lucene.apache.org >> > --------------------------------------------------------------------- To unsubscribe, e-mail: java-user-unsubscr...@lucene.apache.org For additional commands, e-mail: java-user-h...@lucene.apache.org