2015-09-10 5 views
0

Я использую geodist() в запросе solr. Ниже мой запросsolr geodist() неверное расстояние

q=(name:(*)&fl=person_id, name, longitude, lattitude, distance:geodist()&fq={!geofilt}&spatial=true&pt=73.7708441,18.5664871&d=10&sort=geodist() asc&group=true&group.field=person_id&group.format=simple&group.main=true&start=0&rows=15 

один из записи в моем выходе

{ 
    \"personId\": 313403, 
    \"name\": \"Dev\", 
    \"longitude\": 73.812498, 
    \"latitude\": 18.439598, 
    \"distance\": 6.079763395151475, 
} 

Но когда я рассчитывать расстояние между обоими Lat долго на интернет, т.е. (73.7708441,18.5664871) до (73.812498, 18.439598), It дает мне 14.782 км или 9.187 в миле

Я искал о solr geodist(), но такая же функция и запрос используются повсюду. Может кто-нибудь, пожалуйста, скажите мне, что здесь происходит?

ответ

0

Окончательно разрешено.

Там были слишком спутать

1-пт должен быть pt=lat, long

2-а положить лат долго в Solr (по данным-config.xml), имя широты поля должно быть location_0_coordinate и долгота - location_1_coordinate

в моем случае он был заменен

0

Похоже, что некоторые провода пересекли где-то.

Если ваши координаты должны быть: (лат: 73,7 ..., длинный: 18,5 ...), то расстояние Solr является правильным, и ваши поля («широта» и «долгота») по всей видимости, неправильно маркированы

С другой стороны, если это должно быть (lat: 18.5 ..., long: 73.7 ...), то пройденное вами расстояние является правильным, а координаты возвращаются в ваш запрос, который должен быть: pt=18.5664871,73.7708441. Довольно уверенно, что ваше поле LatLonType также должно было бы вернуть его назад, поэтому они также должны быть исправлены и переиндексированы.

+0

Да, я исправил его, pt должен быть (lat, long). И я назначил релаксацию location_1_coordinate, где она должна быть location_0_coordinate. Anyways спасибо за ваш комментарий – nilesh

Смежные вопросы