mirror of
https://github.com/MarginaliaSearch/MarginaliaSearch.git
synced 2025-10-06 17:32:39 +02:00
Compare commits
3 Commits
deploy-030
...
deploy-030
Author | SHA1 | Date | |
---|---|---|---|
|
caf2e6fbb7 | ||
|
233f0acfb1 | ||
|
e3a4ff02e9 |
@@ -66,7 +66,7 @@ public class IndexQueryExecution {
|
||||
|
||||
// Await evaluation task termination
|
||||
synchronized (IndexQueryExecution.this) {
|
||||
while (evaluationJobCounter > 0) {
|
||||
while (evaluationJobCounter > 0 && budget.hasTimeLeft()) {
|
||||
IndexQueryExecution.this.wait(budget.timeLeft());
|
||||
}
|
||||
}
|
||||
@@ -76,7 +76,7 @@ public class IndexQueryExecution {
|
||||
}
|
||||
|
||||
private void lookup(IndexQuery query) {
|
||||
final LongQueryBuffer buffer = new LongQueryBuffer(1024);
|
||||
final LongQueryBuffer buffer = new LongQueryBuffer(8192);
|
||||
try {
|
||||
while (query.hasMore() && budget.hasTimeLeft()) {
|
||||
|
||||
@@ -103,7 +103,7 @@ public class IndexQueryExecution {
|
||||
}
|
||||
|
||||
if (stealWork) {
|
||||
resultHeap.addAll(rankingService.rankResults(rankingContext, docIds, false));
|
||||
resultHeap.addAll(rankingService.rankResults(rankingContext, budget, docIds, false));
|
||||
}
|
||||
else {
|
||||
// Spawn an evaluation task
|
||||
@@ -120,7 +120,7 @@ public class IndexQueryExecution {
|
||||
try {
|
||||
if (!budget.hasTimeLeft())
|
||||
return;
|
||||
resultHeap.addAll(rankingService.rankResults(rankingContext, docIds, false));
|
||||
resultHeap.addAll(rankingService.rankResults(rankingContext, budget, docIds, false));
|
||||
} finally {
|
||||
synchronized (IndexQueryExecution.this) {
|
||||
if (--evaluationJobCounter == 0) {
|
||||
|
@@ -20,6 +20,7 @@ import nu.marginalia.index.index.CombinedIndexReader;
|
||||
import nu.marginalia.index.index.StatefulIndex;
|
||||
import nu.marginalia.index.model.ResultRankingContext;
|
||||
import nu.marginalia.index.model.SearchTermsUtil;
|
||||
import nu.marginalia.index.query.IndexSearchBudget;
|
||||
import nu.marginalia.index.results.model.PhraseConstraintGroupList;
|
||||
import nu.marginalia.index.results.model.QuerySearchTerms;
|
||||
import nu.marginalia.index.results.model.ids.CombinedDocIdList;
|
||||
@@ -57,9 +58,10 @@ public class IndexResultRankingService {
|
||||
}
|
||||
|
||||
public List<SearchResultItem> rankResults(
|
||||
ResultRankingContext rankingContext,
|
||||
CombinedDocIdList resultIds,
|
||||
boolean exportDebugData)
|
||||
ResultRankingContext rankingContext,
|
||||
IndexSearchBudget budget,
|
||||
CombinedDocIdList resultIds,
|
||||
boolean exportDebugData)
|
||||
{
|
||||
if (resultIds.isEmpty())
|
||||
return List.of();
|
||||
@@ -94,7 +96,7 @@ public class IndexResultRankingService {
|
||||
// Iterate over documents by their index in the combinedDocIds, as we need the index for the
|
||||
// term data arrays as well
|
||||
|
||||
for (int i = 0; i < resultIds.size(); i++) {
|
||||
for (int i = 0; i < resultIds.size() && budget.hasTimeLeft(); i++) {
|
||||
|
||||
// Prepare term-level data for the document
|
||||
for (int ti = 0; ti < flags.length; ti++) {
|
||||
@@ -171,9 +173,10 @@ public class IndexResultRankingService {
|
||||
}
|
||||
|
||||
resultsList.clear();
|
||||
IndexSearchBudget budget = new IndexSearchBudget(10000);
|
||||
resultsList.addAll(this.rankResults(
|
||||
resultRankingContext,
|
||||
new CombinedDocIdList(combinedIdsList),
|
||||
budget, new CombinedDocIdList(combinedIdsList),
|
||||
true)
|
||||
);
|
||||
}
|
||||
|
Reference in New Issue
Block a user