Как повысить оценку актуальности Solr по обращению геодиста ()

StackOverflow https://stackoverflow.com/questions/4702519

Вопрос

Итак, я внедрил и успешно использовал 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 ...

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

Это было полезно?

Решение

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

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)&...

Вам также необходимо указать значения LAT/LONG и пространственное поле для запроса против любого в качестве аргументов функции геодистов:

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

Другие советы

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

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

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

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

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

Вы можете определить повышение расстояния как таковое:

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

distance boost plot

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top