2013-01-05 18 views
1

我尝试以下方法:SolrNet结合SolrQueryByDistance和SolrQueryByField

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与距离的结合? 如果可能的话在VB.NET中。韩国社交协会很多

BTW:我使用的Solr 4,SolrNet实际版本

回答

1

我试图重新您的方案,并经历了同样的问题。在查看SolrQueryByDistance的源代码时,我发现它不是从AbstractSolrQuery类派生的,这是导致此错误的原因。

您可以使用距离查询作为Filter Query(限制主查询的结果仅限于给定距离内的项目)吗?如果是这样,你可以使用以下内容:

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 
+0

工作正常。很多tks –