0

我正在尝试使用数字范围过滤 neo/lucene 中的通配符查询。我想搜索具有以“rob”开头且年龄> 20的关键“actor”的所有节点(文档):

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);

一旦我添加了数字范围,通配符查询就不起作用了,它只能按数字范围排序。是否可以同时结合通配符和数字?

谢谢,丹尼尔

4

1 回答 1

1

我怀疑您想使用 BooleanQuery 将 WildcardQuery 与数字范围查询结合起来。(我通常自己使用 QueryParser,而不是手动构建查询。)

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

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

其中+age:{20 TO 123}要求 age > 20 AND age < 123(有据可查的最年长的人活到 122 岁)。“+”运算符强制这两个术语出现在文档中。

于 2012-08-28T22:31:11.647 回答