我正在尝试使用数值范围过滤neo / lucene中的通配符查询。 我想搜索具有以“rob”开头的关键“actor”的所有节点(文档)和age> 20:
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);
一旦我添加数字范围,wildCard查询就不起作用,它只按数值范围排序。 是否可以将通配符和数字结合起来?
谢谢, 丹尼尔
答案 0 :(得分:1)
我怀疑你想使用BooleanQuery将WildcardQuery与数值范围查询相结合。 (我通常使用QueryParser,而不是手工构建查询。)
对于您的示例查询,QueryParser语法如下所示:
+actor:rob* +age:{20 TO 123}
其中 +年龄:{20 TO 123} 要求年龄&gt; 20岁和年龄< 123(最老的有记录的人活到122)。 “+”操作符强制这两个术语出现在文档中。