2016-10-03 2 views
0

Ich verwende Solr 5.4 (auf Ubuntu Server) und Indizierung von MySQL. Es funktioniert hervorragend zum Suchen und Facettieren, aber jetzt möchte ich Geodatenfilterung implementieren. In der Admin-UI Ich betreibe,Solr geofilt gibt alle Ergebnisse zurück

http://mysite:8983/solr/core/select?q=*%3A*&wt=json&indent=true&defType=edismax&spatial=true&pt=44.8859987%2C-93.0833396&sfield=org_loc&d=50 

Schema:

<field name="org_loc" type="location" indexed="true" stored="true"/> 
<fieldType name="location" class="solr.LatLonType" subFieldSuffix="_coordinate"/> 

Antwort:

{ 
    "responseHeader":{ 
    "status":0, 
    "QTime":13, 
    "params":{ 
     "lowercaseOperators":"true", 
     "d":"50", 
     "spatial":"true", 
     "indent":"true", 
     "q":"*:*", 
     "sfield":"org_loc", 
     "pt":"44.8859987,-93.0833396", 
     "stopwords":"true", 
     "wt":"json", 
     "defType":"edismax"}}, 
    "response":{"numFound":21,"start":0,"docs":[ 
     "org_name": "..." 
     "org_loc":"44.8259987,-93.0813396", 
     ...etc. 

Das Problem ist, dass es 21 von 21 Datensätze jedes Mal zurückkehrt, unabhängig davon, d.

+0

können Sie mit diesen Kriterien nur 21 Datensätze sein? hast du mit anderen eingaben überprüft? –

+0

Die Datenbank enthält 21 Datensätze mit gefälschten Daten für den Test. Es gibt alle 21 Datensätze unabhängig von pt oder d zurück. – SM0827

+0

d ist die radiale Entfernung, in der Regel in Kilometern, bitte erhöhen Sie diesen Wert auf 100 und testen Sie einmal –

Antwort

1

geofilt muss explizit mit dem fq Parameter erforderlich sein, ist dieser Teil der Abfrage fehlt:

&fq={!geofilt} 
+0

Das funktioniert! Ich habe schon oft geofilt versucht, sogar diese Zeile direkt aus dem Handbuch einzufügen: & q = *: * & fq = {! Geofilt sfield = org_loc} & pt = 44.8859987, -93.0833396 & d = 50, aber es funktioniert nicht. Seltsamerweise funktioniert es, wenn ich {! Geofilt} in den fq-Parameter der Admin-UI eingebe, der folgendes erzeugt: & fq = {! Geofilt} & spatial = true & pt = 44.8659987% 2C-93.0823396 & sfield = org_loc & d = 500 (plus andere relevante Parameter). Danke, dass Sie mich in die richtige Richtung weisen! – SM0827

Verwandte Themen