class ActiveFedora::SolrService

def add(doc, params = {})

Parameters:
  • params (Hash) --
  • doc (Hash) -- the document to index, or an array of docs
def add(doc, params = {})
  SolrService.instance.conn.add(doc, params: params)
end

def commit

def commit
  SolrService.instance.conn.commit
end

def conn

def conn
  @conn ||= RSolr.connect @options
end

def count(query, args = {})

Returns:
  • (Integer) - number of records matching

Parameters:
  • args (Hash) -- arguments to pass through to `args' param of SolrService.query (note that :rows will be overwritten to 0)
  • query (String) -- a solr query
def count(query, args = {})
  args = args.merge(rows: 0)
  SolrService.get(query, args)['response']['numFound'].to_i
end

def delete(id)

def delete(id)
  SolrService.instance.conn.delete_by_id(id, params: { 'softCommit' => true })
end

def get(query, args = {})

def get(query, args = {})
  args = args.merge(q: query, qt: 'standard')
  SolrService.instance.conn.get(select_path, params: args)
end

def initialize(options = {})

def initialize(options = {})
  @options = { timeout: 120, open_timeout: 120, url: 'http://localhost:8080/solr' }.merge(options)
end

def instance

def instance
  # Register Solr
  register(ActiveFedora.solr_config) unless ActiveFedora::RuntimeRegistry.solr_service
  ActiveFedora::RuntimeRegistry.solr_service
end

def post(query, args = {})

def post(query, args = {})
  args = args.merge(q: query, qt: 'standard')
  SolrService.instance.conn.post(select_path, data: args)
end

def query(query, args = {})

def query(query, args = {})
  Base.logger.warn "Calling ActiveFedora::SolrService.get without passing an explicit value for ':rows' is not recommended. You will end up with Solr's default (usually set to 10)\nCalled by #{caller[0]}" unless args.key?(:rows)
  method = args.delete(:method) || :get
  result = case method
           when :get
             get(query, args)
           when :post
             post(query, args)
           else
             raise "Unsupported HTTP method for querying SolrService (#{method.inspect})"
           end
  result['response']['docs'].map do |doc|
    ActiveFedora::SolrHit.new(doc)
  end
end

def register(options = {})

Parameters:
  • options (Hash) --
def register(options = {})
  ActiveFedora::RuntimeRegistry.solr_service = new(options)
end

def reset!

def reset!
  ActiveFedora::RuntimeRegistry.solr_service = nil
end

def select_path

def select_path
  ActiveFedora.solr_config.fetch(:select_path, 'select')
end