[ 
https://issues.apache.org/jira/browse/LUCENE-4477?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Michael McCandless resolved LUCENE-4477.
----------------------------------------

    Resolution: Duplicate

Dup of LUCENE-4401, but I committed this nice test case (thanks Timothy!).
                
> Boolean query composed of spanqueries can return 
> ArrayIndexOutOfBoundsException if one of the subqueries doesn't have a match 
> ------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: LUCENE-4477
>                 URL: https://issues.apache.org/jira/browse/LUCENE-4477
>             Project: Lucene - Core
>          Issue Type: Bug
>          Components: core/search
>    Affects Versions: 4.0-BETA
>         Environment: Windows 7
>            Reporter: Timothy Allison
>              Labels: newbie
>             Fix For: 4.0-BETA
>
>         Attachments: LUCENE-4477.patch
>
>
> When building a boolean query of two spanqueryies, if one of the spanqueries 
> does not have a hit, an ArrayIndexOutOfBoundsException is thrown.
> This does not happen when building a boolean query of two TermQuery(ies), nor 
> does it happen if all of the terms have a hit.
>       @Test
>       public void testBooleanSpanQuery() {
>               boolean failed = false;
>               int hits = 0;
>               try{
>                       CharArraySet stops = CharArraySet.EMPTY_SET;
>                       Analyzer indexerAnalyzer = new 
> StandardAnalyzer(LuceneProjectVersion.LUCENE_VERSION, stops);
>                       Directory directory = new RAMDirectory();
>               
>                       IndexWriterConfig config = new 
> IndexWriterConfig(LuceneProjectVersion.LUCENE_VERSION, indexerAnalyzer);
>                       IndexWriter writer = new IndexWriter(directory, config);
>                       String FIELD = "content";
>                       Document d = new Document();
>                       d.add(new TextField(FIELD, "clockwork orange", 
> Field.Store.YES));
>                       writer.addDocument(d);
>                       writer.close();
>                       IndexReader indexReader = 
> DirectoryReader.open(directory);
>                       IndexSearcher searcher = new IndexSearcher(indexReader);
>               
>                       BooleanQuery query = new BooleanQuery();
>                       SpanQuery sq1 = new SpanTermQuery(new Term(FIELD, 
> "clockwork"));
>                       SpanQuery sq2 = new SpanTermQuery(new Term(FIELD, 
> "clckwork"));
>                       query.add(sq1, BooleanClause.Occur.SHOULD);
>                       query.add(sq2, BooleanClause.Occur.SHOULD);
>                       TopScoreDocCollector collector = 
> TopScoreDocCollector.create(1000, true);
>                       searcher.search(query, collector);
>                       hits = collector.topDocs().scoreDocs.length;
>                       for (ScoreDoc scoreDoc : collector.topDocs().scoreDocs){
>                               System.out.println(scoreDoc.doc);
>                       }
>               } catch (java.lang.ArrayIndexOutOfBoundsException e){
>                       failed = true;
>               } catch (IOException e){
>               
>                       e.printStackTrace();
>               }
>               assertEquals("Bug in boolean query composed of span queries", 
> failed, false);
>               assertEquals("Bug in boolean query composed of span queries", 
> hits, 1);
>       }

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to