Учитывая массив идентификаторов, который варьируется от около 1000 до 10000 элементов, как бы вы расставили приоритеты в результатах поиска solr, которые соответствуют идентификаторам в массиве?
Вот что я пытаюсь достичь: когда я выполняю поиск по ключевому слову или фасету, я бы хотел расставить приоритеты по результатам, которые соответствуют идентификаторам из моего массива. Массив уникален для каждого пользователя, поэтому я не могу индексировать его как поле и выполнять простой order_by (), как это было бы для индекса на пользователя.
Моей первой мыслью было выполнить поиск с помощью метода search_ids (), который возвращает только идентификаторы записей (намного быстрее, чем обычный поиск ()), а затем переупорядочивает результаты поиска на основе значений в моем массив, а затем получить записи прямо из БД (так как у меня уже есть точные идентификаторы). С этим решением мне пришлось бы увеличить нумерацию страниц при поиске solr до очень большого числа (по крайней мере, размера массива). Это может начать замедлять ход событий.
Другая проблема с этим решением - это разбиение на страницы. Мне пришлось бы хранить Id результатов, а также мой массив в памяти где-то между запросами, чтобы поддерживать порядок во время разбивки на страницы. Это потребует от меня справиться с нумерацией страниц самостоятельно.
Другим возможным решением было бы сохранить массив идентификаторов в каждой записи индекса конкретного пользователя. Когда поиск выполняется, я могу посмотреть на каждый результат и расставить приоритеты для тех, у кого есть мой идентификатор в их проиндексированных полях. Не уверен, что это будет работать.
Любые идеи очень ценятся. Это приложение для рельсов, использующее Solr 3.3 и Sunspot 1.2.