2012-02-27 2 views
1

В моем запросе я хочу найти цену на основе диапазона значений (например, $ 500 - $ 1000) и вернуть нечеткий результирующий набор.Solr - Релевантность по диапазону + вне диапазона

Я могу увеличить эти значения, выполнив цену: [500 TO 1000]^10, но тогда она не наберет $ 499, как более актуальную, чем $ 200.

я могу создать функцию форсирования, как: сабельные (абс (суб (цена, 750)), 1,1000,1000)^10, но это баллы 501, как более актуальной, чем 500.

Есть ли способ иметь одну функцию повышения для $ 500- $ 1000 и другую функцию повышения для значений вне этого диапазона?

Спасибо, Дрю

Edited для опечатка в функции

ответ

2

recip(abs(sub(price,750)),1,1000,1000)^10

Использование средней точки вашего диапазона вместо нижней границы.


Edit: Чтобы ответить на этот вопрос: обновленный

посмотрите на функцию map здесь - вы можете отобразить все цены от 500 до 1000 до 750, а затем использовать его для повышения. Что-то вроде: recip(abs(sub(map(price,500,1000,750),750)),1,1000,1000)^10

Это должно набрать 600 и 700 такой же, но он забьет 400 выше, чем 300.

+0

Это на самом деле то, что я имел в виду, чтобы напечатать. Тем не менее, этот же вопрос относится и к этой функции. Как я могу сделать 500-1000 все той же релевантностью, но что-то вне этого диапазона имеет релевантность, основанную на этой функции? – dhysong

+0

Редактировали ответ - я думаю, он должен решить вашу проблему. – nikhil500