2010-05-07 13 views
5

Używam Solr na moim komputerze z systemem Windows za pomocą pomostu. Pobrałem plik Spatial Solr Plugin, który w końcu udało mi się uruchomić. Używam również Solrnet do odpytywania Solr z mojego projektu mvc asp.net.Jak dodać Spatial Solr do zapytania Solrnet

Teraz dodawanie danych do mojego indeksu wydaje się działać dobrze, a SpatialTierUpdateProcessorFactory również działa.

Problem polega na:

Jak dodać zapytania przestrzennego do mojego normalnego zapytania przy użyciu biblioteki Solrnet. Próbowałem dodać go przy użyciu parametru "ExtraParams", ale to nie działa bardzo dobrze.

Oto przykład, jak próbuję połączyć zapytanie przestrzenne z zapytaniem o zakres danych. Zapytanie zakres dat działa dobrze bez zapytania przestrzennego dołączonym do niego:

new SolrQuery("{!spatial lat=51.5224 long=-2.6257 radius=10000 unit=km calc=arc threadCount=2}") && new SolrQuery(MyCustomQuery.Query) && new SolrQuery(DateRangeQuery); 

co skutkuje następującym zapytaniu przeciwko 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]) 

a komunikat o błędzie wrócę jest:

Serwer zdalny zwrócił błąd: (400) Złe żądanie.

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: 
    "}" ... 

Chodzi o to, że jeśli użyję strony Solr Web Admin i wykonam następujące zapytanie, wszystko działa poprawnie.

{!spatial lat=50.8371 long=4.35536 radius=100 calc=arc unit=km threadcount=2}text:London 

Jaki jest najlepszy/poprawić sposobem wywołania funkcji przestrzennego przy użyciu SolrNet. Czy jest to najlepszy sposób, aby jakoś dodać ten fragment zapytania ręcznie do ciągu zapytania i tak jest?

Odpowiedz

5

Użyj klasę LocalParams do reprezentowania LocalParams in Solr:

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")); 

Jest dostępny od SolrNet 0.3.0b1.

+0

Pozdrawiam! Dokładnie to, czego potrzebowałem. Zrobiłem to działając, ręcznie wykonując ciąg zapytania, ale twoje rozwiązanie jest lepszym/czystszym sposobem. Wielkie dzięki! – Flo

Powiązane problemy