Диапазон запросов в Neo4j с использованием синтаксиса запросов Lucene - PullRequest
4 голосов
/ 29 января 2012

Я использую 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

Ответы [ 2 ]

1 голос
/ 31 января 2012

для того, чтобы числовые диапазоны работали, вы должны проиндексировать свои данные с помощью пользовательских анализаторов и т. Д., Поскольку lucene не предвидел этот сценарий использования, см. http://wiki.apache.org/lucene-java/SearchNumericalFields и связанные с этим проблемы. Я думаю, что вы можете сделать это лучше в Lucene 3.5, который является частью Neo4j 1.6.GA, но вам придется использовать некоторые хитрости здесь:)

0 голосов
/ 10 ноября 2015

Индекс простой схемы в Neo4j 2.3 теперь поддерживает запросы диапазона

http://neo4j.com/release-notes/neo4j-2-3-0/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...