4

我在我的一个 .net 应用程序中实现了 Solr 搜索。一切正常,除了每当我尝试使用 Solr 的搜索功能时,它只返回 10 个结果,而我有超过 100 个文档索引。谁能告诉我如何解决这个问题?

一些证明的例子是:

http://117.55.242.204:8983/solr/select/?q= : &start=0&rows=10

返回 10 行。

http://117.55.242.204:8983/solr/select/?q= &start=20&rows=30

返回 0 行但显示numFound10。

4

3 回答 3

3

您必须在这里注意两个变量:startrows.

在第一种情况下,它只返回 10 个文档,因为rows它是 10。在第二种情况下,它试图返回文档 21 到 30(start是 20 和rows10),但是只有 10 个匹配的文档,所以它返回零。

如果您希望返回所有文档,请设置rows为较高的值,例如 1000 或 10000 或索引中的文档数。如果您不分页,请确保start设置为 0。

于 2012-05-08T05:24:15.653 回答
2

正如@Ansari 在他的回答中所说,您需要将startandrows参数传递给 Solr 查询。为了方便使用 SolrNet 客户端,您需要在应用程序中将这些设置为查询选项。这是SolrNet查询文档的分页部分的示例代码。

 ISolrOperations<Product> solr = ...
 solr.Query("somequery", new QueryOptions{
   Start = 10,
   Rows = 25
 });

所以在这个例子中,我们假设将找到超过 35 个结果,并声明从第 10 个项目开始并返回 25 个项目。因此,这将返回查询中找到的总项目中的第 10-35 项。

于 2012-05-08T12:50:34.537 回答
1

我同意安萨里的回答,但我有一条评论。您不能简单地将行设置为一些非常高的数字,因为分页是使用 solr 的一种自然而直观的方式。

如果这是一个性能敏感的操作,甚至是逻辑操作,那么将有一个简单的方法来返回所有文档。事实上不存在这样的事情,这意味着短迭代分页而不是返回大型数据集是要走的路。

于 2012-12-02T21:28:51.817 回答