2011-01-15 3 views
4

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

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

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

Любая помощь будет оценена. Благодаря!

+1

http://wiki.apache.org/solr/SpatialSearch#How_to_boost_closest_results –

ответ

11

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

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

Вы также должны указать т он Шир/значений и пространственное поле для запроса против либо в качестве аргументов функции geodist:

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

Спасибо! Да, часть запроса, в который я возился, указывала длину lat/long и пространственное поле! Еще раз спасибо! –

+1

Просто FYI, В solr 3.x вам нужно будет удалить пробелы между запятыми для параметров – jjxtra

+0

@PsychoDad Holy moly, то есть одна неприятная гоча. Решил проблему для меня, спасибо кучи! – markdsievers

0

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

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

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

+0

recip() - это функция '' recip (x, m, a, b) '' формы '' a/(m * x + b) ''. Когда a, b - одно и то же значение, оно возвращает значение в диапазоне от 0 до 1. Когда a, b становятся больше, в возвращаемом значении меньше дисперсии. –

0

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

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

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

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

distance boost plot

 Смежные вопросы

  • Нет связанных вопросов^_^