queryContext - 使用数字neo4j / lucene进行过滤

时间:2012-08-28 08:38:38

标签: filter lucene neo4j

我正在尝试使用数值范围过滤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查询就不起作用,它只按数值范围排序。 是否可以将通配符和数字结合起来?

谢谢, 丹尼尔

1 个答案:

答案 0 :(得分:1)

我怀疑你想使用BooleanQuery将WildcardQuery与数值范围查询相结合。 (我通常使用QueryParser,而不是手工构建查询。)

对于您的示例查询,QueryParser语法如下所示:

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

其中 +年龄:{20 TO 123} 要求年龄&gt; 20岁和年龄< 123(最老的有记录的人活到122)。 “+”操作符强制这两个术语出现在文档中。