Использование функции в запросе фильтра в Solr - PullRequest
1 голос
/ 20 апреля 2009

Я хочу отфильтровать набор результатов перед поиском. Я знаю, что правильный способ сделать это с помощью параметра фильтра запроса (FQ). Однако я хочу фильтровать на основе вывода функции, выполняемой над полем.

У меня есть поле 'rating', которое является целым числом в диапазоне от 1 до ~ 75000. Верхний предел может измениться. Я хочу отфильтровать 500 лучших товаров с самым высоким рейтингом. В SQL это будет что-то вроде:

... ORDER BY rating DESC LIMIT 500

Я думаю, что я могу получить документы в solr, ранжированные по убыванию рейтинга, используя функцию rord (rating), поэтому в основном я хотел бы сделать:

fq=rord(rating):[0 TO 500]

Но это не представляется возможным. Кто-нибудь знает, что еще я мог сделать?

Ответы [ 3 ]

3 голосов
/ 21 апреля 2009

Спасибо Йонику Сили в списке рассылки Solr:

Solr 1.4 теперь может выполнять запросы диапазона произвольные функции: http://lucene.apache.org/solr/api/org/apache/solr/search/FunctionRangeQParserPlugin.html

Обратите внимание, что ord () и rord () не будут работать правильно в солр 1.4 багажник. Lucene имеет изменен на поиск по сегментам в MultiReader и, следовательно, вы будете в настоящее время получить ord () или rord () в этот сегмент, а не весь индекс.

1 голос
/ 21 апреля 2009

Если я что-то упустил, вы не можете отсортировать по полю рейтинга, а затем просто взять первые 500. Это будет идентично вашему примеру SQL.

...