[ 
https://issues.apache.org/jira/browse/LUCENE-6347?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14357261#comment-14357261
 ] 

Michael McCandless commented on LUCENE-6347:
--------------------------------------------

bq. My understanding was that it is an invalid query, if it is not an invalid 
query why is there an assertion error when you enable assertions

But this query (test case) does not in fact trip an assert that you saw / 
posted on the user's list, at least as far as I could tell when I tried to 
repro.

> 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

Reply via email to