1

我尝试以下方法:

Dim q = New SolrQueryByField("tag", keyword) With {.Quoted = False} Or New SolrQueryByField("cat", keyword) With {.Quoted = False} Or New SolrQueryByField("shortname", keyword) With {.Quoted = False}

Dim loc As New Location(latitude, longitude)
Dim qgeo = New SolrQueryByDistance("geo", loc, 10)

searchresults = solr.Query(q And qgeo).Cast(Of BusinessSolr)().ToList

哪个不起作用:

Value of type 'SolrNet.SolrQueryByDistance' cannot be converted to 'SolrNet.AbstractSolrQuery'.

(q 和 qgeo)

任何想法,关于如何将 fieldquery 与 distance 结合起来?如果可能在 VB.NET 中。很多

顺便说一句:我使用 Solr 4,SolrNet 实际版本

4

1 回答 1

1

我试图重新创建您的场景并遇到了同样的问题。在查看 SolrQueryByDistance 的源代码时,我发现它不是从 AbstractSolrQuery 类派生的,这就是导致此错误的原因。

您能否将距离查询用作过滤查询(将主查询的结果限制为仅在给定距离内的那些项目)?如果是这样,您可以使用以下内容:

Dim q = New SolrQueryByField("tag", keyword) With {.Quoted = False} Or New SolrQueryByField("cat", keyword) With {.Quoted = False} Or New SolrQueryByField("shortname", keyword) With {.Quoted = False}

Dim loc As New Location(latitude, longitude)
Dim options = New QueryOptions() With { _
.FilterQueries = New ISolrQuery() {New SolrQueryByDistance("geo", loc, 10)} _
}

searchresults = solr.Query(q, options).Cast(Of BusinessSolr)().ToList 
于 2013-01-07T15:16:41.720 回答