One correction, it looks like the parentBits call has 4823680 passed to it
to generate the erroneous docId.

On 6/5/15, 10:34 AM, "Bauer, Herbert S. (Scott)" <bauer.sc...@mayo.edu>
wrote:

>I should mention that this worked in 4.10.4 using a very similar code
>base.  -scott
>
>On 6/4/15, 4:51 PM, "Bauer, Herbert S. (Scott)" <bauer.sc...@mayo.edu>
>wrote:
>
>>I¹m working with Lucene  5.1 to try to make use of the relational
>>structure of the block join index and query mechanisms.  I¹m querying
>>with the following code:
>>
>>IndexReader reader =  DirectoryReader.open(index);
>>
>>ToParentBlockJoinIndexSearcher searcher = new
>>ToParentBlockJoinIndexSearcher(reader);
>>
>>ToParentBlockJoinCollector collector = new
>>ToParentBlockJoinCollector(Sort.RELEVANCE, 2, true, true);
>>
>>BitDocIdSetFilter codingScheme = new BitDocIdSetCachingWrapperFilter(
>>
>>                  new QueryWrapperFilter(new
>>QueryParser("codingSchemeName", new StandardAnalyzer(new CharArraySet( 0,
>>true))).parse(scheme.getCodingSchemeName())));
>>
>>  Query query = new QueryParser(null, new StandardAnalyzer(new
>>CharArraySet( 0, true))).createBooleanQuery("propertyValue",
>>term.getTerm(), Occur.MUST);
>>
>>  ToParentBlockJoinQuery termJoinQuery = new ToParentBlockJoinQuery(
>>
>>    query,
>>
>>    codingScheme,
>>
>>    ScoreMode.Avg);
>>
>>  searcher.search(termJoinQuery, collector);
>>
>>
>>To try to get parent values, but it fails on the final line with the
>>following stack trace:
>>
>>
>>Exception in thread "main" java.lang.IllegalStateException: child query
>>must only match non-parent docs, but parent docID=2147483647 matched
>>childScorer=class org.apache.lucene.search.TermScorer
>>
>>at 
>>org.apache.lucene.search.join.ToParentBlockJoinQuery$BlockJoinScorer.next
>>D
>>oc(ToParentBlockJoinQuery.java:330)
>>
>>at 
>>org.apache.lucene.search.join.ToParentBlockJoinIndexSearcher.search(ToPar
>>e
>>ntBlockJoinIndexSearcher.java:63)
>>
>>at org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:428)
>>
>>at 
>>org.lexevs.lucene.prototype.LuceneQueryTrial.luceneToParentJoinQuery(Luce
>>n
>>eQueryTrial.java:78)
>>
>>at 
>>org.lexevs.lucene.prototype.LuceneQueryTrial.main(LuceneQueryTrial.java:3
>>2
>>7)
>>
>>
>>I build indexes up to about 36Gb using a code similar to the following:
>>
>>
>>List<Document> list = new ArrayList<Document>();
>>
>>//need a static
>>
>>int staticCount = count;
>>
>>ParentDocObject parent =
>>builder.generateParentDoc(cs.getCodingSchemeName(),
>>
>>cs.getVersion(), cs.getURI(), "description");
>>
>>if (cs.codingSchemeName.equals(CodingScheme.THESSCHEME.codingSchemeName))
>>{
>>
>>//One per coding Scheme
>>
>>int numberOfProperties = 12;
>>
>>if(!thesExactMatchDone){
>>
>>ChildDocObject child1 =
>>builder.generateChildDocWithSalt(parent,SearchTerms.BLOOD.getTerm());
>>
>>Document doc1 = builder.mapToDocumentExactMatch(child1);
>>
>>list.add(doc1);
>>
>>count++;
>>
>>numberOfProperties--;
>>
>>ChildDocObject child =
>>builder.generateChildDocWithSalt(parent,SearchTerms.CHAR.term);
>>
>>Document doc = builder.mapToDocumentExactMatch(child);
>>
>>count++;
>>
>>list.add(doc);
>>
>>numberOfProperties--;
>>
>>thesExactMatchDone = true;
>>
>>}
>>
>>while (numberOfProperties > 0) {
>>
>>if(count % 547 == 0){
>>
>>ChildDocObject child = builder.generateChildDocWithSalt(parent,
>>
>>builder.randomTextGenerator(
>>
>>builder.randomNumberGenerator(),SearchTerms.BLOOD.getTerm()));
>>
>>Document doc = builder.mapToDocument(child);
>>
>>list.add(doc);
>>
>>count++;numberOfProperties--;
>>
>>}else if(count % 233 == 0){
>>
>>ChildDocObject child = builder.generateChildDocWithSalt(parent,
>>
>>builder.randomTextGenerator(
>>
>>builder.randomNumberGenerator(),SearchTerms.CHAR.getTerm()));
>>
>>Document doc = builder.mapToDocument(child);
>>
>>list.add(doc);
>>
>>count++;numberOfProperties--;
>>
>>}else if(count % 71 == 0){
>>
>>ChildDocObject child = builder.generateChildDocWithSalt(parent,
>>
>>builder.randomTextGenerator(
>>
>>builder.randomNumberGenerator(),SearchTerms.ARTICLE.getTerm()));
>>
>>Document doc = builder.mapToDocument(child);
>>
>>list.add(doc);
>>
>>count++;numberOfProperties--;
>>
>>}else if(count % 2237 == 0){
>>
>>ChildDocObject child = builder.generateChildDocWithSalt(parent,
>>
>>builder.randomTextGenerator(
>>
>>builder.randomNumberGenerator(),SearchTerms.LUNG_CANCER.getTerm()));
>>
>>Document doc = builder.mapToDocument(child);
>>
>>list.add(doc);
>>
>>count++;numberOfProperties--;
>>
>>}else if(count % 5077 == 0){
>>
>>ChildDocObject child = builder.generateChildDocWithSalt(parent,
>>
>>builder.randomTextGenerator(
>>
>>builder.randomNumberGenerator(),SearchTerms.LIVER_CARCINOMA.getTerm()));
>>
>>Document doc = builder.mapToDocument(child);
>>
>>list.add(doc);
>>
>>count++;numberOfProperties--;
>>
>>}else if(count % 2371 == 0){
>>
>>ChildDocObject child = builder.generateChildDocWithSalt(parent,
>>
>>builder.randomTextGeneratorStartsWith(
>>
>>builder.randomNumberGenerator(),SearchTerms.BLOOD.getTerm()));
>>
>>Document doc = builder.mapToDocumentExactMatch(child);
>>
>>list.add(doc);
>>
>>count++;numberOfProperties--;
>>
>>}else if(count % 79 == 0){
>>
>>ChildDocObject child = builder.generateChildDocWithSalt(parent,
>>
>>builder.randomTextGeneratorStartsWith(
>>
>>builder.randomNumberGenerator(),SearchTerms.ARTICLE.getTerm()));
>>
>>Document doc = builder.mapToDocumentExactMatch(child);
>>
>>list.add(doc);
>>
>>count++;numberOfProperties--;
>>
>>}else if(count % 3581 == 0){
>>
>>ChildDocObject child = builder.generateChildDocWithSalt(parent,
>>
>>builder.randomTextGeneratorStartsWith(
>>
>>builder.randomNumberGenerator(),SearchTerms.LUNG_CANCER.getTerm()));
>>
>>Document doc = builder.mapToDocumentExactMatch(child);
>>
>>list.add(doc);
>>
>>count++;numberOfProperties--;
>>
>>}else if(count % 23 == 0){
>>
>>ChildDocObject child = builder.generateChildDocWithSalt(parent,
>>
>>builder.randomTextGeneratorStartsWith(
>>
>>builder.randomNumberGenerator(),SearchTerms.CHAR.getTerm()));
>>
>>Document doc = builder.mapToDocumentExactMatch(child);
>>
>>list.add(doc);
>>
>>count++;numberOfProperties--;
>>
>>} else {
>>
>>ChildDocObject child = builder.generateChildDoc(parent);
>>
>>Document doc = builder.mapToDocument(child);
>>
>>list.add(doc);
>>
>>count++;
>>
>>numberOfProperties--;
>>
>>}
>>
>>}
>>
>>}
>>
>>Document par = builder.mapToDocument(parent);
>>
>>list.add(par);
>>
>>writer.addDocuments(list);
>>
>>}
>>
>>
>>Which works pretty well until I scale it up using several instances of
>>this.  When the nextChildDoc document retrieved gets to id 5874902 the
>>line in ToParentBlockJoinQuery
>>
>>
>>        parentDoc = parentBits.nextSetBit(nextChildDoc);
>>
>>
>>Gives the value  2147483647 to the parentDoc, which is not a document id
>>in my index if I understand lucene and Luke correctly since my index has
>>only 42716877 documents.
>>
>>Can someone shed some light on this exception?
>>
>>
>>Thanks,
>>
>>Scott Bauer
>>
>>
>>
>>
>
>
>---------------------------------------------------------------------
>To unsubscribe, e-mail: java-user-unsubscr...@lucene.apache.org
>For additional commands, e-mail: java-user-h...@lucene.apache.org
>


---------------------------------------------------------------------
To unsubscribe, e-mail: java-user-unsubscr...@lucene.apache.org
For additional commands, e-mail: java-user-h...@lucene.apache.org

Reply via email to