SolrNet结合SolrQueryByDistance和SolrQueryField

SolrNet结合SolrQueryByDistance和SolrQueryField,solr,solrnet,Solr,Solrnet,我尝试以下方法: 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, longit

我尝试以下方法:

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
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 
在以下情况下不起作用:

Value of type 'SolrNet.SolrQueryByDistance' cannot be converted to 'SolrNet.AbstractSolrQuery'.
(q和qgeo)

你知道如何将fieldquery与距离相结合吗? 如果可能,在VB.NET中。很多


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

我试图重新创建您的场景,但遇到了相同的问题。在查看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 qgeo = New SolrQueryByDistance("geo", loc, 10)

searchresults = solr.Query(q And qgeo).Cast(Of BusinessSolr)().ToList
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 

我试图重现你的情景,但也遇到了同样的问题。在查看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 qgeo = New SolrQueryByDistance("geo", loc, 10)

searchresults = solr.Query(q And qgeo).Cast(Of BusinessSolr)().ToList
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