【发布时间】:2012-03-19 18:33:33
【问题描述】:
我在一个 VB.NET 网站中实现了 SolrNet,它运行良好,但有一个例外。我的结果对象可能会告诉我已找到 10 个匹配的“文档”,但该集合仅包含 9 个。
我的集合总是比 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
【问题讨论】:
-
请发布一个失败的测试...没有更多信息我只能说使用示例应用程序作为参考。另外,为什么您的类别查询中有管道?
-
我在 Solr 实例上用来镜像我通过 SolrNet 库发送的内容的查询字符串如下
-
q=product_name:shirt OR product_description:shirt OR id:shirt&start=0&rows=12&facet=on&facet.field=brand&fq=brand:puma&facet.mincount=1&stats=true&stats.field=selling_price 我的有管道类别查询,因为这是我处理属于多个类别的产品的方式,类别字段包含一个产品所属的所有类别的管道分隔列表,然后我可以像这样针对类别字段发出查询“ |8878|"获取属于8878类的所有产品。实际字段内容可以是“|8854|8896|8878|8564|”
-
改用多值字段。我仍然需要通过失败的测试来诊断您的文档计数问题...
-
我真的很抱歉,但我不确定你在寻找失败的测试是什么?您需要我正在使用的实际源代码吗?至于多值字段,我认为这可行,但我已将 Solr 设置为从 SQL Server 建立索引,并且我不得不对我的源数据进行大量处理以使其正确索引。不过我一定会调查的,谢谢!