Nodejs Cassandra自动分页无法正常工作

时间:2018-04-13 11:06:20

标签: node.js solr cassandra datastax-enterprise datastax-node-driver

我使用的是Cassandra + Solr,查询是使用" solr_query",最多可以获得10个结果。 这是来自:

的金额
<requestHandler class="solr.SearchHandler" default="true" name="search">
<lst name="defaults">
<int name="rows">10</int>
</lst>
</requestHandler>

我使用eachRow对结果进行分页并且它不起作用,它只获得前10个结果,而且只是结果。

var query = 'SELECT * FROM contacts WHERE solr_query = ?';
var solr_query = '{"q":"some_query"}';
this.client.eachRow(query, [solr_query], { prepare: true, autoPage : true, fetchSize: 100 }, function(index, result) {

}, callbackFunc);

在fetchSize中我输了100并且仍然只获得10个结果,如果我将LIMIT添加到查询中它将起作用但仍然没有分页,它会在第一页之后停止。

- UPDTAE 此外,我尝试使用此功能和相同的结果(10):

this.client.stream(query, [solr_query], { prepare: true }).on('readable', function () {
    var row;

    while (row = this.read()) {
        contacts.push(row);
    }
})
.on('end', function () {
    console.log(contacts.length); // 10
});

3 个答案:

答案 0 :(得分:2)

使用搜索组件时,这些是两个不同的设置 - LIMIT控制Cassandra将返回的条目数,fetchSize指定Cassandra返回的页面有多大。如果您有很多结果,那么您需要相应地调整LIMIT,但对于大数据集,它可能不是非常优化。

答案 1 :(得分:2)

该参数rows是否设置为10绑定查询?以下是文档LINK

的链接

答案 2 :(得分:0)

最好的方法是查询Solr而不是Cassandra,我用过: https://github.com/lbdremy/solr-node-client