Class: RDig::Index::Indexer

Inherits:
Object
  • Object
show all
Includes:
MonitorMixin
Defined in:
lib/rdig/index.rb

Overview

used by the crawler to build the ferret index

Instance Method Summary collapse

Constructor Details

#initialize(settings) ⇒ Indexer

Returns a new instance of Indexer.



8
9
10
11
12
13
14
15
# File 'lib/rdig/index.rb', line 8

def initialize(settings)
  @config = settings
  @index_writer = Ferret::Index::IndexWriter.new(
                    :path     => settings.path,
                    :create   => settings.create,
                    :analyzer => settings.analyzer)
  super() # scary, MonitorMixin won't initialize if we don't call super() here (parens matter)
end

Instance Method Details

#add_to_index(document) ⇒ Object Also known as: <<



17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/rdig/index.rb', line 17

def add_to_index(document)
  RDig.logger.debug "add to index: #{document.uri.to_s}"
  @config.rewrite_uri.call(document.uri) if @config.rewrite_uri
  # all stored and tokenized, should be ferret defaults
  doc = { 
    :url   => document.uri.to_s,
    :title => document.title,
    :data  => document.body
  }
  synchronize do
    @index_writer << doc
  end
end

#closeObject



32
33
34
35
36
# File 'lib/rdig/index.rb', line 32

def close
  @index_writer.optimize
  @index_writer.close
  @index_writer = nil
end