[ https://issues.apache.org/jira/browse/LUCENE-6347?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Michael McCandless resolved LUCENE-6347. ---------------------------------------- Resolution: Duplicate I dug into this, saw it wouldn't repro on 4.10.x but would on 4.1.x, and then hit http://jirasearch.mikemccandless.com and found the duplicate issue LUCENE-4878. Thanks Paul! > MultiFieldQueryParser doesnt catch invalid syntax properly (due to user using > regexpression syntax unwittingly) > --------------------------------------------------------------------------------------------------------------- > > Key: LUCENE-6347 > URL: https://issues.apache.org/jira/browse/LUCENE-6347 > Project: Lucene - Core > Issue Type: Bug > Components: core/queryparser > Affects Versions: 4.1 > Reporter: Paul taylor > > MultiFieldQueryParser doesnt catch invalid syntax properly (due to user using > regexpression syntax unwittingly) > {code} > import org.apache.lucene.analysis.standard.StandardAnalyzer; > import org.apache.lucene.queryparser.classic.MultiFieldQueryParser; > import org.apache.lucene.queryparser.classic.ParseException; > import org.apache.lucene.queryparser.classic.QueryParser; > import org.apache.lucene.util.Version; > import org.junit.Test; > import static org.junit.Assert.assertNotNull; > import static org.junit.Assert.assertTrue; > /** > * Lucene tests > */ > public class LuceneRegExParseTest > { > @Test > public void testSearch411LuceneBugReport() throws Exception > { > Exception e = null; > try > { > String[] fields = new String[2]; > fields[0] = "artist"; > fields[1] = "recording"; > QueryParser qp = new MultiFieldQueryParser(Version.LUCENE_41, > fields, new StandardAnalyzer(Version.LUCENE_41)); > qp.parse("artist:pandora /reyli recording:yo/Alguien"); > } > catch(Exception ex) > { > e=ex; > } > assertNotNull(e); > assertTrue(e instanceof ParseException ); > } > } > {code} > With assertions disabled this test fails as no exception is thrown. > With assertions enabled we get > {code} > 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(QueryParserBase.java:790) > at > org.apache.lucene.queryparser.classic.QueryParserBase.getRegexpQuery(QueryParserBase.java:1005) > at > org.apache.lucene.queryparser.classic.QueryParserBase.handleBareTokenQuery(QueryParserBase.java:1075) > at > org.apache.lucene.queryparser.classic.QueryParser.Term(QueryParser.java:359) > at > org.apache.lucene.queryparser.classic.QueryParser.Clause(QueryParser.java:258) > at > org.apache.lucene.queryparser.classic.QueryParser.Query(QueryParser.java:213) > at > org.apache.lucene.queryparser.classic.QueryParser.TopLevelQuery(QueryParser.java:171) > at > org.apache.lucene.queryparser.classic.QueryParserBase.parse(QueryParserBase.java:120) > at > org.musicbrainz.search.servlet.LuceneRegExParseTest.testSearch411LuceneBugReport(LuceneRegExParseTest.java:30) > but this should throw an exception without assertions enabled. Because no > exception is thrown a search then faikls with the following stack trace > 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(TermCollectingRewrite.java:58) > at > org.apache.lucene.search.ConstantScoreAutoRewrite.rewrite(ConstantScoreAutoRewrite.java:95) > at > org.apache.lucene.search.MultiTermQuery$ConstantScoreAutoRewrite.rewrite(MultiTermQuery.java:220) > at org.apache.lucene.search.MultiTermQuery.rewrite(MultiTermQuery.java:286) > at org.apache.lucene.search.BooleanQuery.rewrite(BooleanQuery.java:429) > 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.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:269) > {code} -- This message was sent by Atlassian JIRA (v6.3.4#6332) --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org For additional commands, e-mail: dev-h...@lucene.apache.org