Пагинация в Гремлин - PullRequest
       30

Пагинация в Гремлин

0 голосов
/ 10 октября 2018

Я пытаюсь сделать нумерацию страниц в Гремлин.Я следовал решению, предоставленному в рецептах гремлина. Так что сейчас я использую шаг range() для усечения результатов.Это хорошо работает, потому что когда пользователи запрашивают x результатов, id запрашивает только x из них и не выполняет полный поиск, что значительно быстрее.

Однако в документах Gremlin говорится, что:

Результат обхода никогда не упорядочивается, если только явно с помощью order () - step.Таким образом, никогда не полагайтесь на порядок итераций между выпусками TinkerPop3 и даже внутри выпуска (поскольку оптимизация обхода может изменить поток).

И порядок действительно важен для разбиения на страницы (мы не хотим, чтобы пользовательимеют одинаковые результаты на разных страницах).

Добавление order() действительно замедлит выполнение запросов, поскольку ему придется запрашивать все вершины, относящиеся к поиску, а затем обрезать его с помощью range().

Любые идеи, как это может бытьрешено иметь согласованность между запросами и все же иметь меньшее время запроса для неполного поиска?

1 Ответ

0 голосов
/ 11 октября 2018

Документация верна, но может использовать некоторый дополнительный контекст.Без order() вам не гарантирован конкретный порядок, если только базовая графовая база данных не гарантирует этот порядок.TinkerPop должен сохранить эту гарантию, если она существует.Таким образом, в конечном итоге вам нужно подумать о том, что будет делать базовый граф.

Поскольку вы используете JanusGraph, я почти уверен, что он не гарантирует порядок итерации результата, но есть предостережения, зависящие от типа индексации, который вы делаете.Вы можете прочитать больше об этом здесь , но, возможно, захотите задать конкретные вопросы в списке пользователей JanusGraph .

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