You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@lucene.apache.org by "Robert Muir (JIRA)" <ji...@apache.org> on 2012/10/11 20:05:05 UTC

[jira] [Commented] (LUCENE-4477) Boolean query composed of spanqueries can return ArrayIndexOutOfBoundsException if one of the subqueries doesn't have a match

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

Robert Muir commented on LUCENE-4477:
-------------------------------------

Maybe try the patch on LUCENE-4401 ? I'm on the phone but it might be the same bug (fixed in the final release: coming out tomorrow)
                
> 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
>
>
> 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: dev-unsubscribe@lucene.apache.org
For additional commands, e-mail: dev-help@lucene.apache.org