Я пытаюсь получить отсортированные записи с подкачкой в Кассандре, которая использует индексы Lucene для поиска и сортировки
Примечание: в пользовательской таблице всего 26 строк
Случай 1: сортировка по возрастанию с подкачкой
cqlsh > paging 10;
cqlsh > SELECT user_id FROM user WHERE category_id = 'e4da3b7f-bbce-2345-d777-2b0674a318d5' AND expr(user_index, '{filter:[{type:"match", field:"is_primary", value:true}], sort:[{field: "user_id",reverse:false}]}');
Это даст всем 26 строкам в порядке возрастания user_id первые 10 строк, вторые 10 строк, затем последние 6 строк, что нормально, но проблема в случае 2
Случай 2: сортировка по убыванию с подкачкой
cqlsh > paging 10;
cqlsh > SELECT user_id FROM user WHERE category_id = 'e4da3b7f-bbce-2345-d777-2b0674a318d5' AND expr(user_index, '{filter:[{type:"match", field:"is_primary", value:true}], sort:[{field: "user_id",reverse:true}]}');
Это даст только 19 строк в порядке убывания user_id, сначала 10 строк, затем 9 строк, одинаковых с первой страницы.
Означает ли это, что сортировка кассандры и сортировка люцена не могут использоваться вместе? Если да, то какая альтернатива использовать сортировку по lucen индексам с подкачкой кассандры? При ответе, пожалуйста, учтите, что сортировка на основе временной шкалы и разбиение на страницы здесь не применимы, потому что при сортировке приходится учитывать слишком много столбцов.
Пейджинг и сортировка должны работать вместе. Какую версию Apache Cassandra и плагин индекса Lucene вы используете?
Не могли бы вы предоставить операторы создания таблиц и индексов и строки, возвращаемые каждым запросом? Значения user_id
а также mac_address
было бы достаточно, чтобы воспроизвести проблему.
Других решений пока нет …