Respect limit
This commit is contained in:
parent
da3e7fdf33
commit
5f6dfac1da
@ -105,7 +105,7 @@ public class LuceneIndexImpl<T, U> implements LuceneIndex<T, U> {
|
|||||||
mltDocumentFields
|
mltDocumentFields
|
||||||
)
|
)
|
||||||
.collectList()
|
.collectList()
|
||||||
.flatMap(LuceneIndexImpl::mergeResults)
|
.flatMap(shards -> mergeResults(queryParams, shards))
|
||||||
.map(this::mapResults)
|
.map(this::mapResults)
|
||||||
.single();
|
.single();
|
||||||
}
|
}
|
||||||
@ -118,7 +118,7 @@ public class LuceneIndexImpl<T, U> implements LuceneIndex<T, U> {
|
|||||||
indicizer.getKeyFieldName()
|
indicizer.getKeyFieldName()
|
||||||
)
|
)
|
||||||
.collectList()
|
.collectList()
|
||||||
.flatMap(LuceneIndexImpl::mergeResults)
|
.flatMap(shards -> mergeResults(queryParams, shards))
|
||||||
.map(this::mapResults)
|
.map(this::mapResults)
|
||||||
.single();
|
.single();
|
||||||
}
|
}
|
||||||
@ -193,7 +193,8 @@ public class LuceneIndexImpl<T, U> implements LuceneIndex<T, U> {
|
|||||||
return luceneIndex.releaseSnapshot(snapshot);
|
return luceneIndex.releaseSnapshot(snapshot);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static Mono<LLSearchResultShard> mergeResults(List<LLSearchResultShard> shards) {
|
private static Mono<LLSearchResultShard> mergeResults(ClientQueryParams queryParams,
|
||||||
|
List<LLSearchResultShard> shards) {
|
||||||
if (shards.size() == 0) {
|
if (shards.size() == 0) {
|
||||||
return Mono.empty();
|
return Mono.empty();
|
||||||
} else if (shards.size() == 1) {
|
} else if (shards.size() == 1) {
|
||||||
@ -209,17 +210,19 @@ public class LuceneIndexImpl<T, U> implements LuceneIndex<T, U> {
|
|||||||
} else {
|
} else {
|
||||||
count = LuceneUtils.sum(count, shard.totalHitsCount());
|
count = LuceneUtils.sum(count, shard.totalHitsCount());
|
||||||
}
|
}
|
||||||
results.add(shard.results());
|
var maxLimit = queryParams.offset() + queryParams.limit();
|
||||||
|
results.add(shard.results().take(maxLimit, true));
|
||||||
resources.add(shard);
|
resources.add(shard);
|
||||||
}
|
}
|
||||||
Objects.requireNonNull(count);
|
Objects.requireNonNull(count);
|
||||||
var resultsFlux = Flux.zip(results, parts -> {
|
Flux<LLKeyScore> resultsFlux;
|
||||||
var arr = new ArrayList<LLKeyScore>(parts.length);
|
if (results.size() == 0) {
|
||||||
for (Object part : parts) {
|
resultsFlux = Flux.empty();
|
||||||
arr.add((LLKeyScore) part);
|
} else if (results.size() == 1) {
|
||||||
}
|
resultsFlux = results.get(0);
|
||||||
return arr;
|
} else {
|
||||||
}).concatMapIterable(list -> list);
|
resultsFlux = Flux.merge(results);
|
||||||
|
}
|
||||||
return new LLSearchResultShard(resultsFlux, count, () -> {
|
return new LLSearchResultShard(resultsFlux, count, () -> {
|
||||||
for (Resource<?> resource : resources) {
|
for (Resource<?> resource : resources) {
|
||||||
resource.close();
|
resource.close();
|
||||||
|
Loading…
Reference in New Issue
Block a user