У меня есть solr экземпляр, содержащий документы, которые имеют 'startTime' поле в пределах от прошлого месяца к году с этого времени. Я хотел бы добавить запрос/функцию повышения для повышения множества документов, startTime поле которых близко к текущему времени.
До сих пор я видел много примеров, которые используют rord для добавления повышений документов, кого является более новым, но я никогда не видел примера чего-то вроде этого.
Кто-либо может сказать мне, как сделать это?
Спасибо
Если вы используете Solr 1.4+, у вас есть доступ к функции "ms" в запросах функций и стандартному учебному подходу к ускорению с помощью недавность:
recip(ms(NOW,startTime),3.16e-11,1,1)
мс - количество миллисекунд между двумя его аргументами. Выражение в целом повышает оценку на 1 для документов, датированных сейчас, на 1/2 для документов, датированных 1 год назад, на 1/3 для документов, датированных 2 года назад и т. Д. (См. http: // wiki. apache.org/solr/FunctionQuery#Date_Boosting, как указал Шон Тимм.)
В вашем случае у вас есть документы, датированные в будущем, и им будет присвоена отрицательная оценка вышеуказанной функцией, поэтому вы, вероятно, хотел бы добавить абсолютное значение, например:
recip(abs(ms(NOW,startTime)),3.16e-11,1,1)
abs (ms (NOW, startTime)) даст # миллисекунд между startTime и now, гарантированно неотрицательным.
Это было бы хорошей отправной точкой. Если вы хотите, вы можете настроить 3.16e-11, если он слишком агрессивен или недостаточно агрессивен.
По существу, функция ms будет работать только с полями, основанными на классе TrieDate, а не с классическими классами Date и LegacyDate. Если ваш schema.xml был основан на примере для Solr 1.4, то ваше поле даты, вероятно, уже имеет правильный формат.