【问题标题】:datastax 4.7 The 'start' parameter is not allowed in c# driver with autopaging offdatastax 4.7 在关闭自动分页的 c# 驱动程序中不允许使用“start”参数
【发布时间】:2015-08-24 20:14:57
【问题描述】:

我使用的是datastax 4.7,cassandra c# driver 2.5

我需要进行分页查询。

在cqlsh中,当我运行时

paging off;
then:
select * from tbl where solr_query='{"q":"*:*","start":0,"sort":"id asc"}' ;

查询已成功执行。

但是当使用 c# 驱动程序在代码中运行相同的查询时。引发以下异常:

You have driver paging active which also activates Solr deep pagination. The 'start' parameter is not allowed. Please either deactivate paging or read about Solr deep paging restrictions and fix accordingly

我用来运行查询的代码:

        ILoadBalancingPolicy ploicy = new DCAwareRoundRobinPolicy(_dc);
            RowSet ret = null;
            Statement st = new SimpleStatement(cql);
            try
            {
                ret = _currentSession.Execute(st.SetAutoPage(false).SetPageSize(pageSize));
            }
            catch
            {
            }

【问题讨论】:

  • 我发现了问题:
  • st.SetAutoPage(false) 禁用分页,所以我不能在 solr_query 中包含 start 参数,因为我们在搜索光标模式下不搜索分页。
  • 在 solr 中,有两种类型的搜索: 1- 搜索分页,这种类型会导致性能和服务器负载问题“深度分页问题”。在这种类型的搜索中,您要求 solr 返回从特定索引开始并具有特定页面大小的结果集。 Solr 将所有结果文档从索引为 0 的文档扫描到您提供的起始索引中的文档。所以,如果你提供一个大的起始索引,内存可能会崩溃。
  • 2- 搜索光标,在这种类型中,您应该在 solr 中提供“cursorMark”或在 Datastax 和页面大小中提供“pageState”。 Solr 从第一页开始按顺序逐页返回页面。在每个页面请求中,Solr 为下一页提供光标标记或页面状态。您应该在您处理的页面请求中提供光标标记。
  • * st.SetAutoPage(false) 禁用分页搜索并启用光标搜索。因此,您不能在 solr_query 中提供“start”参数。

标签: paging datastax cqlsh


【解决方案1】:

在 solr 中,有两种类型的搜索: 1- 搜索分页,这种类型会导致性能和服务器负载问题“深度分页问题”。在这种类型的搜索中,您要求 solr 返回从特定索引开始并具有特定页面大小的结果集。 Solr 将所有结果文档从索引为 0 的文档扫描到您提供的起始索引中的文档。所以,如果你提供一个大的起始索引,内存可能会崩溃。

2- 搜索光标,在这种类型中,您应该在 solr 中提供“cursorMark”或在 Datastax 和页面大小中提供“pageState”。 Solr 从第一页开始按顺序逐页返回页面。在每个页面请求中,Solr 为下一页提供光标标记或页面状态。您应该在您处理的页面请求中提供光标标记。

  • st.SetAutoPage(false) 禁用分页搜索并启用光标搜索。因此,您不能在 solr_query 中提供“start”参数。

【讨论】:

    猜你喜欢
    • 2016-11-29
    • 2019-12-27
    • 1970-01-01
    • 2014-03-27
    • 2015-04-01
    • 2013-09-06
    • 2023-03-21
    • 2017-01-31
    • 1970-01-01
    相关资源
    最近更新 更多