Sha256: 8aa76cdaf1f585026435cd912e922e7b9696985e9ee78d5e7d95531c00ab7877
Contents?: true
Size: 1.63 KB
Versions: 3
Compression:
Stored size: 1.63 KB
Contents
module ActiveLucene class Document PER_PAGE = 20 attr_reader :attributes, :id, :highlight def initialize(attributes = {}) @attributes = attributes.stringify_keys @highlight = @attributes.delete('highlight') @id = @attributes.delete('id') || object_id.to_s end def save document = org.apache.lucene.document.Document.new _all = [] @attributes.each do |key, value| document.add Field.new key, value, Field::Store::YES, Field::Index::ANALYZED _all << value end document.add Field.new ID, @id, Field::Store::YES, Field::Index::NOT_ANALYZED document.add Field.new ALL, _all.join(' '), Field::Store::NO, Field::Index::ANALYZED Writer.write document end def destroy Writer.delete @id end def update_attributes(new_attributes) destroy self.class.create! attributes.merge(new_attributes.merge(:id => @id)) end alias :update_attributes! :update_attributes def to_param @id end def self.create!(attributes) returning new(attributes) do |model| model.save end end def self.find(param) if param.instance_of? Symbol search :all else search(:id => param).first end end def self.search(param) search = Searcher.search(param) results = search.attributes.map { |attributes| new attributes } results.instance_eval "def total_pages; #{search.total_pages}; end;" results end def self.columns [] end private def method_missing(method_name, *args) @attributes[method_name.to_s] end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
active_lucene-0.5.2 | lib/active_lucene/document.rb |
active_lucene-0.5.1 | lib/active_lucene/document.rb |
active_lucene-0.5.0 | lib/active_lucene/document.rb |