[
https://issues.apache.org/jira/browse/LUCENE-4477?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Michael McCandless updated LUCENE-4477:
---------------------------------------
Attachment: LUCENE-4477.patch
This test passes now on trunk (I stuffed it into analysis module...).
> 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]