Class: SolrjWrapper
- Inherits:
-
Object
- Object
- SolrjWrapper
- Defined in:
- lib/solrj_wrapper.rb,
lib/solrj_wrapper/version.rb
Overview
Methods required to interact with SolrJ objects, such as org.apache.solr.client.solrj.impl.StreamingUpdateSolrServer
Constant Summary collapse
- VERSION =
"1.0.2"
Instance Attribute Summary collapse
-
#http_solr_server ⇒ Object
readonly
Returns the value of attribute http_solr_server.
-
#query ⇒ Object
Returns the value of attribute query.
Instance Method Summary collapse
-
#add_doc_to_ix(solr_input_doc, id) ⇒ Object
add the doc to Solr by calling add on the Solrj HttpSolrServer object.
-
#add_val_to_fld(solr_input_doc, fld_name, value) ⇒ Object
given a SolrInputDocument, add the field and/or the value.
-
#add_vals_to_fld(solr_input_doc, fld_name, val_array) ⇒ Object
given a SolrInputDocument, add the field and/or the values.
-
#commit ⇒ Object
send a commit to the Solrj HttpSolrServer object.
-
#empty_ix ⇒ Object
remove all docs from the Solr index.
-
#get_query_result_docs(query_obj) ⇒ Object
send the query to Solr and get the SolrDocumentList from the response.
-
#initialize(solrj_jar_dir, solr_url, log_level = Logger::INFO, log_file = STDERR) ⇒ SolrjWrapper
constructor
A new instance of SolrjWrapper.
-
#replace_field_values(solr_input_doc, fld_name, val_array) ⇒ Object
given a SolrInputDocument, replace all the values of the field with the new values.
Constructor Details
#initialize(solrj_jar_dir, solr_url, log_level = Logger::INFO, log_file = STDERR) ⇒ SolrjWrapper
Returns a new instance of SolrjWrapper.
16 17 18 19 20 21 22 23 24 |
# File 'lib/solrj_wrapper.rb', line 16 def initialize(solrj_jar_dir, solr_url, log_level=Logger::INFO, log_file=STDERR) if not defined? JRUBY_VERSION raise "SolrjWrapper only runs under jruby" end @logger = Logger.new(log_file) @logger.level = log_level load_solrj(solrj_jar_dir) @http_solr_server = org.apache.solr.client.solrj.impl.HttpSolrServer.new(solr_url) end |
Instance Attribute Details
#http_solr_server ⇒ Object (readonly)
Returns the value of attribute http_solr_server.
9 10 11 |
# File 'lib/solrj_wrapper.rb', line 9 def http_solr_server @http_solr_server end |
#query ⇒ Object
Returns the value of attribute query.
10 11 12 |
# File 'lib/solrj_wrapper.rb', line 10 def query @query end |
Instance Method Details
#add_doc_to_ix(solr_input_doc, id) ⇒ Object
add the doc to Solr by calling add on the Solrj HttpSolrServer object
75 76 77 78 79 80 81 82 83 84 85 86 |
# File 'lib/solrj_wrapper.rb', line 75 def add_doc_to_ix(solr_input_doc, id) unless solr_input_doc.nil? begin @http_solr_server.add(solr_input_doc) @logger.info("updating Solr document #{id}") rescue org.apache.solr.common.SolrException => e @logger.error("SolrException while indexing document #{id}") @logger.error("#{e.message}") @logger.error("#{e.backtrace}") end end end |
#add_val_to_fld(solr_input_doc, fld_name, value) ⇒ Object
given a SolrInputDocument, add the field and/or the value. This will not add empty values, and it will not add duplicate values
50 51 52 53 54 55 56 57 58 59 |
# File 'lib/solrj_wrapper.rb', line 50 def add_val_to_fld(solr_input_doc, fld_name, value) if !solr_input_doc.nil? && !fld_name.nil? && fld_name.size > 0 && !value.nil? && value.size > 0 if !solr_input_doc[fld_name].nil? && solr_input_doc existing_vals = solr_input_doc[fld_name].getValues end if existing_vals.nil? || !existing_vals.contains(value) solr_input_doc.addField(fld_name, value, 1.0) end end end |
#add_vals_to_fld(solr_input_doc, fld_name, val_array) ⇒ Object
given a SolrInputDocument, add the field and/or the values. This will not add empty values, and it will not add duplicate values
38 39 40 41 42 43 44 |
# File 'lib/solrj_wrapper.rb', line 38 def add_vals_to_fld(solr_input_doc, fld_name, val_array) unless val_array.nil? || solr_input_doc.nil? || fld_name.nil? val_array.each { |value| add_val_to_fld(solr_input_doc, fld_name, value) } end end |
#commit ⇒ Object
send a commit to the Solrj HttpSolrServer object
89 90 91 92 93 94 95 96 97 |
# File 'lib/solrj_wrapper.rb', line 89 def commit begin update_response = @http_solr_server.commit rescue org.apache.solr.common.SolrException => e @logger.error("SolrException while committing updates") @logger.error("#{e.message}") @logger.error("#{e.backtrace}") end end |
#empty_ix ⇒ Object
remove all docs from the Solr index. Assumes default request handler has type dismax
100 101 102 103 |
# File 'lib/solrj_wrapper.rb', line 100 def empty_ix delete_response = @http_solr_server.deleteByQuery("*:*") commit end |
#get_query_result_docs(query_obj) ⇒ Object
send the query to Solr and get the SolrDocumentList from the response
29 30 31 32 |
# File 'lib/solrj_wrapper.rb', line 29 def get_query_result_docs(query_obj) response = @http_solr_server.query(query_obj) response.getResults end |
#replace_field_values(solr_input_doc, fld_name, val_array) ⇒ Object
given a SolrInputDocument, replace all the values of the field with the new values.
If the values to be added are an empty array, the field will be removed.
If the field doesn't exist in the document, then it will be created (if the value array isn't empty)
67 68 69 70 |
# File 'lib/solrj_wrapper.rb', line 67 def replace_field_values(solr_input_doc, fld_name, val_array) solr_input_doc.removeField(fld_name) add_vals_to_fld(solr_input_doc, fld_name, val_array) end |