2013-04-12 1 views
7

Я смущен о механизме индексации Solr. Возможно, кто-то может пролить свет на него.Каков правильный способ поддержания индексов для Sunspot Solr?

Таким образом, мы имеем 2 рек команды: rake sunspot:solr:index и rake sunspot:solr:reindex

Вот что моя index задача выглядит (я отменяю его Mongoid):

namespace :sunspot do 
    namespace :solr do 
    desc "indexes searchable models" 
    task :index => :environment do 
     [Model1, Model2].each do |model| 
     Sunspot.index!(model.all) 
     end 
    end 
    end 
end 

Насколько я понимаю, мое определение index эффективно переиндексирует коллекции каждый раз, когда я запускаю его.

Я прав? Перезаписывает ли предыдущий индекс или мне нужно использовать reindex, чтобы удалить старые и создать новые индексы?

Я использую камни , sunspot_mongo v1.0.1, sunspot_solr v2.0.0

ответ

8

Задача переиндексации просто вызывает solr_reindex на каждой из моделей, а также источником для этого метода ниже (взято из GitHub).

# Completely rebuild the index for this class. First removes all 
    # instances from the index, then loads records and indexes them. 
    # 
    # See #index for information on options, etc. 
    # 
    def solr_reindex(options = {}) 
    solr_remove_all_from_index 
    solr_index(options) 
    end 

Если посмотреть на источник в solr_index, комментарии говорят, что метод Виль «Добавить/обновить все существующие записи в индексе Solr.»

Чтобы ответить на ваш вопрос, задача reindex по существу такая же, как задача index, за исключением того, что задача reindex сначала снизит существующий индекс. Если у вас есть предметы в вашем индексе, которые, как вы знаете, не должны быть там, вы должны позвонить reindex. Если вы знаете, что вы добавляете или обновляете только элементы в индексе, вы можете просто позвонить index и не пострадать от удара по производительности, отбрасывая индекс, а затем перестраивая его с нуля.

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

  • Нет связанных вопросов^_^