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

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

Решение

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

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

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

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

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

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

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

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

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

заговор увеличения расстояния

Другие вопросы по тегам