Module: PdfSearch

Defined in:
lib/pdf_dir.rb,
lib/pdf_search.rb

Defined Under Namespace

Classes: PdfDir, PdfIndex, WebServer

Constant Summary collapse

ElasticSearchClient =
Elasticsearch::Client.new log: true, host: ENV['ELASTICSEARCH_URL']
GemDir =
[File.dirname(__FILE__), '..']

Class Method Summary collapse

Class Method Details

.create_elasticsearch_indexObject



27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# File 'lib/pdf_search.rb', line 27

def self.create_elasticsearch_index
  `curl -XPUT -H "Content-Type: application/json" http://localhost:9200/_all/_settings -d '{"index.blocks.read_only_allow_delete": null}'`

  ElasticSearchClient.indices.create(
    index: 'pdf_pages',
    body: {
      mappings: {
        document: {
          properties: {
            text: {
              type: 'text'
            }
          }
        }
      }
    }
  )

  return true

rescue Elasticsearch::Transport::Transport::Errors::BadRequest => e
  if /"type":"(?:resource|index)_already_exists_exception"/ =~ e.message
    return false
  else
    raise e
  end
end

.relative_to_gem_path(path_array) ⇒ Object



13
14
15
# File 'lib/pdf_search.rb', line 13

def self.relative_to_gem_path(path_array)
  File.expand_path(File.join(GemDir + path_array))
end

.start_elasticsearchObject



23
24
25
# File 'lib/pdf_search.rb', line 23

def self.start_elasticsearch
  `sudo service elasticsearch start`
end

.start_webserverObject



17
18
19
20
21
# File 'lib/pdf_search.rb', line 17

def self.start_webserver
  web_server = WebServer.new
  web_server.start
  return web_server.daemon.pid.pid
end

.wrap_elastic_requestObject



55
56
57
58
# File 'lib/pdf_search.rb', line 55

def self.wrap_elastic_request
`curl -XPUT -H "Content-Type: application/json" http://localhost:9200/_all/_settings -d '{"index.blocks.read_only_allow_delete": null}'`
  yield
end