Class: ActiveDocument::MarkLogicQueryBuilder
- Inherits:
-
Object
- Object
- ActiveDocument::MarkLogicQueryBuilder
- Defined in:
- lib/ActiveDocument/mark_logic_query_builder.rb
Overview
todo create new unit tests for this class - the old ones were no good
Instance Method Summary collapse
- #co_occurrence(element1, element1_namespace, element2, element2_namespace, query) ⇒ Object
- #delete(uri) ⇒ Object
- #find_by_attribute(element, attribute, value, root, element_namespace, attribute_namespace, root_namespace) ⇒ Object
- #find_by_element(element, value, root, element_namespace, root_namespace) ⇒ Object
-
#find_by_word(word, root, namespace) ⇒ Object
This method does a full text search.
- #load(uri) ⇒ Object
- #save(document, uri) ⇒ Object
- #search(search_text, start, page_length, options) ⇒ Object
Instance Method Details
#co_occurrence(element1, element1_namespace, element2, element2_namespace, query) ⇒ Object
114 115 116 117 118 119 120 121 122 123 124 125 |
# File 'lib/ActiveDocument/mark_logic_query_builder.rb', line 114 def co_occurrence(element1, element1_namespace, element2, element2_namespace, query) <<-GENERATED declare namespace one = "#{element1_namespace}"; declare namespace two = "#{element2_namespace}"; import module namespace search = "http://marklogic.com/appservices/search"at "/MarkLogic/appservices/search/search.xqy"; let $pairs := cts:element-value-co-occurrences(xs:QName('one:#{element1}'), xs:QName('two:#{element2}'), ('frequency-order', 'fragment-frequency','ordered'), cts:query(search:parse('#{query}'))) return for $pair in $pairs return ($pair/cts:value[1]/text(),"|",$pair/cts:value[2]/text(),"|",cts:frequency($pair),"*") GENERATED end |
#delete(uri) ⇒ Object
23 24 25 |
# File 'lib/ActiveDocument/mark_logic_query_builder.rb', line 23 def delete(uri) "xdmp:document-delete('#{uri}')" end |
#find_by_attribute(element, attribute, value, root, element_namespace, attribute_namespace, root_namespace) ⇒ Object
78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 |
# File 'lib/ActiveDocument/mark_logic_query_builder.rb', line 78 def find_by_attribute(element, attribute, value, root, element_namespace, attribute_namespace, root_namespace) # todo should the searchable expression portion be refactored? xquery = <<-GENERATED import module namespace search = "http://marklogic.com/appservices/search"at "/MarkLogic/appservices/search/search.xqy"; search:search("word:#{value}", <options xmlns="http://marklogic.com/appservices/search"> GENERATED unless root.nil? xquery << "<searchable-expression" xquery << " xmlns:a=\"#{root_namespace}\"" unless root_namespace.nil? xquery << '>/' xquery << "a:" unless root_namespace.nil? xquery << "#{root}</searchable-expression>" end xquery << <<-CONSTRAINT <constraint name="word"> <word> <attribute ns="#{attribute_namespace unless attribute_namespace.nil?}" name="#{attribute}"/> <element ns="#{element_namespace unless element_namespace.nil?}" name="#{element}"/> </word> </constraint></options>) CONSTRAINT end |
#find_by_element(element, value, root, element_namespace, root_namespace) ⇒ Object
56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 |
# File 'lib/ActiveDocument/mark_logic_query_builder.rb', line 56 def find_by_element(element, value, root, element_namespace, root_namespace) xquery = <<-GENERATED import module namespace search = "http://marklogic.com/appservices/search"at "/MarkLogic/appservices/search/search.xqy"; search:search("word:#{value}", <options xmlns="http://marklogic.com/appservices/search"> GENERATED unless root.nil? xquery << "<searchable-expression" xquery << " xmlns:a=\"#{root_namespace}\"" unless root_namespace.nil? xquery << '>/' xquery << "a:" unless root_namespace.nil? xquery << "#{root}</searchable-expression>" end xquery << <<-CONSTRAINT <constraint name="word"> <word> <element ns="#{element_namespace unless element_namespace.nil?}" name="#{element}"/> </word> </constraint></options>) CONSTRAINT end |
#find_by_word(word, root, namespace) ⇒ Object
This method does a full text search
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
# File 'lib/ActiveDocument/mark_logic_query_builder.rb', line 39 def find_by_word(word, root, namespace) xquery = <<-GENERATED import module namespace search = "http://marklogic.com/appservices/search"at "/MarkLogic/appservices/search/search.xqy"; search:search("#{word}", <options xmlns="http://marklogic.com/appservices/search"> GENERATED unless root.nil? xquery << "<searchable-expression" xquery << " xmlns:a=\"#{namespace}\"" unless namespace.nil? or namespace.empty? xquery << '>/' xquery << "a:" unless namespace.nil? or namespace.empty? xquery << "#{root}</searchable-expression>" end xquery << "</options>)" end |
#load(uri) ⇒ Object
19 20 21 |
# File 'lib/ActiveDocument/mark_logic_query_builder.rb', line 19 def load(uri) "fn:doc('#{uri}')" end |
#save(document, uri) ⇒ Object
27 28 29 30 31 32 33 34 35 36 |
# File 'lib/ActiveDocument/mark_logic_query_builder.rb', line 27 def save(document, uri) xquery = <<-GENERATED xdmp:document-insert( "#{uri}", #{document.to_s}, xdmp:default-permissions(), xdmp:default-collections()) GENERATED end |
#search(search_text, start, page_length, options) ⇒ Object
102 103 104 105 106 107 108 109 110 111 112 |
# File 'lib/ActiveDocument/mark_logic_query_builder.rb', line 102 def search(search_text, start, page_length, ) if .nil? option = '()' else option = .to_s end <<-GENERATED import module namespace search = "http://marklogic.com/appservices/search"at "/MarkLogic/appservices/search/search.xqy"; search:search('#{search_text}',#{option},#{start}, #{page_length}) GENERATED end |