2016-09-30 1 views
1

У меня есть список ящиков в таблице тузд названные DRAWERS какКак реализовать пользовательский порядок сортировки с некоторыми элементами в фиксированных местах в solr?

|  BOX  | RANK | 
|----------------|--------| 
|  Box1  | 1 | 
|  Box2  | 2 | 
|  Box3  | 3 | 
|  Box4  | 4 | 
|  Box5  | 5 | 

Тогда я еще один источник, который говорит, что некоторые из этих коробок содержит драгоценный камень и должны быть размещены только на определенной позиции (Назовём эту таблицу jewelboxes).

|  BOX  | RANK | 
|----------------|--------| 
|  Box1  | 4 | 
|  Box3  | 1 | 
|  Box5  | 3 | 

У меня есть определенные ограничения, которые необходимо соблюдать:

I cannot write a stored proc on these tables 

Я хочу, чтобы получить список Боксы на Solr, где позиция jewelboxes должна быть фиксированной, независимо от того, вызывающему (по возрастанию/по убыванию). например,

восходящий порядок будет:

|  BOX  | RANK | 
|----------------|--------| 
|  Box3  | 1 | 
|  Box2  | 2 | 
|  Box5  | 3 | 
|  Box1  | 4 | 
|  Box4  | 5 | 

убыванию бы:

|  BOX  | RANK | 
|----------------|--------| 
|  Box3  | 1 | 
|  Box4  | 2 | 
|  Box5  | 3 | 
|  Box1  | 4 | 
|  Box2  | 5 | 

Я импортировать эти таблицы в Solr от DIH, и в настоящее время разрывая мои волосы друг от друга думать о том, как сделать это. У меня есть два варианта, но оба они не очень понятны, и мне бы хотелось, чтобы вы помогли мне помочь. Мои варианты:

  1. Напишите запрос таким образом, чтобы дать мне правильный заказ. (Это потребуется мастер уровня запросов для навыков, потому что все мы имеем отборный запрос в DIH)
  2. Написать CustomFieldComparator, как описано в следующей ссылке: http://sujitpal.blogspot.in/2011/05/custom-sorting-in-solr-using-external.html

Есть ли третий подход, который может следовать до получить желаемые результаты?

UPDATE:

Я могу работать без критериев убывающего порядка, но мне еще нужен восходящий один.

Спасибо :-)

ответ

0

Я хотел бы создать пользовательский индексатор на языке вы комфортно (см https://wiki.apache.org/solr/IntegratingSolr - Я работаю в Python и использовать mysolr), когда вам нужно больше гибкости, как это. Возможно, создайте два поля: один для «восходящего» и один для «нисходящего»; составить список с рангом, один с обратными рангами, затем запросить второй источник, который будет использоваться для переопределений в обоих списках, или что вам нужно сделать для обработки данных. Я предполагаю, что выполнимость также зависит от того, сколько записей нужно индексировать. Затем обрабатывайте каждую запись, добавляя информацию для двух ранжированных полей из списка и отправляя их на сервер Solr партиями.

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