Sha256: 84a12e4de4e3ed24fa1f40fb6d73458c291e37875746fa724bde280b6e92f923

Contents?: true

Size: 1.26 KB

Versions: 20

Compression:

Stored size: 1.26 KB

Contents

module Spotlight
  ##
  # Expose Solr index metadata about fields
  class FieldMetadata
    attr_reader :repository, :blacklight_config
    def initialize(repository, blacklight_config)
      @repository = repository
      @blacklight_config = blacklight_config
    end

    def field(field_name)
      {
        document_count: document_counts.fetch(field_name, 0),
        value_count: fields.fetch(field_name, {}).fetch('distinct', 0),
        terms: fields.fetch(field_name, {}).fetch('topTerms', [])
      }
    end

    private

    def luke
      @luke ||= repository.send_and_receive('admin/luke', fl: '*', 'json.nl' => 'map')
    end

    def fields
      luke['fields']
    end

    # This gets the number of *documents* with a field
    def document_counts
      @document_count ||= begin
        solr_resp = repository.search('facet.query' => facet_fields.map { |_key, fields| "#{fields.field}:[* TO *]" },
                                      'rows' => 0,
                                      'facet' => true)

        solr_resp['facet_counts']['facet_queries'].each_with_object({}) do |(k, v), h|
          h[k.split(/:/).first] = v
        end
      end
    end

    def facet_fields
      blacklight_config.facet_fields.reject { |_k, v| v.pivot || v.query }
    end
  end
end

Version data entries

20 entries across 20 versions & 1 rubygems

Version Path
blacklight-spotlight-0.14.0 app/models/spotlight/field_metadata.rb
blacklight-spotlight-0.13.0 app/models/spotlight/field_metadata.rb
blacklight-spotlight-0.12.1 app/models/spotlight/field_metadata.rb
blacklight-spotlight-0.12.0 app/models/spotlight/field_metadata.rb
blacklight-spotlight-0.11.0 app/models/spotlight/field_metadata.rb
blacklight-spotlight-0.10.3 app/models/spotlight/field_metadata.rb
blacklight-spotlight-0.10.2 app/models/spotlight/field_metadata.rb
blacklight-spotlight-0.10.1 app/models/spotlight/field_metadata.rb
blacklight-spotlight-0.10.0 app/models/spotlight/field_metadata.rb
blacklight-spotlight-0.9.2 app/models/spotlight/field_metadata.rb
blacklight-spotlight-0.9.1 app/models/spotlight/field_metadata.rb
blacklight-spotlight-0.9.0 app/models/spotlight/field_metadata.rb
blacklight-spotlight-0.8.2 app/models/spotlight/field_metadata.rb
blacklight-spotlight-0.8.1 app/models/spotlight/field_metadata.rb
blacklight-spotlight-0.8.0 app/models/spotlight/field_metadata.rb
blacklight-spotlight-0.7.2 app/models/spotlight/field_metadata.rb
blacklight-spotlight-0.7.1 app/models/spotlight/field_metadata.rb
blacklight-spotlight-0.7.0 app/models/spotlight/field_metadata.rb
blacklight-spotlight-0.6.0 app/models/spotlight/field_metadata.rb
blacklight-spotlight-0.5.0 app/models/spotlight/field_metadata.rb