1

我正在使用 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
});
4

3 回答 3

2

设置为 10 的参数不是rows限制查询吗?这是文档链接的链接

于 2018-04-13T16:00:07.800 回答
2

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

于 2018-04-13T13:24:32.473 回答
0

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

于 2018-04-14T15:28:54.070 回答