conn->prepare($cql); $response = $this->con_cassandra php语法">
当前位置:   article > 正文

Apache Cassandra (四):使用php-cassandra进行分页查询,_cassandra php语法

cassandra php语法

1、使用 prepare 函数,设置 page_size=5 成功查询5条记录 ,

    $cql ="select * from revall_books where solr_query = 'companyid:2 && status:0 '";
    $preparedData = $this->conn->prepare($cql);
    $response = $this->conn->executeSync(
    $preparedData['id'], [], Cassandra\Request\Request::CONSISTENCY_QUORUM, [
            'page_size' => 5,
            'names_for_values' => true,
            'skip_metadata' => true,
          ]
    ); 
    $response->setMetadata($preparedData['result_metadata']);
    $rows = $response->fetchAll();
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

2、将sql 改为 $cql =”select * from revall_books where solr_query = ‘companyid:2 && status:0 ‘”;
报错误:

Invalid: Unsupported consistency level: QUORUM. Supported consistency levels for search are: ONE, LOCAL_ONE

3 、php-cassandra 中 Cassandra\Request\Request::CONSISTENCY_QUORUM 类型不支持solr 查询,将此参数设置为null,然后使用下面的分页方式。

4、cassandra 分页效果可以使用下面两种方式

  • 使用limit 获取前N条记录,记录前一次查询的最后一条数据,在下一次查询时,用where条件控制。
  • 使用solr json字符串实现分页功能,但使用这种方式数据多了效率会变低,尽量使用where条件控制查询数据。
$cql ="select * from revall_books where solr_query = 'companyid:2 && status:0 ' limit 10 order by date"
  • 1
select * from revall_books where solr_query = '{"q" : "companyid:2 && status:0", "start" : 11}' limit 10 ;

solor_query内容为标准json字符串,
    q: 要查询的条件,
start:结果偏移量,从0开始 ,配合limit 使用,如:每页查询5条记录,查询第二页数据时 limit 为5start5
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

附:
Php-Cassandra 分页参考 : https://github.com/duoshuo/php-cassandra#using-preparation-and-data-binding
DataStax PHP Driver 分页参考:https://datastax.github.io/php-driver/features/result_paging/
分页参考:https://cwiki.apache.org/confluence/display/solr/Pagination+of+Results

最后一个链接虽然没看懂,但还是要谢谢一直帮我,寻找解决方式的 Nandan Priyadarshi !

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/126203
推荐阅读
相关标签
  

闽ICP备14008679号