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 爲5 ,start 爲5
附:
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 !