Lucene自定义QueryParser没有结果

时间:2014-02-20 21:21:03

标签: java lucene hibernate-search

我已经在Apache Lucene中将QueryParser子类化,将输入字段名称(用户reuqest)更改为我的模型类中的相应字段名称。

public class QueryParserMoney extends QueryParser {

public QueryParserMoney(Version matchVersion, String f, Analyzer a) {
    super(matchVersion, f, a);

}

@Override
protected Query newTermQuery(Term term) {
    if (term.field() == "money") {
        PaddedIntegerBridge pB = new PaddedIntegerBridge();

        TermRangeQuery trq = new TermRangeQuery("moneyTo",
        pB.objectToString(Integer.parseInt(term.text())), "*",
                true, true);

        return trq;

    }
    return super.newTermQuery(term);
} 

输入查询与money:5000类似,我将其更改为moneyTo:[5000 TO *] 生成的查询没问题,我正在用Luke检查查询,但在Java中我有0个结果。

你有什么建议我犯了错误吗?

1 个答案:

答案 0 :(得分:0)

moneyTo是数字字段吗?如果是这样,您应该使用NumericRangeQuery而不是TermRangeQuery。如果moneyTo是字符串字段,则看起来不像TermRangeQuery将“*”识别为开放端点,您应该使用null代替。