Frage

Ich bin mit Solr auf meinem Windows-Rechner Anlegestelle mit. Ich habe die Spatial Solr Plugin die ich es endlich geschafft, heruntergeladen zu bekommen und läuft. Ich bin auch Solrnet zu Abfrage für Solr von meinem asp.net MVC-Projekt mit.

Nun, das Hinzufügen von Daten in meinen Index scheint zu funktionieren gut und die SpatialTierUpdateProcessorFactory funktionieren auch.

Das Problem ist:

Wie kann ich die räumliche Abfrage zu meinem normalen Abfrage fügen Sie die Solrnet Bibliothek. Ich habe versucht, es mit dem „ExtraParams“ Parameter hinzufügen, aber das ist nicht sehr gut funktionieren.

Hier ist ein Beispiel für mich versuchen, die räumliche Abfrage mit einem Datenbereich Abfrage zu kombinieren. Der Datumsbereich Abfrage funktioniert, ohne die räumliche Abfrage mit ihm verbunden:

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

, welche Ergebnisse in der folgenden Abfrage 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])

Und die Fehlermeldung erhalte ich zurück ist:

Der Remoteserver hat einen Fehler zurückgegeben:. (400) Bad Request

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

Nun, die Sache ist, wenn ich die Solr Web Admin-Seite verwenden, und führen Sie die folgende Abfrage dagegen, alles funktioniert.

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

Was ist der beste / richtige Weg ist, um die räumliche Funktion SolrNet zu nennen. Ist der beste Weg, um irgendwie, dass etwas der Abfrage manuell hinzufügen, um das Query-String und ist so wie?

War es hilfreich?

Lösung

Verwenden Sie die LocalParams Klasse darstellen 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"));

Dies ist als die SolrNet 0.3.0b1.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top