2014-02-20 55 views
0

我已經在Apache Lucene中將QueryParser分類爲將我的模型類中的輸入字段名稱(用戶reuqest)更改爲相應的字段名稱。Lucene自定義QueryParser沒有結果

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 *] 生成的查詢就OK了,我檢查與盧克的查詢,但在Java中我有0的結果。

你有什麼建議,我錯了嗎?

回答

0

moneyTo數字字段?如果是這樣,您應該使用NumericRangeQuery而不是TermRangeQuery。如果moneyTo是一個字符串字段,它看起來不像TermRangeQuery將「*」識別爲開放式端點,您應該使用null來代替。

+0

但爲什麼生成的查詢在Luke中正常工作? 和moneyTo是數字字段 – adaniluk

+0

我今天早上嘗試一下你的建議,如果它能工作,我會給出迴應 – adaniluk

+0

你在Luke中使用QueryParser的子類,而不是內置的/默認的QueryParser嗎? –

相關問題