activedocument 0.1 → 0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -20,19 +20,21 @@
20
20
  # * value_constraints - this is a #Hash of value constraint names to their options. e.g. search_options_object.value_constraints["Region"] = {"namespace" => "http://wits.nctc.gov", "element" => "Region"}
21
21
  module ActiveDocument
22
22
  class SearchOptions
23
- attr_accessor :return_facets, :value_constraints
23
+ attr_accessor :return_facets, :value_constraints, :word_constraints, :range_constraints
24
24
 
25
25
  def initialize
26
26
  @return_facets = true;
27
27
  @value_constraints = Hash.new
28
+ @word_constraints = Hash.new
29
+ @range_constraints = Hash.new
28
30
  end
29
31
 
30
32
 
31
33
  # outputs the object in correctly formatted XML suitable for use in a search
32
34
  def to_s
33
- value_constraints = String.new
35
+ constraints = String.new
34
36
  @value_constraints.each do |key, value|
35
- value_constraints << <<-XML
37
+ constraints << <<-XML
36
38
  <constraint name="#{key}">
37
39
  <value>
38
40
  <element ns="#{value["namespace"]}" name="#{value["element"]}"/>
@@ -41,16 +43,35 @@ module ActiveDocument
41
43
  XML
42
44
  end
43
45
 
46
+ @word_constraints.each do |key, value|
47
+ constraints << <<-XML
48
+ <constraint name="#{key}">
49
+ <word>
50
+ <element ns="#{value["namespace"]}" name="#{value["element"]}"/>
51
+ </word>
52
+ </constraint>
53
+ XML
54
+ end
55
+
56
+ @range_constraints.each do |key, value|
57
+ constraints << <<-XML
58
+ <constraint name="#{key}">
59
+ <range>
60
+ <element ns="#{value["namespace"]}" name="#{value["element"]}"/>
61
+ </range>
62
+ </constraint>
63
+ XML
64
+ end
65
+
44
66
  value = <<-XML
45
67
  <options xmlns="http://marklogic.com/appservices/search">
46
68
  <return-facets>#{@return_facets}</return-facets>
47
69
  XML
48
70
 
49
71
  # add in constraints
50
- unless value_constraints.empty?
51
- value << value_constraints
72
+ unless constraints.empty?
73
+ value << constraints
52
74
  end
53
-
54
75
  # close the options node
55
76
  value << "</options>"
56
77
 
@@ -19,9 +19,19 @@ require 'ActiveDocument/search_result'
19
19
  module ActiveDocument
20
20
  class SearchResults
21
21
  include Enumerable
22
+ attr_reader :facets
22
23
 
23
24
  def initialize(results)
24
25
  @results_document = Nokogiri::XML(results)
26
+ @facets = Hash.new
27
+ @results_document.xpath("/search:response/search:facet").each do |facet|
28
+ name = facet.xpath("./@name").to_s
29
+ detail = Hash.new
30
+ @facets[name] = detail
31
+ facet.xpath("search:facet-value").each do |facet_value|
32
+ detail[facet_value.xpath("./@name").to_s] = facet_value.xpath("./@count").to_s
33
+ end
34
+ end
25
35
  end
26
36
 
27
37
  def total
metadata CHANGED
@@ -4,8 +4,8 @@ version: !ruby/object:Gem::Version
4
4
  prerelease: false
5
5
  segments:
6
6
  - 0
7
- - 1
8
- version: "0.1"
7
+ - 2
8
+ version: "0.2"
9
9
  platform: ruby
10
10
  authors:
11
11
  - Clark D. Richey, Jr.
@@ -13,7 +13,7 @@ autorequire:
13
13
  bindir: bin
14
14
  cert_chain: []
15
15
 
16
- date: 2010-04-02 00:00:00 -04:00
16
+ date: 2010-04-05 00:00:00 -04:00
17
17
  default_executable:
18
18
  dependencies:
19
19
  - !ruby/object:Gem::Dependency