Solr 3.4 Функция геодиста, неверные или нежелательные результаты - PullRequest
0 голосов
/ 05 декабря 2011

У меня проблема с Solr 3.4, я использую его пространственные функции поиска, такие как Геодист и Геофильт. Все кажется нормальным, и результаты возвращаются, предположительно, отсортированные по расстоянию от заданной центральной точки.

Однако, поскольку в Solr 3.4 отсутствует возможность возвращать результаты функций в данных, мне пришлось рассчитывать их вручную (в данном случае PHP).

Я прочитал документы, и геодист должен быть функцией, которая реализует функцию haversine для определения географического расстояния между двумя точками широты и долготы. Я перенес функцию на PHP (просто!) И убедился, что она дает правильный результат.

Проблема в : Solr вычислил расстояние в другой формуле, которую я не смог найти. Поэтому, когда я пересчитываю расстояние в PHP, это приводит к непоследовательности расстояний данных (например, 132 мили вместо 83 мили), я не могу допустить разницу.

Мое решение : Я сказал ОК, удобно создать сравнение функций, чтобы посмотреть, не ошибся ли я в своем порте с данными, копался в Код Solr и извлек буквальная реализация hassine в org.apache.solr.search.function.distance.HaversineConstFunction, и результат был практически идентичен. и сделал этот скрипт тестирования (полный исходный код и данные) .

Мой вывод, что Solr (или Lucene) не использует haversine как реализацию геодиста. Но я не знаю, какое уравнение.

ОБНОВЛЕНИЕ Ошибка была устранена. Я думаю, что зашел слишком далеко со своими тестами. неверные результаты произошли из-за неправильного именования параметров, я использовал order (тот из SQL) вместо sort (соглашение Solr), чтобы изменить порядок результатов из веб-службы Solr ,

1 Ответ

1 голос
/ 06 декабря 2011

Смотрите обновление, ошибка устранена. Спасибо @jarnbjo и @TreyA за напоминание о глупой проблеме. Я должен смотреть на глупые ошибки в моем коде, прежде чем отлаживать код библиотек в будущем.

...