[英]How to add Spatial Solr to a Solrnet query
我正在使用碼頭在Windows機器上運行Solr。 我已經下載了Spatial Solr插件 ,終於設法啟動並運行了它。 我還使用Solrnet從我的asp.net mvc項目中查詢Solr。
現在,將數據添加到索引中似乎可以正常工作,並且SpatialTierUpdateProcessorFactory也可以正常工作。
問題是:
如何使用Solrnet庫將空間查詢添加到常規查詢中。 我嘗試使用“ ExtraParams”參數添加它,但是效果不是很好。
這是我嘗試將空間查詢與數據范圍查詢結合使用的示例。 沒有附加空間查詢的日期范圍查詢可以正常工作:
new SolrQuery("{!spatial lat=51.5224 long=-2.6257 radius=10000 unit=km calc=arc threadCount=2}") && new SolrQuery(MyCustomQuery.Query) && new SolrQuery(DateRangeQuery);
這將導致針對Solr的以下查詢:
(({!spatial lat=51.5224 long=-2.6257 radius=100 unit=km calc=arc threadCount=2} AND *:*) AND _date:[2010-05-07T13:13:37Z TO 2011-05-07T13:13:37Z])
我得到的錯誤消息是:
遠程服務器返回錯誤:(400)錯誤的請求。
SEVERE: org.apache.solr.common.SolrException: org.apache.lucene.queryParser.Pars
eException: Cannot parse '(({!spatial lat=51.5224 lng=-2.6257 radius=10000 unit=
km calc=arc threadCount=2} AND *:*) AND _date:[2010-05-07T13:09:49Z TO 2011-05-0
7T13:09:49Z])': Encountered " <RANGEEX_GOOP> "lng=-2.6257 "" at line 1, column 2
4.
Was expecting:
"}" ...
現在,如果我使用Solr Web Admin頁面並對其執行以下查詢,那么一切正常。
{!spatial lat=50.8371 long=4.35536 radius=100 calc=arc unit=km threadcount=2}text:London
使用SolrNet調用空間函數的最佳/正確方法是什么? 是以某種方式手動將查詢的那一部分手動添加到查詢字符串中的最佳方法,怎么回事?
使用LocalParams
類在Solr中表示LocalParams :
solr.Query(new LocalParams {
{"type", "spatial"},
{"lat", "-51.5224"},
{"long", "-2.6257"},
{"radius", "10000"},
{"unit", "km"},
{"calc", "arc"},
{"threadCount", "2"},
} + Query.Field("text").Is("London"));
從SolrNet 0.3.0b1開始可用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.