Ich versuche Searchkick auf einer kleinen Rails App Geospatial-Suche durchführen, aber ich kann es nicht zum Laufen zu bringen.Searchkick Schienen Geospatial Suche funktioniert nicht
Ich habe ein Venue Modell:
class Venue < ActiveRecord::Base
has_and_belongs_to_many :categories
searchkick locations: ["location"]
def search_data
attributes.merge location: [latitude, longitude]
attributes.merge categories_title: categories.map(&:name)
end
end
Ich habe Daten in meiner Datenbank hinzugefügt, und ich habe Venue.reindex zu laufen.
In meinem Controller Ich versuche, indem Sie suchen:
term = "london"
res = Geocoder.search(term)
@location = res.first.geometry['location'] # lat/lng
@venues = Venue.search '*', where: {
location: {
near: [@location['lat'],@location['lng']],
within: '2km'
}
}
Ich habe zwar gültige Daten in meiner Datenbank, habe ich immer ein leeres Ergebnis. Betrachtet man Schienen-Konsole, ist die Abfrage gegen elasticsearch durchgeführt:
{
"query":{
"filtered":{
"query":{
"match_all":{
}
},
"filter":{
"and":[
{
"geo_distance":{
"location":[
-0.08077990000000002,
51.5037119
],
"distance":"2km"
}
}
]
}
}
},
"size":1000,
"from":0,
"sort":{
"_geo_distance":{
"location":"51.5037119,-0.08077990000000002"
}
},
"fields":[
]
}
Irgendwelche Ideen?
Dank
Haben Sie eine Lösung gefunden? Ich habe das Problem, dass bei Verwendung eines Entfernungsfilters keine Ergebnisse erzielt werden. – Patelify
@Pelify nicht sicher, ob Sie versucht haben, was Caleuanhopkins erwähnt. Am Ende habe ich ein anderes Juwel benutzt, das mir einen niedrigeren Zugriff auf die Abfrage ermöglicht. Mein Repo: https://github.com/pedropaf/elasticsearch-rails-geolocation/blob/master/app/controllers/venues_controller.rb –
Ich habe es herausgefunden. Wie die meisten Dinge im Leben war es ein Benutzerfehler. Ich habe die search_data-Methode falsch eingegeben. Ich habe 'Breitengrad' statt 'Breitengrad' und 'Längengrad' anstelle von 'lon' für das Standortattribut verwendet. – Patelify