【问题标题】:PHP-CASSANDRA-LUCENE Paging with sortingPHP-CASSANDRA-LUCENE 分页与排序
【发布时间】:2017-07-09 13:30:01
【问题描述】:

我正在尝试在使用 lucene 索引进行搜索和排序的 cassandra 中通过分页获取已排序的记录

注意:用户表共有 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 行

这是否表明cassandra分页和lucene排序不能一起使用?如果是,那么任何替代方法可以使用 cassandra 分页对 lucen 索引进行排序?回答时请考虑基于时间轴的排序和分页不能在这里应用,因为我在排序时必须考虑太多的列。

【问题讨论】:

    标签: php cassandra lucene cassandra-lucene-index bigdata


    【解决方案1】:

    分页和排序应该一起工作。您使用的是哪个版本的 Apache Cassandra 和 Lucene 索引插件?

    能否提供表和索引创建语句以及每个查询返回的行? user_idmac_address 的值足以重现该问题。

    【讨论】:

    • 我正在使用 cassandra 版本 3.7 和 lucene 3.9.3 ,表和列名称是虚拟的,我使用的不准确,但场景相同,您可以在任何具有 lucene 索引的 cassandra 上检查它 使用 cassandra 分页并以相反的顺序使用任何 lucene 索引进行排序,即降序我还编辑了我的问题 mac_address is user_id
    • 正如您在文档中看到的那样,cassandra-lucene-index A.B.C.X 旨在与 Apache Cassandra A.B.C 一起使用,因此 Apache Cassandra 3.7 与 3.9.3 不兼容。此外,在 3.9.5 和 3.7.5 中修复了一个与分页相关的重要错误。
    猜你喜欢
    • 1970-01-01
    • 2021-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-06
    • 2015-10-08
    • 2011-01-01
    • 2018-05-26
    相关资源
    最近更新 更多