Solr查询总是返回前10行

时间:2012-05-08 05:08:46

标签: solr lucene.net solrnet

我在我的一个.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行,但显示numFound 10。

3 个答案:

答案 0 :(得分:3)

您必须注意以下两个变量:startrows

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

如果要返回所有文档,请将rows设置为1000或10000之类的高值或索引中的文档数。如果您不进行分页,请确保start设置为0。

答案 1 :(得分:2)

正如@Ansari在答案中所述,您需要将startrows参数传递给Solr查询。为了使用SolrNet客户端实现此目的,您需要在应用程序中将它们设置为查询选项。以下是SolrNet的Pagination section of the Querying documentation示例代码。

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

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

答案 2 :(得分:1)

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

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