2012-08-28 30 views
0

我正在嘗試使用數字範圍過濾neo/lucene中的通配符查詢。 我想搜索具有關鍵的「演員」的所有節點(文檔)開始「搶」和年齡> 20:queryContext - 使用數字過濾neo4j/lucene

WildcardQuery luceneQuery = new WildcardQuery(new Term("actor", "rob*")); 
QueryContext qx = new QueryContext(luceneQuery) 
      .numericRange("age", 20, null) 
       .sortNumeric("age", true);  
IndexHits<Node> hits = lucene.query(qx); 

一旦我添加數值範圍通配符查詢不工作,僅由數字訂單範圍。 是否可以結合通配符和數字?

感謝, 丹尼爾

回答

1

我懷疑你想使用BooleanQuery到WildcardQuery用數字範圍查詢相結合。 (我通常使用的QueryParser,我自己,而不是手工打造查詢)

爲了您的示例查詢中,QueryParser的語法看起來像:

+actor:rob* +age:{20 TO 123} 

其中+年齡:{20〜123}要求年齡> 20和年齡< 123(最古老的記錄良好的人活到122歲)。 「+」運算符強制這兩個條款出現在文檔中。

+0

謝謝,這是解決方案! 我很好奇你將如何使用QueryParser來完成這個任務?下次可能會爲我節省很多時間! – Daniele