Solr получить расчетное расстояние при использовании dismax - PullRequest
1 голос
/ 28 марта 2012

Я начинаю думать, что то, что я хочу сделать, невозможно, но подумал, что попробую.

Я использую Solr 3.5.

В настоящее время у меня есть два типа поиска:

  1. Базовый пространственный запрос, который возвращает рассчитанное расстояние между двумя точками в поле оценки.

Пример запроса из моих журналов Solr:

?fl=*,score&sort=score+asc&start=0&q={!func}geodist()&sfield=coordinates&pt=59.2363514,18.092783&version=2
  1. 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 "по релевантности", расстоянию или любому другому полю, чтобы оценка, данная моими повышениями, могла быть интересной для сортировки, но мне не нужно ее возвращать.

Ответы [ 2 ]

2 голосов
/ 29 марта 2012

Если я правильно понял, вы хотите получить результат функции в своем ответе Solr.Думаю, вам нужна проблема SOLR-2444 : она позволяет включать в псевдополя параметры fl, функции и т.д.поэтому он недоступен в текущей версии Solr и не будет в следующей версии 3.6.Вы должны ждать 4 релиза, но я не думаю, что это займет много времени.Возможно, вы уже можете начать играть с снимком последней успешной сборки Jenkins.

1 голос
/ 04 марта 2013

Псевдополя теперь доступны в Solr 4+, что позволяет вам сделать это.

http://localhost:8983/solr/collection1/browse?q=*:*&rows=1000&wt=xml&pt=37.763649,-122.24313&sfield=store&fl=dist:geodist()

Например, этот запрос позволяет мне вернуть поле «dist», которое содержит расстояние каждой записи до указанной точки.

...