2013-01-05 17 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 –