Есть ли способ поиска ручного индекса в Neo4j с использованием оператора числового сравнения (>=, ‹=, ‹, >, ...)? Глядя на примеры индекса Gremlin, все они, как правило, представляют поиск с определенным значением свойства.
Скажем, у меня есть около 10 миллионов отношений двух типов, каждый из которых имеет числовое значение в свойстве, называемом «свойство», в первом двойном, во втором int.
gremlin> g.e(123).getProperty('property')
==> 1.57479276459179
Теперь, если бы я знал точное значение свойства, которое представляет собой логарифмическое значение pvalue типа double, я мог бы легко найти узел с помощью
gremlin> g.idx('index_e_ASSOC').get('property', 1.57479276459179)
==> e[2421730][31493-ASSOCIATION->53378]
==> e[4885094][53378-ASSOCIATION->31493]
==> e[866409][37891-ASSOCIATION->6292]
==> e[123][6292-ASSOCIATION->37891]
Вместо этого я хочу выполнить поиск диапазона для «свойства», например, найти все ребра, в которых «свойство» >= 0 && «свойство» ‹= 1,6. Это что-то, что можно было бы сделать с Гремлином? Глядя на группу обсуждения пользователей Gremlin, я понял, что даже поиск по подстановочным знакам из полнотекстового индекса Lucene немного хакерский, и API Neo4j не помогает.
Изменить: нашел еще один подобный вопрос в Stackoverflow (под названием «Запросы диапазона в Neo4j с использованием синтаксиса запросов Lucene»; новые пользователи могут публиковать максимум две гиперссылки), которые ведут к документации Neo4j. Я воссоздал индекс, используя ValueContext для числовых значений. Следуя примеру, найденному в дискуссионной группе neo4j (название: объединить запрос numericRange с запросом отношения), я могу выполнить запрос, например
start a=node(123)
match a-[rel]-(b)
where type(rel) = "ASSOCIATION" AND rel.`property` > 1.0 AND rel.`property` < 2.0
RETURN b
LIMIT 20;
который использует поиск по диапазону. Какой синтаксис у Гремлина? Это должно быть что-то вроде
g.idx('index_e_ASSOC')[[property: Neo4jTokens.QUERY_HEADER + "[1.0 TO 2.0]"]].count()
Это синтаксически правильно, но count дает 0 результатов, даже если в этом диапазоне есть ребра со свойством.