CavalliumDBEngine/src/main/java/it/cavallium/dbengine/lucene/mlt/MoreLikeThisTransformer.java

44 lines
1.5 KiB
Java
Raw Normal View History

2022-01-28 19:31:25 +01:00
package it.cavallium.dbengine.lucene.mlt;
import com.google.common.collect.Multimap;
2022-01-28 21:12:10 +01:00
import it.cavallium.dbengine.database.disk.LLIndexSearchers;
2022-01-28 19:31:25 +01:00
import it.cavallium.dbengine.lucene.LuceneUtils;
2022-01-28 21:12:10 +01:00
import it.cavallium.dbengine.lucene.searcher.GlobalQueryRewrite;
2022-01-28 19:31:25 +01:00
import it.cavallium.dbengine.lucene.searcher.LocalQueryParams;
import java.io.IOException;
import org.apache.lucene.analysis.miscellaneous.PerFieldAnalyzerWrapper;
import org.apache.lucene.search.similarities.Similarity;
2022-01-28 21:12:10 +01:00
public class MoreLikeThisTransformer implements GlobalQueryRewrite {
2022-01-28 19:31:25 +01:00
private final Multimap<String, String> mltDocumentFields;
private final PerFieldAnalyzerWrapper luceneAnalyzer;
private final Similarity luceneSimilarity;
public MoreLikeThisTransformer(Multimap<String, String> mltDocumentFields,
PerFieldAnalyzerWrapper luceneAnalyzer,
Similarity luceneSimilarity) {
this.mltDocumentFields = mltDocumentFields;
this.luceneAnalyzer = luceneAnalyzer;
this.luceneSimilarity = luceneSimilarity;
}
@Override
2022-01-28 21:12:10 +01:00
public LocalQueryParams rewrite(LLIndexSearchers indexSearchers, LocalQueryParams queryParams) throws IOException {
var rewrittenQuery = LuceneUtils.getMoreLikeThisQuery(indexSearchers,
queryParams,
luceneAnalyzer,
luceneSimilarity,
mltDocumentFields
);
return new LocalQueryParams(rewrittenQuery,
queryParams.offsetLong(),
queryParams.limitLong(),
queryParams.pageLimits(),
queryParams.sort(),
queryParams.computePreciseHitsCount(),
queryParams.timeout()
);
2022-01-28 19:31:25 +01:00
}
}