2012-03-19 100 views
1

我已经在VB.NET网站中实现了SolrNet,它的工作原理完美,只有一个例外。我的结果对象可能会告诉我找到了10个匹配的“文档”,但该集合仅包含9.在VB.NET中使用SolrNet时,查询结果与NumFound不匹配

我的集合始终包含比NumFound属性状态少1的值。我已经直接通过我的Solr实例运行查询,并且我知道NumFound属性反映了正确的值。查看了退回的文档后,我可以看到每个结果集中的第一个文档从我的集合中缺失,即位置0处的文档。

这似乎是连接到零索引集合的问题。

我看不出我做错了什么,并怀疑这是一个错误。有没有其他人经历过这个问题,或者你能否建议我可能出错的地方?

源代码如下

Private Prods As New SolrQueryResults(Of BLL.solrProduct) 

Dim solr As ISolrOperations(Of BLL.solrProduct) = ServiceLocator.Current.GetInstance(Of ISolrOperations(Of BLL.solrProduct))() 

Dim SolrQueryOptions As New SolrNet.Commands.Parameters.QueryOptions() With {.Stats = New StatsParameters(), .Start = PagingCurrent, .Rows = PagingSize, .Facet = New FacetParameters() With { _ 
.MinCount = 1, .Queries = New SolrNet.ISolrFacetQuery() {New SolrFacetFieldQuery("brand")}}} 

SolrQueryOptions.Stats.AddField("selling_price") 

SolrQueryOptions.FilterQueries.Add(New SolrQueryByField("brand", "puma")) 

Prods = solr.Query("shirt", SolrQueryOptions) 

PagingTotal = Prods.NumFound 'This returns 10 
lv_prods.DataSource = Prods 
lv_prods.DataBind()    'This renders 9 items 
+0

请张贴一个失败的测试......没有任何详细信息,所有我能说的是使用示例应用程序作为参考。另外,为什么你的分类查询中有管道? – 2012-03-20 02:19:07

+0

我在Solr实例上使用的查询字符串反映了我通过SolrNet库发送的内容如下 – user1279273 2012-03-20 10:12:27

+0

q = product_name:shirt OR product_description:shirt OR id:shirt&start = 0&rows = 12&facet = on&facet.field =品牌&fq =品牌:puma&facet.mincount = 1&stats = true&stats.field =卖价 我的分类查询中有管道,因为这是我处理属于多个类别的产品的方式,类别字段包含管道分离列表的产品所属的所有类别,然后我可以针对类别字段发出查询,如“| 8878 |”获得属于8878类的所有产品。实际领域内容可以是“| 8854 | 8896 | 8878 | 8564 |” – user1279273 2012-03-20 10:20:08

回答

4

Solr的分页是从零开始的,即第一项对应于启动= 0