Сортировка по последнему доступу в Lucene / Solr

В моих запросах Solr я хочу отсортировать документы, к которым недавно осуществлялся доступ, вверх ("открытые" означают открытые действием пользователя). Никакие другие критерии поиска не имеют для меня веса: из документов с текстом, соответствующим запросу, я хочу их в порядке недавнего использования. Я могу придумать только два способа сделать это:

1) Включить поле даты «последнего доступа» в каждый документ для сортировки Solr. Мне сказали, что поля Trie Date можно сортировать очень быстро. Проблема, конечно, заключается в том, чтобы поддерживать поле в актуальном состоянии, что потребовало бы сохранения текста каждого документа, чтобы я мог удалить и повторно добавить любой документ с обновленным полем «последний доступ». Изменяемые поля могли бы избежать этого, но Lucene / Solr по-прежнему не предлагает изменяемых полей.

2) В качестве альтернативы можно сохранить изменяемые даты последнего доступа и обновлять их в другой базе данных. Это потребует от Solr возврата полного списка совпадающих документов, который может составлять более сотен тысяч документов. Затем этот огромный список идентификаторов документов будет сопоставлен с датами в базе данных и затем отсортирован. Он подходит для необычных поисковых запросов, но не для общих поисковых запросов.

Таким образом, компромисс между 1) размером индекса плюс стоимость обработки при каждом доступе к документу и 2) большими накладными расходами на запрос, особенно для несфокусированных условий поиска

Есть ли у меня альтернативы?

6
задан Jegschemesch 12 February 2012 в 23:35
поделиться