Apache Cassandra (四):使用php-cassandra進行分頁查詢,

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();

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"
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

附:
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 !

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章