Как повысить оценку релевантности Solr с помощью инверсии геодиста () - PullRequest
4 голосов
/ 16 января 2011

Итак, я внедрил и успешно использовал Solr 4. Я должен сказать, что Solr 4 потрясающий!В любом случае я успешно отсортировал по расстоянию и использовал геофильтр, чтобы ограничить результаты определенной областью.То, что я хотел бы сделать сейчас, это повысить оценку релевантности на обратное расстояние.На этой странице говорится об этом, но не говорится, как это сделать (http://wiki.apache.org/solr/SpatialSearch)

Я пробовал следующее, но выдает ошибку:

http://localhost:8983/solr/select/?q={!boost b=recip(geodist(), 1, 1000, 1000)}...

я получаю ошибку:

org.apache.lucene.queryParser.ParseException: Expected identifier at pos 27 str='{!boost b=recip(geodist(), 1, 10 in ...

Любая помощь будет оценена. Спасибо!

Ответы [ 3 ]

11 голосов
/ 28 января 2011

Вам все еще нужно указать основную часть вашего запроса после функции повышения:

q={!boost b=recip(geodist(),1,1000,1000)}foo:bar&...

Если вас интересует только увеличение с помощью обратной величины расстояния, вы можете использовать запрос с подстановочными знаками:

q={!boost b=recip(geodist(),1,1000,1000)}*&...

... или используйте синтаксический анализатор запросов функции:

q={!func}recip(geodist(),1,1000,1000)&...

Также необходимо указать значения широты / долготы и пространственное поле для запроса в качестве аргументов функции геодиста.:

q={!boost b=recip(geodist(50.1, -0.86, myGeoField),1,1000,1000)}foo:bar&...

... или с учетом параметров строки запроса:

q={!boost b=recip(geodist(),1,1000,1000)}foo:bar&sfield=myGeoField&pt=50.1,-0.86
0 голосов
/ 22 августа 2017

В качестве дополнительного примечания, вот увеличение расстояния, используемое на моем рабочем месте. Это отличается от того, что на сайте документации Solr. Эта функция ускорения будет обрабатывать расстояние одинаково для нескольких километров до начала повышения. Это полезно в некоторых ситуациях, когда вам не нужны изменения релевантности для небольших различий в расстояниях.

Вы можете изменить константу 25 на любое количество километров, для которого вы хотите, чтобы ускорение было таким же.

Вы можете определить увеличение расстояния следующим образом:

div(1.0, min(1000, max(25, geodist())))

distance boost plot

0 голосов
/ 27 февраля 2015

Просто добавлю, что я получаю лучшие результаты с ...

{!boost b=recip(geodist(),1,100,10)}

Я не знаю, что вызывает это, но я бы хотел, чтобы Солр дал немного больше информации о параметрах для получения и повышения. Текущая документация отсутствует.

...