You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@lucene.apache.org by Alexander Lipatov <al...@advisa.ru> on 2017/08/02 10:15:33 UTC

ToParentBlockJoinSortField and NullPointerException - test case

Hello,

I have a ToParentBlockJoinQuery and I want to sort the results by one of
the child fields. I have: ToParentBlockJoinSortField

Sometimes it works good. And sometimes I have a strange error. Maybe you
can guess what's going on based on the stack trace. If not - I created an
example here: https://github.com/jamerlan/LuceneNestedSearchError

It fails on: "parents.length()" because parents is null.
Lucene version: 6.6.0

Exception in thread "main" java.lang.NullPointerException
	at org.apache.lucene.search.join.BlockJoinSelector.wrap(BlockJoinSelector.java:161)
	at org.apache.lucene.search.join.ToParentBlockJoinSortField$3.getNumericDocValues(ToParentBlockJoinSortField.java:168)
	at org.apache.lucene.search.FieldComparator$NumericComparator.doSetNextReader(FieldComparator.java:153)
	at org.apache.lucene.search.SimpleFieldComparator.getLeafComparator(SimpleFieldComparator.java:36)
	at org.apache.lucene.search.FieldValueHitQueue.getComparators(FieldValueHitQueue.java:180)
	at org.apache.lucene.search.TopFieldCollector$SimpleFieldCollector.getLeafCollector(TopFieldCollector.java:100)
	at org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:659)
	at org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:472)
	at org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:591)
	at org.apache.lucene.search.IndexSearcher.searchAfter(IndexSearcher.java:576)
	at org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:491)
	at parentchild.StrangeErrorTest.main(StrangeErrorTest.java:87)


Strange thing is:
If you comment out this block:
        BookStore bs2 = new BookStore(2, "second");
        BookStoreInfo bookStoreInfo2 = new BookStoreInfo(20, "book 2");
        index(searcherManager, indexWriter, bs2, bookStoreInfo2);
then it works.

Thank you for help!

Re: ToParentBlockJoinSortField and NullPointerException - test case

Posted by Mikhail Khludnev <mk...@apache.org>.
Make sure it uses IW.updateDocuments() to write docs block as whole

On Wed, Aug 2, 2017 at 8:15 PM, Alexander Lipatov <al...@advisa.ru>
wrote:

> Hello,
>
> I have a ToParentBlockJoinQuery and I want to sort the results by one of
> the child fields. I have: ToParentBlockJoinSortField
>
> Sometimes it works good. And sometimes I have a strange error. Maybe you
> can guess what's going on based on the stack trace. If not - I created an
> example here: https://github.com/jamerlan/LuceneNestedSearchError
>
> It fails on: "parents.length()" because parents is null.
> Lucene version: 6.6.0
>
> Exception in thread "main" java.lang.NullPointerException
> 	at org.apache.lucene.search.join.BlockJoinSelector.wrap(BlockJoinSelector.java:161)
> 	at org.apache.lucene.search.join.ToParentBlockJoinSortField$3.getNumericDocValues(ToParentBlockJoinSortField.java:168)
> 	at org.apache.lucene.search.FieldComparator$NumericComparator.doSetNextReader(FieldComparator.java:153)
> 	at org.apache.lucene.search.SimpleFieldComparator.getLeafComparator(SimpleFieldComparator.java:36)
> 	at org.apache.lucene.search.FieldValueHitQueue.getComparators(FieldValueHitQueue.java:180)
> 	at org.apache.lucene.search.TopFieldCollector$SimpleFieldCollector.getLeafCollector(TopFieldCollector.java:100)
> 	at org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:659)
> 	at org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:472)
> 	at org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:591)
> 	at org.apache.lucene.search.IndexSearcher.searchAfter(IndexSearcher.java:576)
> 	at org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:491)
> 	at parentchild.StrangeErrorTest.main(StrangeErrorTest.java:87)
>
>
> Strange thing is:
> If you comment out this block:
>         BookStore bs2 = new BookStore(2, "second");
>         BookStoreInfo bookStoreInfo2 = new BookStoreInfo(20, "book 2");
>         index(searcherManager, indexWriter, bs2, bookStoreInfo2);
> then it works.
>
> Thank you for help!
>



-- 
Sincerely yours
Mikhail Khludnev