psq-dm-xapian 0.3.1 → 0.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. data/lib/dm-xapian/merbtasks.rb +61 -0
  2. metadata +2 -1
@@ -0,0 +1,61 @@
1
+ namespace :xapian do
2
+ # Parameters - specify "flush=true" to save changes to the Xapian database
3
+ # after each model that is updated. This is safer, but slower. Specify
4
+ # "verbose=true" to print model name as it is run.
5
+ desc 'Updates Xapian search index with changes to models since last call'
6
+ task(:update_index => [:merb_env]) do
7
+ # require 'ruby-debug'
8
+ # Debugger.start
9
+ # Debugger.settings[:autoeval] = true if Debugger.respond_to?(:settings)
10
+
11
+ ActsAsXapian.configure(Merb.env||'development', Merb.root)
12
+ ActsAsXapian.update_index(ENV['flush'] ? true : false, ENV['verbose'] ? true : false)
13
+ end
14
+
15
+ # Parameters - specify 'models="PublicBody User"' to say which models
16
+ # you index with Xapian.
17
+ # This totally rebuilds the database, so you will want to restart any
18
+ # web server afterwards to make sure it gets the changes, rather than
19
+ # still pointing to the old deleted database. Specify "verbose=true" to
20
+ # print model name as it is run.
21
+ desc 'Completely rebuilds Xapian search index (must specify all models)'
22
+ task(:rebuild_index => [:merb_env]) do
23
+ # require 'ruby-debug'
24
+ # Debugger.start
25
+ # Debugger.settings[:autoeval] = true if Debugger.respond_to?(:settings)
26
+
27
+ raise "specify ALL your models with models=\"ModelName1 ModelName2\" as parameter" if ENV['models'].nil?
28
+ ActsAsXapian.configure(Merb.env||'development', Merb.root)
29
+ # Transform the array of model strings into an array of resource classes
30
+ # Only retain resources which have been indexed by Xapian
31
+ indexed_models = DataMapper::Resource.descendants.select { |m| m.include?(DataMapper::Xapian::InstanceMethods) }
32
+ models_for_rebuild = []
33
+ found_models = nil
34
+ ENV['models'].split(" ").each do |m_name|
35
+ found_models = indexed_models.select { |m| m.name == m_name }
36
+ unless found_models.empty?
37
+ models_for_rebuild << found_models.first
38
+ else
39
+ raise "The model name #{m_name} is either unknown to " +
40
+ "DataMapper or not indexed by Xapian"
41
+ end
42
+ end
43
+ ActsAsXapian.rebuild_index(models_for_rebuild, ENV['verbose'] ? true : false)
44
+ end
45
+
46
+ # Parameters - are models, query, offset, limit, sort_by_prefix,
47
+ # collapse_by_prefix
48
+ desc 'Run a query, return YAML of results'
49
+ task(:query => [:merb_env]) do
50
+ ActsAsXapian.configure(Merb.env||'development', Merb.root)
51
+ raise "specify models=\"ModelName1 ModelName2\" as parameter" if ENV['models'].nil?
52
+ raise "specify query=\"your terms\" as parameter" if ENV['query'].nil?
53
+ s = ActsAsXapian::Search.new(ENV['models'].split(" "),
54
+ ENV['query'],
55
+ :offset => (ENV['offset'] || 0), :limit => (ENV['limit'] || 10),
56
+ :sort_by_prefix => (ENV['sort_by_prefix'] || nil),
57
+ :collapse_by_prefix => (ENV['collapse_by_prefix'] || nil)
58
+ )
59
+ STDOUT.puts(s.results.to_yaml)
60
+ end
61
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: psq-dm-xapian
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.3.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joshaven Potter, Pascal Belloncle
@@ -39,6 +39,7 @@ files:
39
39
  - Rakefile
40
40
  - TODO
41
41
  - lib/dm-xapian.rb
42
+ - lib/dm-xapian/merbtasks.rb
42
43
  - SETUP.txt
43
44
  - CHANGES.txt
44
45
  has_rdoc: true