Я начинаю думать, что то, что я хочу сделать, невозможно, но подумал, что попробую.
Я использую Solr 3.5.
В настоящее время у меня есть два типа поиска:
- Базовый пространственный запрос, который возвращает рассчитанное расстояние между двумя точками в поле оценки.
Пример запроса из моих журналов Solr:
?fl=*,score&sort=score+asc&start=0&q={!func}geodist()&sfield=coordinates&pt=59.2363514,18.092783&version=2
- Dismax-запрос, который допускает произвольные текстовые запросы для нескольких полей.
Пример запроса из журнала Solr:
mm=1&d=100.0&sfield=coordinates&qf=field1^5.0+fields2^3.0&defType=edismax&version=2&fl=*,score&start=1&q=monkeyhopper&pt=59.2363514,18.0927830000&fq={!geofilt}}
Я хочу заменить свой первый запрос запросом dismax, но мне действительно нужно получить вычисленное расстояние в ответе. Да, я могу вычислить расстояние программно, но я бы предпочел не делать этого, поскольку Solr уже сделал это для меня.
Я все еще хочу иметь возможность сортировать мой запрос dismax "по релевантности", расстоянию или любому другому полю, чтобы оценка, данная моими повышениями, могла быть интересной для сортировки, но мне не нужно ее возвращать.