class Geoloader::Services::Solr

Attributes

resource[R]

Public Class Methods

new() click to toggle source

Initialize the API wrapper.

# File lib/geoloader/services/solr.rb, line 14
def initialize
  @resource = RSolr::Ext.connect(:url => Geoloader.config.solr.url)
end

Public Instance Methods

create_document(asset) click to toggle source

Add a new document to the index.

@param [Geoloader::Asset] asset

# File lib/geoloader/services/solr.rb, line 23
def create_document(asset)
  @resource.add(asset.solr_document)
  @resource.commit
end
delete_by_workspace(workspace) click to toggle source

Delete all documents in a workspace.

@param [String] workspace

# File lib/geoloader/services/solr.rb, line 54
def delete_by_workspace(workspace)
  @resource.delete_by_query("WorkspaceName:#{workspace}")
  @resource.commit
end
get_workspace_counts() click to toggle source

Count the number of documents in each workspace.

# File lib/geoloader/services/solr.rb, line 31
def get_workspace_counts

  workspaces = []

  # Select all documents, 0 rows, faceting on workspace.
  query = { :queries => "*:*", :facets => { :fields => "WorkspaceName" }, :rows => 0 }

  # Flatted out the counts.
  @resource.find(query).facets.each do |facet|
    facet.items.each do |item|
      workspaces << [item.value, item.hits]
    end
  end

  workspaces

end