fix limit filter to properly handle cross segments cases

This commit is contained in:
kimchy 2011-05-28 23:14:58 +03:00
parent 3025205063
commit 2ef4a5e84c
1 changed files with 5 additions and 2 deletions

View File

@ -28,6 +28,7 @@ import java.io.IOException;
public class LimitFilter extends NoCacheFilter { public class LimitFilter extends NoCacheFilter {
private final int limit; private final int limit;
private int counter;
public LimitFilter(int limit) { public LimitFilter(int limit) {
this.limit = limit; this.limit = limit;
@ -38,13 +39,15 @@ public class LimitFilter extends NoCacheFilter {
} }
@Override public DocIdSet getDocIdSet(IndexReader reader) throws IOException { @Override public DocIdSet getDocIdSet(IndexReader reader) throws IOException {
if (counter > limit) {
return null;
}
return new LimitDocSet(reader.maxDoc(), limit); return new LimitDocSet(reader.maxDoc(), limit);
} }
public static class LimitDocSet extends GetDocSet { public class LimitDocSet extends GetDocSet {
private final int limit; private final int limit;
private int counter;
public LimitDocSet(int maxDoc, int limit) { public LimitDocSet(int maxDoc, int limit) {
super(maxDoc); super(maxDoc);