2012-03-28 4 views
1

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

Я бегу 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, но мне действительно нужно, чтобы получить расчетное расстояние в ответ. Да, я могу запрограммировать дистанцию, но я бы предпочел не делать этого, поскольку Солр сделал это для меня уже.

Я по-прежнему хочу, чтобы иметь возможность сортировать мой smax-запрос «по релевантности», расстояние или любое другое поле, поэтому оценка, полученная моими повышениями, может быть интересной для сортировки, но мне не нужно ее возвращать.

ответ

1

Pseudo-fields теперь доступны в Solr 4+, которые позволяют вам делать именно это.

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

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

+1

Спасибо, учитывая, что Solr 4 стабилен, теперь я приму это как решение :) – polythene

2

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

+0

Я смотрел на Solr 4, и это, вероятно, решит мою проблему. Однако, если это можно решить с помощью 3.5, это было бы еще лучше, поскольку пока не было даты релиза для Solr 4 (хотя вы можете быть правы, возможно, не так уж и много) – polythene

+0

Я не думаю у Solr 3.x есть возможность использовать то, что вы хотите. Возможно, вы можете попробовать применить патч SOLR-2444 к ветке 3x, но я не уверен, что это сработает. – javanna

+0

Я склоняюсь к тому, чтобы делать это программно, пока 4.0 не станет достаточно стабильным для производства. – polythene