首页 > 解决方案 > 使用 SOLR 和 R 的简单深度分页示例

问题描述

我需要使用 R 和 solr 包执行深度分页。SOLR 7.2.1 服务器,R 3.4.3

我不知道如何从结果数据框中获取 nextCursorMark 。我通常在 Python 中执行此操作,但这让我很困惑。

res <- solr_all(base = myBase, rows = 100, verbose=TRUE,
                sort = "unique_id asc",
                fq="*:*",
                cursorMark="*"
               )

我无法从结果中获得 nextCursorMark。任何帮助,将不胜感激。

我注意到,如果我将 nextCursorMark 添加到 pageDoc,如果 parsetype 设置为 json,它将返回该值,而不是数据框。所以我猜另一部分是 - 如果你返回一个数据框,那个值在哪里?

标签: rsolrpagination

解决方案


所以我终于找到了一种方法来完成这项工作。这不是最优的,最终的解决方案在评论中引用的 github 问题中。但这有效:

dat <-"http://yadda.com"
cM = "*"
done = FALSE
rowCount = 0
a <- data.frame()

while (!done)
{
  Data <- solr_search(base = dat, rows = 100, verbose=FALSE,
                      sort = "unique_id asc",
                      fq="*:*",
                      parsetype="json",
                      cursorMark=cM,
                      pageDoc = "nextCursorMark"
                      )
  if (cM == Data$nextCursorMark) {
    done = TRUE
  } else {
    cM = Data$nextCursorMark
  }
  a <- append(x = a, Data$response$docs)  
  rowCount = rowCount + length(Data$response$docs)
  print(rowCount)
}

推荐阅读