package doser.lucene.features; import java.util.Locale; import org.apache.lucene.index.Term; import org.apache.lucene.search.Query; import org.apache.lucene.search.BooleanClause.Occur; import org.apache.lucene.search.similarities.Similarity; import doser.lucene.query.LTRBooleanQuery; import doser.lucene.query.LearnToRankFuzzyQuery; import doser.lucene.query.LearnToRankTermQuery; import doser.lucene.query.PriorQuery; import doser.lucene.query.SensePriorQuery; public class LuceneFeatures { public static Query queryLabelTerm(String keyword, String field, Similarity sim) { final LearnToRankTermQuery q = new LearnToRankTermQuery(new Term(field, keyword.toLowerCase(Locale.US)), sim); return q; } public static Query queryLabelFuzzy(String keyword, String field, Similarity sim) { final LearnToRankFuzzyQuery q = new LearnToRankFuzzyQuery(new Term( field, keyword.toLowerCase(Locale.US)), sim); return q; } public static Query queryStringTerm(String str, String field, Similarity sim, Occur occ, int maxclause) { final String[] split = str.split(" "); final LTRBooleanQuery bquery = new LTRBooleanQuery(); for (final String element : split) { final LearnToRankTermQuery tquery = new LearnToRankTermQuery( new Term(field, element.toLowerCase(Locale.US)), sim); bquery.add(tquery, occ); } return bquery; } public static Query queryStringFuzzy(String str, String field, Similarity sim, Occur occ, int maxclause) { final String[] split = str.split(" "); final LTRBooleanQuery bquery = new LTRBooleanQuery(); for (final String element : split) { final LearnToRankFuzzyQuery tquery = new LearnToRankFuzzyQuery( new Term(field, element.toLowerCase(Locale.US)), sim); bquery.add(tquery, occ); } return bquery; } public static Query queryPrior(IEntityCentricExtFeatures kb) { return new PriorQuery(kb); } public static Query querySensePrior(String str, IEntityCentricExtFeatures kb) { return new SensePriorQuery(str, kb); } }