我正在使用Lucene索引Neo4j数据库中的节点,而我正在使用Lucene查询字符串来执行查询。当我执行两端的排他性或包含性的范围查询时,一切都按预期运行:
Index.query("value:[1 TO 10]"); // Inclusive range query
Index.query("value:{1 TO 10}"); // Exclusive range query
但是,如果我将范围查询的一端指定为独占而另一端指定为包含,则似乎不起作用,例如:
Index.query("value:[1 TO 10}");
我了解可以使用QueryContext.numericRange()
方法执行此查询,例如:
Index.query(QueryContext.numericRange("value", 1, 10, true, false));
为什么使用Lucene查询语法不能这样做?我是否误解了语法或者在代码方面做错了什么?
参考文献:
http://docs.neo4j.org/chunked/stable/indexing-lucene-extras.html
http://lucene.apache.org/java/3_5_0/queryparsersyntax.html
答案 0 :(得分:1)
为了使数值范围起作用,您必须使用自定义解析器等索引数据,因为lucene没有预料到此用例,请参阅http://wiki.apache.org/lucene-java/SearchNumericalFields以及相关问题。我认为你可以在Lucene 3.5中做得更好,这是Neo4j 1.6.GA的一部分,但你必须在这里拉一些技巧:)
答案 1 :(得分:0)
Neo4j 2.3中的普通模式索引现在支持范围查询