mirror of
https://github.com/MarginaliaSearch/MarginaliaSearch.git
synced 2025-02-23 21:18:58 +00:00
Reduce resource usage waste in edge-search by recycling QueryVariants
This commit is contained in:
parent
2f7b429217
commit
e86f52d7d8
@ -23,15 +23,13 @@ import java.util.*;
|
|||||||
@Singleton
|
@Singleton
|
||||||
public class QueryFactory {
|
public class QueryFactory {
|
||||||
|
|
||||||
private final LanguageModels lm;
|
|
||||||
private final TermFrequencyDict dict;
|
|
||||||
private final EnglishDictionary englishDictionary;
|
private final EnglishDictionary englishDictionary;
|
||||||
private final NGramBloomFilter nGramBloomFilter;
|
|
||||||
private final Logger logger = LoggerFactory.getLogger(getClass());
|
private final Logger logger = LoggerFactory.getLogger(getClass());
|
||||||
private final SearchResultValuator searchResultValuator;
|
private final SearchResultValuator searchResultValuator;
|
||||||
private NearQueryProcessor nearQueryProcessor;
|
private final NearQueryProcessor nearQueryProcessor;
|
||||||
|
|
||||||
private static final int RETAIN_QUERY_VARIANT_COUNT = 5;
|
private static final int RETAIN_QUERY_VARIANT_COUNT = 5;
|
||||||
|
private final ThreadLocal<QueryVariants> queryVariants;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
public QueryFactory(LanguageModels lm,
|
public QueryFactory(LanguageModels lm,
|
||||||
@ -40,17 +38,16 @@ public class QueryFactory {
|
|||||||
NGramBloomFilter nGramBloomFilter,
|
NGramBloomFilter nGramBloomFilter,
|
||||||
SearchResultValuator searchResultValuator,
|
SearchResultValuator searchResultValuator,
|
||||||
NearQueryProcessor nearQueryProcessor) {
|
NearQueryProcessor nearQueryProcessor) {
|
||||||
this.lm = lm;
|
|
||||||
this.dict = dict;
|
|
||||||
|
|
||||||
this.englishDictionary = englishDictionary;
|
this.englishDictionary = englishDictionary;
|
||||||
this.nGramBloomFilter = nGramBloomFilter;
|
|
||||||
this.searchResultValuator = searchResultValuator;
|
this.searchResultValuator = searchResultValuator;
|
||||||
this.nearQueryProcessor = nearQueryProcessor;
|
this.nearQueryProcessor = nearQueryProcessor;
|
||||||
|
|
||||||
|
this.queryVariants = ThreadLocal.withInitial(() -> new QueryVariants(lm, dict, nGramBloomFilter, englishDictionary));
|
||||||
}
|
}
|
||||||
|
|
||||||
public QueryParser getParser() {
|
public QueryParser getParser() {
|
||||||
return new QueryParser(englishDictionary, new QueryVariants(lm ,dict, nGramBloomFilter, englishDictionary));
|
return new QueryParser(englishDictionary, queryVariants.get());
|
||||||
}
|
}
|
||||||
|
|
||||||
public EdgeSearchQuery createQuery(EdgeUserSearchParameters params) {
|
public EdgeSearchQuery createQuery(EdgeUserSearchParameters params) {
|
||||||
@ -207,7 +204,6 @@ public class QueryFactory {
|
|||||||
.timeoutMs(250)
|
.timeoutMs(250)
|
||||||
.fetchSize(4096)
|
.fetchSize(4096)
|
||||||
.quality(qualityLimit)
|
.quality(qualityLimit)
|
||||||
.rank(rankLimit)
|
|
||||||
.domains(domains);
|
.domains(domains);
|
||||||
|
|
||||||
if (domain != null) {
|
if (domain != null) {
|
||||||
@ -219,7 +215,6 @@ public class QueryFactory {
|
|||||||
EdgeSearchSpecification specs = specsBuilder.build();
|
EdgeSearchSpecification specs = specsBuilder.build();
|
||||||
|
|
||||||
return new EdgeSearchQuery(specs, searchTermsHuman, domain);
|
return new EdgeSearchQuery(specs, searchTermsHuman, domain);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private String normalizeDomainName(String str) {
|
private String normalizeDomainName(String str) {
|
||||||
|
Loading…
Reference in New Issue
Block a user