据我所知,Solr 提供了这种功能,但 Lucene 本身没有。
您可以按照您的指示转换查询字符串,也可以创建自定义查询解析器。
闲逛,我看到的实现是,如果你使用标准QueryParser
作为基础,覆盖:
getFieldQuery
getFuzzyQuery
getPrefixQuery
getRangeQuery
getRegexpQuery
getWildcardQuery
就像是:
public class CustomQueryParser extends QueryParser {
protected Query getFieldQuery(String field, String queryText, int slop) {
return super.getFieldQuery(replaceAlias(field), queryText, slop);
}
protected Query getFuzzyQuery(String field, String termStr, float minSimilarity) throws ParseException {
return super.getFuzzyQuery(replaceAlias(field), termStr, minSimilarity);
}
//etc.
private String replaceAlias(String field) {
//transform as appropriate...
}
}