Class: XTF::Result::Element::Facet

Inherits:
Object
  • Object
show all
Defined in:
lib/xtf/result/element/facet.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(xml = nil, search = nil) ⇒ Facet

Returns a new instance of Facet.



10
11
12
13
14
15
16
# File 'lib/xtf/result/element/facet.rb', line 10

def initialize(xml=nil, search=nil)
  start = Time.now
  @groups = []
  @query = query
  parse_xml(xml) if xml
#     RAILS_DEFAULT_LOGGER.debug("~~~~~ #{self.class.name} initialized #{@groups.size} hits in #{Time.now - start} seconds.")
end

Instance Attribute Details

#fieldObject (readonly)

require ‘libxml_helper’



4
5
6
# File 'lib/xtf/result/element/facet.rb', line 4

def field
  @field
end

#groupsObject (readonly)

require ‘libxml_helper’



4
5
6
# File 'lib/xtf/result/element/facet.rb', line 4

def groups
  @groups
end

#queryObject (readonly)

require ‘libxml_helper’



4
5
6
# File 'lib/xtf/result/element/facet.rb', line 4

def query
  @query
end

#total_docsObject (readonly)

require ‘libxml_helper’



4
5
6
# File 'lib/xtf/result/element/facet.rb', line 4

def total_docs
  @total_docs
end

#total_groupsObject (readonly)

require ‘libxml_helper’



4
5
6
# File 'lib/xtf/result/element/facet.rb', line 4

def total_groups
  @total_groups
end

Instance Method Details

#parse_xml(xml) ⇒ Object

Parses the important bits out of the XTF search results using LibXML-Ruby.



19
20
21
22
23
24
25
26
27
28
# File 'lib/xtf/result/element/facet.rb', line 19

def parse_xml(xml)
  @xml = xml.to_s.squish #.gsub(/\s+/, " ").strip
  @doc = XML::Document.parse_string(@xml).root
  # the query metadata
  @field = @doc.at('/facet')['field']
  @total_groups = @doc.at('/facet')['totalGroups']
  @total_docs = @doc.at('/facet')['totalDocs']

  @groups = @doc.search('/facet/group').collect { |h| XTF::Result::Element::Group.new(h, @query) }.compact
end