@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 > >