Neo4j:数值范围为

时间:2015-07-19 19:42:00

标签: neo4j lucene

我有一个名为dates的关系索引,它对2个字段进行索引 - " year-numeric"和"键入"。我打算在年份数字上使用范围查询,因此将其编入索引为数字

 dates.add(role1, "year-numeric", new ValueContext(2000).indexNumeric());

其中role1是2个节点之间的关系。

在我的图表中,我有两种类型的关系,由第二个字段"类型"捕获。

虽然我可以单独查询:

IndexHits<Relationship> hits = dates.query(QueryContext.numericRange("year-numeric", 1990, 2004),null,null);

hits = dates.query("type:occurs");

如果有人能帮助我将这两个条件结合起来,我将不得不承担责任。

我在这里查了一下:queryContext - filtering with numbers neo4j/lucene但我无法理解解决方案。

谢谢!

1 个答案:

答案 0 :(得分:1)

根据评论中的输入,我在lucene中进行了更多挖掘,并提出了以下解决方案。不确定它是否是最佳的:

BooleanQuery booleanQuery = new BooleanQuery();
TermQuery query1 = new TermQuery(new Term("type","occurs"));
NumericRangeQuery<Integer> pageQueryRange = NumericRangeQuery.newIntRange("year-numeric", 1990, 2005, true, true);
booleanQuery.add(query1, BooleanClause.Occur.MUST);
booleanQuery.add(pageQueryRange, BooleanClause.Occur.MUST);   
IndexHits<Relationship> hits = dates.query(booleanQuery);