Limiting results and paging
DSE Search integrates native driver paging with Apache Solr™ cursor-based paging. Pagination, also called cursors, supports using a cursor to scan results. Solr pagination restrictions apply.
Using paging with CQL SELECT
A CQL SELECT
run by DSE Search query uses deep paging when a driver is using paging and either of these conditions are met:
-
No
LIMIT
is provided -
The number of rows to return is greater than the driver’s page size
Deep paging is not used if a LIMIT
is provided and the LIMIT
is less than the driver’s fetch size.
Using paging with CQL Solr queries (solr_query)
When using CQL Solr queries with pagination enabled, your queries might experience a performance slowdown because Solr is not able to use its query result cache when pagination is configured. If you do not want to paginate through large result sets, disable pagination when running CQL Solr queries. For more information, see Use DSE Search with DataStax drivers. |
In dse.yaml
, the cql_solr_query_paging option specifies when to use pagination.
Default to the driver’s pagination settings for CQL Solr queries
When a driver connects to the database and executes a CQL SELECT statement using a search index (solr_query
option), you can specify to use the driver pagination settings by default by changing the cql_solr_query_paging
to driver
.
Persistently enable pagination in CQL Solr queries
To enable pagination persistently with CQL Solr queries, set cql_solr_query_paging: on
in dse.yaml
, and then restart the node.
To dynamically enable paging when cql_solr_query_paging is set to off
in dse.yaml, set the Solr paging parameter to driver ("paging":"driver"
).
For example:
SELECT id FROM wiki.solr
WHERE solr_query= '{"q":"*", "sort":"id asc", "paging":"driver"}' ;
It is not mandatory to use a sort clause. However, if a sort clause is not provided, sorting is undefined.
SearchAnalytics nodes use driver pagination settings
SearchAnalytics nodes always use driver paging settings. See DSE Analytics and Search integration.
Solr query paging examples
For these examples, assume you have a table where the word Journal
is contained in approximately 159 entries in the body or title.
Example of CQL SELECT query
Select all rows that match the id
prefix Journal
:
SELECT * FROM wiki.solr WHERE id LIKE 'Journal%';
Examples of CQL Solr queries (solr_query)
Use count to determine the number of rows that match:
SELECT count(*) FROM wiki.solr WHERE solr_query = 'Journal';
Count returns only a single row. It is not affected by the 10 row limit.
count
-------
159
(1 rows)
Run the same query without count
and cql_solr_query_paging: off
:
SELECT id FROM wiki.solr WHERE solr_query = 'Journal';
Only 10 rows are returned:
id
----------
23759487
23732986
23759527
23759551
23759455
23760810
23731949
23760697
23760871
23738270
(10 rows)
To return all matching IDs, override the cql_solr_query_paging
setting:
SELECT id FROM wiki.solr
WHERE solr_query='{"q":"Journal", "paging":"driver"}';
If cqlsh |