
querqy.rewrite.contrib.NumberUnitRewriterFactory Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of querqy-core Show documentation
Show all versions of querqy-core Show documentation
Querqy library for query rewriting: Querqy Core
package querqy.rewrite.contrib;
import querqy.model.ExpandedQuery;
import querqy.model.Term;
import querqy.rewrite.QueryRewriter;
import querqy.rewrite.RewriterFactory;
import querqy.rewrite.SearchEngineRequestAdapter;
import querqy.rewrite.contrib.numberunit.NumberUnitQueryCreator;
import querqy.rewrite.contrib.numberunit.model.NumberUnitDefinition;
import querqy.rewrite.contrib.numberunit.model.PerUnitNumberUnitDefinition;
import querqy.trie.State;
import querqy.trie.TrieMap;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
public class NumberUnitRewriterFactory extends RewriterFactory {
private final TrieMap> numberUnitMap;
private final NumberUnitQueryCreator numberUnitQueryCreator;
public NumberUnitRewriterFactory(final String id,
final List numberUnitDefinitions,
final NumberUnitQueryCreator numberUnitQueryCreator) {
super(id);
this.numberUnitMap = createNumberUnitMap(numberUnitDefinitions);
this.numberUnitQueryCreator = numberUnitQueryCreator;
}
private TrieMap> createNumberUnitMap(
List numberUnitDefinitions) {
final TrieMap> map = new TrieMap<>();
numberUnitDefinitions.forEach(numberUnitDefinition ->
numberUnitDefinition.unitDefinitions.forEach(unitDefinition -> {
final State> state = map.get(unitDefinition.term)
.getStateForCompleteSequence();
final PerUnitNumberUnitDefinition def = new PerUnitNumberUnitDefinition(numberUnitDefinition,
unitDefinition.multiplier);
if (state.isFinal()) {
state.value.add(def);
} else {
final List newList = new ArrayList<>();
newList.add(def);
map.put(unitDefinition.term, newList);
}
}));
return map;
}
@Override
public QueryRewriter createRewriter(final ExpandedQuery input,
final SearchEngineRequestAdapter searchEngineRequestAdapter) {
return new NumberUnitRewriter(numberUnitMap, numberUnitQueryCreator);
}
@Override
public Set getGenerableTerms() {
return QueryRewriter.EMPTY_GENERABLE_TERMS;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy