You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-user@lucene.apache.org by Sascha Janz <Sa...@gmx.net> on 2015/01/14 15:07:09 UTC

trouble with Collector and FieldCache

hello,
 
i am using lucene 4.6.  in my query i use a collector to get field values.
 
setNextReader is implemented as below.
 
public void setNextReader(AtomicReaderContext context) throws IOException {

cacheIDs = FieldCache.DEFAULT.getInts(context.reader(),	"id", true); 
}

and collect 

public void collect(int docnr) throws IOException {
		int id = 0;
		id = cacheIDs .get(docnr);
                    ...

 
} 

But sometimes i got an exception like 

2015-01-12 13:32:49,342 [ID:1e8e1dff-9a57-11e4-a697-c29020524153]ERROR (org.apache.lucene.search.join.Collector) - Error getInts
java.lang.ArrayIndexOutOfBoundsException: 0
	at org.apache.lucene.util.NumericUtils.getPrefixCodedIntShift(NumericUtils.java:208)
	at org.apache.lucene.util.NumericUtils$2.accept(NumericUtils.java:493)
	at org.apache.lucene.index.FilteredTermsEnum.next(FilteredTermsEnum.java:241)
	at org.apache.lucene.search.FieldCacheImpl$Uninvert.uninvert(FieldCacheImpl.java:307)
	at org.apache.lucene.search.FieldCacheImpl$IntCache.createValue(FieldCacheImpl.java:678)
	at org.apache.lucene.search.FieldCacheImpl$Cache.get(FieldCacheImpl.java:211)
	at org.apache.lucene.search.FieldCacheImpl.getInts(FieldCacheImpl.java:570)
	at org.apache.lucene.search.FieldCacheImpl$IntCache.createValue(FieldCacheImpl.java:631)
	at org.apache.lucene.search.FieldCacheImpl$Cache.get(FieldCacheImpl.java:211)
	at org.apache.lucene.search.FieldCacheImpl.getInts(FieldCacheImpl.java:570)
	at org.apache.lucene.search.FieldCacheImpl.getInts(FieldCacheImpl.java:545)
	at org.apache.lucene.search.join.MyCollector.setNextReader(MyCollector.java:264)


when i try to get the field the normal way like this 

	Document doc = reader.document(docnr);
	String sid = doc.get("id");
          int id = Integer.parseInt(sid);

everything is fine. 

am i doing something wrong?

regards 
Sascha

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


Aw: Re: trouble with Collector and FieldCache

Posted by Sascha Janz <Sa...@gmx.net>.
they are all stored like this

 

Field fid = new Field("id", "", Field.Store.YES, Field.Index.NOT_ANALYZED, Field.TermVector.NO);
fid.setStringValue(Integer.toString(id));

 

because of reusing fid i have to set the value this way.
 

Gesendet: Donnerstag, 15. Januar 2015 um 13:12 Uhr
Von: "Ian Lea" <ia...@gmail.com>
An: java-user@lucene.apache.org
Betreff: Re: trouble with Collector and FieldCache
How are you storing the id field? A wild guess might be that this
error might be caused by having some documents with id stored,
perhaps, as a StringField or TextField and some as an IntField.


--
Ian.


On Wed, Jan 14, 2015 at 2:07 PM, Sascha Janz <Sa...@gmx.net> wrote:
>
> hello,
>
> i am using lucene 4.6. in my query i use a collector to get field values.
>
> setNextReader is implemented as below.
>
> public void setNextReader(AtomicReaderContext context) throws IOException {
>
> cacheIDs = FieldCache.DEFAULT.getInts(context.reader(), "id", true);
> }
>
> and collect
>
> public void collect(int docnr) throws IOException {
> int id = 0;
> id = cacheIDs .get(docnr);
> ...
>
>
> }
>
> But sometimes i got an exception like
>
> 2015-01-12 13:32:49,342 [ID:1e8e1dff-9a57-11e4-a697-c29020524153]ERROR (org.apache.lucene.search.join.Collector) - Error getInts
> java.lang.ArrayIndexOutOfBoundsException: 0
> at org.apache.lucene.util.NumericUtils.getPrefixCodedIntShift(NumericUtils.java:208)
> at org.apache.lucene.util.NumericUtils$2.accept(NumericUtils.java:493)
> at org.apache.lucene.index.FilteredTermsEnum.next(FilteredTermsEnum.java:241)
> at org.apache.lucene.search.FieldCacheImpl$Uninvert.uninvert(FieldCacheImpl.java:307)
> at org.apache.lucene.search.FieldCacheImpl$IntCache.createValue(FieldCacheImpl.java:678)
> at org.apache.lucene.search.FieldCacheImpl$Cache.get(FieldCacheImpl.java:211)
> at org.apache.lucene.search.FieldCacheImpl.getInts(FieldCacheImpl.java:570)
> at org.apache.lucene.search.FieldCacheImpl$IntCache.createValue(FieldCacheImpl.java:631)
> at org.apache.lucene.search.FieldCacheImpl$Cache.get(FieldCacheImpl.java:211)
> at org.apache.lucene.search.FieldCacheImpl.getInts(FieldCacheImpl.java:570)
> at org.apache.lucene.search.FieldCacheImpl.getInts(FieldCacheImpl.java:545)
> at org.apache.lucene.search.join.MyCollector.setNextReader(MyCollector.java:264)
>
>
> when i try to get the field the normal way like this
>
> Document doc = reader.document(docnr);
> String sid = doc.get("id");
> int id = Integer.parseInt(sid);
>
> everything is fine.
>
> am i doing something wrong?
>
> regards
> Sascha
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: java-user-unsubscribe@lucene.apache.org
> For additional commands, e-mail: java-user-help@lucene.apache.org
>

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

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


Re: trouble with Collector and FieldCache

Posted by Ian Lea <ia...@gmail.com>.
How are you storing the id field?  A wild guess might be that this
error might be caused by having some documents with id stored,
perhaps, as a StringField or TextField and some as an IntField.


--
Ian.


On Wed, Jan 14, 2015 at 2:07 PM, Sascha Janz <Sa...@gmx.net> wrote:
>
> hello,
>
> i am using lucene 4.6.  in my query i use a collector to get field values.
>
> setNextReader is implemented as below.
>
> public void setNextReader(AtomicReaderContext context) throws IOException {
>
> cacheIDs = FieldCache.DEFAULT.getInts(context.reader(), "id", true);
> }
>
> and collect
>
> public void collect(int docnr) throws IOException {
>                 int id = 0;
>                 id = cacheIDs .get(docnr);
>                     ...
>
>
> }
>
> But sometimes i got an exception like
>
> 2015-01-12 13:32:49,342 [ID:1e8e1dff-9a57-11e4-a697-c29020524153]ERROR (org.apache.lucene.search.join.Collector) - Error getInts
> java.lang.ArrayIndexOutOfBoundsException: 0
>         at org.apache.lucene.util.NumericUtils.getPrefixCodedIntShift(NumericUtils.java:208)
>         at org.apache.lucene.util.NumericUtils$2.accept(NumericUtils.java:493)
>         at org.apache.lucene.index.FilteredTermsEnum.next(FilteredTermsEnum.java:241)
>         at org.apache.lucene.search.FieldCacheImpl$Uninvert.uninvert(FieldCacheImpl.java:307)
>         at org.apache.lucene.search.FieldCacheImpl$IntCache.createValue(FieldCacheImpl.java:678)
>         at org.apache.lucene.search.FieldCacheImpl$Cache.get(FieldCacheImpl.java:211)
>         at org.apache.lucene.search.FieldCacheImpl.getInts(FieldCacheImpl.java:570)
>         at org.apache.lucene.search.FieldCacheImpl$IntCache.createValue(FieldCacheImpl.java:631)
>         at org.apache.lucene.search.FieldCacheImpl$Cache.get(FieldCacheImpl.java:211)
>         at org.apache.lucene.search.FieldCacheImpl.getInts(FieldCacheImpl.java:570)
>         at org.apache.lucene.search.FieldCacheImpl.getInts(FieldCacheImpl.java:545)
>         at org.apache.lucene.search.join.MyCollector.setNextReader(MyCollector.java:264)
>
>
> when i try to get the field the normal way like this
>
>         Document doc = reader.document(docnr);
>         String sid = doc.get("id");
>           int id = Integer.parseInt(sid);
>
> everything is fine.
>
> am i doing something wrong?
>
> regards
> Sascha
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: java-user-unsubscribe@lucene.apache.org
> For additional commands, e-mail: java-user-help@lucene.apache.org
>

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