我在我的一个.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。
答案 0 :(得分:3)
您必须注意以下两个变量:start
和rows
。
在第一种情况下,它只返回10个文档,因为rows
是10。
在第二种情况下,它试图返回文档21到30(start
是20而rows
是10)但是只有10个匹配的文档,所以它返回零。
如果要返回所有文档,请将rows
设置为1000或10000之类的高值或索引中的文档数。如果您不进行分页,请确保start
设置为0。
答案 1 :(得分:2)
正如@Ansari在答案中所述,您需要将start
和rows
参数传递给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的自然而直观的方式。
如果这是一个性能敏感的操作甚至是逻辑操作,那么将有一种简单的方法来返回所有文档。事实上,不存在这样的事情,这意味着短迭代分页而不是返回大数据集是可行的。