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 <sascha.j...@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-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