Hello there,
I am getting exception when running queries with new getDocIdSet() in my customer filter. Following is the code for my getDocIdSet() function:

/public DocIdSet getDocIdSet(IndexReader reader) throws IOException {
    OpenBitSet bitSet = new OpenBitSet(reader.maxDoc());
    for (int i=0; i<reader.maxDoc(); i++) {
      if (reader.isDeleted(i)) continue;
      Document doc = reader.document(i);

if (doc.getValues("ZIPLAT"+t_id)==null || doc.getValues("ZIPLON"+t_id)==null) continue;
      try {
SpatialLocation teamLocation=new SpatialLocation(toRadians(doc.getValues("ZIPLON"+t_id)[0]), toRadians(doc.getValues("ZIPLAT"+t_id)[0]));
        if (location.getDistance(teamLocation) <= radius) bitSet.set(i);
      } catch (Exception e) {
        e.printStackTrace(System.out);
        continue;
      }
    }
    return bitSet;
}
/
I am searching with the following code:
/        QueryParser queryParser = new QueryParser(""   , analyzer);

        DisjunctionMaxQuery query = new DisjunctionMaxQuery(0);
        for (int i=0; i<criterias.length; i++) {
          Query subquery = queryParser.parse(criterias[i].criteria);
          ZipcodeFilter zipFilter = null;
          if (criterias[i].zipcode!=null) {
print("ZipFilter : " + criterias[i].zipcode.zip + " within " + criterias[i].zipcode.radius + " miles."); zipFilter = new ZipcodeFilter(criterias[i].zipcode.latitude, criterias[i].zipcode.longitude, (double) criterias[i].zipcode.radius, teamID);
            subquery = new FilteredQuery(subquery, zipFilter);
          }
          query.add(subquery);
        }/

As you can see, I have multiple queries combined using DisjunctionMaxQuery. The search runs fine if with only one query, but if there are multiple queries, I get an ArrayIndexOutOfBoundException.

Everything was running fine when I was using the depricated bits() method. Do you think I am missing something?

thanks in advance
-siraj


Reply via email to