xapit 0.2.1 → 0.2.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.
data/CHANGELOG CHANGED
@@ -1,7 +1,15 @@
1
+ *0.2.2* (June 16th, 2009)
2
+
3
+ * performance improvements
4
+
5
+ * adding Xapit::Config#close_database method for convenience
6
+
7
+
1
8
  *0.2.1* (June 15th, 2009)
2
9
 
3
10
  * including Xapit::Membership into ActiveRecord when using gem
4
11
 
12
+
5
13
  *0.2.0* (June 12th, 2009)
6
14
 
7
15
  * sort numeric attributes properly
@@ -0,0 +1,61 @@
1
+ CHANGELOG
2
+ features/facets.feature
3
+ features/finding.feature
4
+ features/indexing.feature
5
+ features/sorting.feature
6
+ features/step_definitions/common_steps.rb
7
+ features/step_definitions/xapit_steps.rb
8
+ features/suggestions.feature
9
+ features/support/env.rb
10
+ features/support/xapit_helpers.rb
11
+ init.rb
12
+ install.rb
13
+ lib/xapit/adapters/abstract_adapter.rb
14
+ lib/xapit/adapters/active_record_adapter.rb
15
+ lib/xapit/adapters/data_mapper_adapter.rb
16
+ lib/xapit/collection.rb
17
+ lib/xapit/config.rb
18
+ lib/xapit/facet.rb
19
+ lib/xapit/facet_blueprint.rb
20
+ lib/xapit/facet_option.rb
21
+ lib/xapit/index_blueprint.rb
22
+ lib/xapit/indexers/abstract_indexer.rb
23
+ lib/xapit/indexers/classic_indexer.rb
24
+ lib/xapit/indexers/simple_indexer.rb
25
+ lib/xapit/membership.rb
26
+ lib/xapit/query.rb
27
+ lib/xapit/query_parsers/abstract_query_parser.rb
28
+ lib/xapit/query_parsers/classic_query_parser.rb
29
+ lib/xapit/query_parsers/simple_query_parser.rb
30
+ lib/xapit/rake_tasks.rb
31
+ lib/xapit.rb
32
+ LICENSE
33
+ Manifest
34
+ rails_generators/xapit/templates/setup_xapit.rb
35
+ rails_generators/xapit/templates/xapit.rake
36
+ rails_generators/xapit/USAGE
37
+ rails_generators/xapit/xapit_generator.rb
38
+ Rakefile
39
+ README.rdoc
40
+ spec/spec_helper.rb
41
+ spec/xapit/adapters/active_record_adapter_spec.rb
42
+ spec/xapit/adapters/data_mapper_adapter_spec.rb
43
+ spec/xapit/collection_spec.rb
44
+ spec/xapit/config_spec.rb
45
+ spec/xapit/facet_blueprint_spec.rb
46
+ spec/xapit/facet_option_spec.rb
47
+ spec/xapit/facet_spec.rb
48
+ spec/xapit/index_blueprint_spec.rb
49
+ spec/xapit/indexers/abstract_indexer_spec.rb
50
+ spec/xapit/indexers/classic_indexer_spec.rb
51
+ spec/xapit/indexers/simple_indexer_spec.rb
52
+ spec/xapit/membership_spec.rb
53
+ spec/xapit/query_parsers/abstract_query_parser_spec.rb
54
+ spec/xapit/query_parsers/classic_query_parser_spec.rb
55
+ spec/xapit/query_parsers/simple_query_parser_spec.rb
56
+ spec/xapit/query_spec.rb
57
+ spec/xapit_member.rb
58
+ tasks/spec.rb
59
+ tasks/xapit.rake
60
+ TODO
61
+ uninstall.rb
@@ -77,8 +77,8 @@ You may want to trigger this via a cron job on a recurring schedule (i.e. every
77
77
 
78
78
  There are two projects in development to help improve this reindexing.
79
79
 
80
- http://github.com/ryanb/xapit-sync/tree/master
81
- http://github.com/ryanb/xapit-server/tree/master
80
+ * http://github.com/ryanb/xapit-sync/tree/master
81
+ * http://github.com/ryanb/xapit-server/tree/master
82
82
 
83
83
 
84
84
  == Search
data/Rakefile CHANGED
@@ -2,7 +2,7 @@ require 'rubygems'
2
2
  require 'rake'
3
3
  require 'echoe'
4
4
 
5
- Echoe.new('xapit', '0.2.1') do |p|
5
+ Echoe.new('xapit', '0.2.2') do |p|
6
6
  p.summary = "Ruby library for interacting with Xapian, a full text search engine."
7
7
  p.description = "Ruby library for interacting with Xapian, a full text search engine."
8
8
  p.url = "http://github.com/ryanb/xapit"
@@ -141,14 +141,16 @@ module Xapit
141
141
  @query_parser.spelling_suggestion
142
142
  end
143
143
 
144
- private
145
-
144
+ # All Xapit::Facet objects, even if they do not include options.
145
+ # Usually you'll want to call Collection#facets
146
146
  def all_facets
147
147
  @query_parser.member_class.xapit_index_blueprint.facets.map do |facet_blueprint|
148
148
  Facet.new(facet_blueprint, @query_parser.query, @query_parser.facet_identifiers)
149
149
  end
150
150
  end
151
151
 
152
+ private
153
+
152
154
  def matchset(options = {})
153
155
  @query_parser.query.matchset(options)
154
156
  end
@@ -70,6 +70,15 @@ module Xapit
70
70
  @database = nil
71
71
  @writable_database = nil
72
72
  end
73
+
74
+ # Clear the current database from memory. Unfortunately this is a hack because
75
+ # Xapian doesn't provide a "close" method on the database. We just have to hope
76
+ # no other references are lying around.
77
+ def close_database
78
+ @database = nil
79
+ @writable_database = nil
80
+ GC.start
81
+ end
73
82
  end
74
83
  end
75
84
  end
@@ -20,16 +20,21 @@ module Xapit
20
20
  @existing_facet_identifiers = existing_facet_identifiers
21
21
  end
22
22
 
23
- # Xapit::FacetOption objects for this facet. This only lists the ones which match the current query.
23
+ # Xapit::FacetOption objects for this facet which match the current query.
24
+ # Hides options which don't narrow down results.
24
25
  def options
26
+ unfiltered_options.select { |o| o.count < @query.count }
27
+ end
28
+
29
+ # Xapit::FacetOption objects for this facet which match the current query.
30
+ # Includes options which may not narrow down result set.
31
+ def unfiltered_options
25
32
  matching_identifiers.map do |identifier, count|
26
- if count < @query.count
27
- option = FacetOption.find(identifier)
28
- if option.facet.attribute == @blueprint.attribute
29
- option.count = count
30
- option.existing_facet_identifiers = @existing_facet_identifiers
31
- option
32
- end
33
+ option = FacetOption.find(identifier)
34
+ if option.facet.attribute == @blueprint.attribute
35
+ option.count = count
36
+ option.existing_facet_identifiers = @existing_facet_identifiers
37
+ option
33
38
  end
34
39
  end.compact.sort_by(&:name)
35
40
  end
@@ -43,12 +43,13 @@ module Xapit
43
43
 
44
44
  def count
45
45
  # a bit of a hack to get more accurate count estimate
46
- matchset(:limit => Config.database.doccount).matches_estimated
46
+ @count ||= matchset(:limit => Config.database.doccount).matches_estimated
47
47
  end
48
48
 
49
49
  private
50
50
 
51
51
  def merge_query(operator, *args)
52
+ @count = nil
52
53
  @xapian_query = Xapian::Query.new(xapian_operator(operator), @xapian_query, build_xapian_query(*args)) unless args.first.blank?
53
54
  self
54
55
  end
@@ -2,15 +2,15 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{xapit}
5
- s.version = "0.2.1"
5
+ s.version = "0.2.2"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["Ryan Bates"]
9
- s.date = %q{2009-06-15}
9
+ s.date = %q{2009-06-16}
10
10
  s.description = %q{Ruby library for interacting with Xapian, a full text search engine.}
11
11
  s.email = %q{ryan (at) railscasts (dot) com}
12
12
  s.extra_rdoc_files = ["CHANGELOG", "lib/xapit/adapters/abstract_adapter.rb", "lib/xapit/adapters/active_record_adapter.rb", "lib/xapit/adapters/data_mapper_adapter.rb", "lib/xapit/collection.rb", "lib/xapit/config.rb", "lib/xapit/facet.rb", "lib/xapit/facet_blueprint.rb", "lib/xapit/facet_option.rb", "lib/xapit/index_blueprint.rb", "lib/xapit/indexers/abstract_indexer.rb", "lib/xapit/indexers/classic_indexer.rb", "lib/xapit/indexers/simple_indexer.rb", "lib/xapit/membership.rb", "lib/xapit/query.rb", "lib/xapit/query_parsers/abstract_query_parser.rb", "lib/xapit/query_parsers/classic_query_parser.rb", "lib/xapit/query_parsers/simple_query_parser.rb", "lib/xapit/rake_tasks.rb", "lib/xapit.rb", "LICENSE", "README.rdoc", "tasks/spec.rb", "tasks/xapit.rake", "TODO"]
13
- s.files = ["CHANGELOG", "features/facets.feature", "features/finding.feature", "features/indexing.feature", "features/sorting.feature", "features/step_definitions/common_steps.rb", "features/step_definitions/xapit_steps.rb", "features/suggestions.feature", "features/support/env.rb", "features/support/xapit_helpers.rb", "init.rb", "install.rb", "lib/xapit/adapters/abstract_adapter.rb", "lib/xapit/adapters/active_record_adapter.rb", "lib/xapit/adapters/data_mapper_adapter.rb", "lib/xapit/collection.rb", "lib/xapit/config.rb", "lib/xapit/facet.rb", "lib/xapit/facet_blueprint.rb", "lib/xapit/facet_option.rb", "lib/xapit/index_blueprint.rb", "lib/xapit/indexers/abstract_indexer.rb", "lib/xapit/indexers/classic_indexer.rb", "lib/xapit/indexers/simple_indexer.rb", "lib/xapit/membership.rb", "lib/xapit/query.rb", "lib/xapit/query_parsers/abstract_query_parser.rb", "lib/xapit/query_parsers/classic_query_parser.rb", "lib/xapit/query_parsers/simple_query_parser.rb", "lib/xapit/rake_tasks.rb", "lib/xapit.rb", "LICENSE", "rails_generators/xapit/templates/setup_xapit.rb", "rails_generators/xapit/templates/xapit.rake", "rails_generators/xapit/USAGE", "rails_generators/xapit/xapit_generator.rb", "Rakefile", "README.rdoc", "spec/spec_helper.rb", "spec/xapit/adapters/active_record_adapter_spec.rb", "spec/xapit/adapters/data_mapper_adapter_spec.rb", "spec/xapit/collection_spec.rb", "spec/xapit/config_spec.rb", "spec/xapit/facet_blueprint_spec.rb", "spec/xapit/facet_option_spec.rb", "spec/xapit/facet_spec.rb", "spec/xapit/index_blueprint_spec.rb", "spec/xapit/indexers/abstract_indexer_spec.rb", "spec/xapit/indexers/classic_indexer_spec.rb", "spec/xapit/indexers/simple_indexer_spec.rb", "spec/xapit/membership_spec.rb", "spec/xapit/query_parsers/abstract_query_parser_spec.rb", "spec/xapit/query_parsers/classic_query_parser_spec.rb", "spec/xapit/query_parsers/simple_query_parser_spec.rb", "spec/xapit/query_spec.rb", "spec/xapit_member.rb", "tasks/spec.rb", "tasks/xapit.rake", "TODO", "uninstall.rb", "xapit.gemspec"]
13
+ s.files = ["CHANGELOG", "features/facets.feature", "features/finding.feature", "features/indexing.feature", "features/sorting.feature", "features/step_definitions/common_steps.rb", "features/step_definitions/xapit_steps.rb", "features/suggestions.feature", "features/support/env.rb", "features/support/xapit_helpers.rb", "init.rb", "install.rb", "lib/xapit/adapters/abstract_adapter.rb", "lib/xapit/adapters/active_record_adapter.rb", "lib/xapit/adapters/data_mapper_adapter.rb", "lib/xapit/collection.rb", "lib/xapit/config.rb", "lib/xapit/facet.rb", "lib/xapit/facet_blueprint.rb", "lib/xapit/facet_option.rb", "lib/xapit/index_blueprint.rb", "lib/xapit/indexers/abstract_indexer.rb", "lib/xapit/indexers/classic_indexer.rb", "lib/xapit/indexers/simple_indexer.rb", "lib/xapit/membership.rb", "lib/xapit/query.rb", "lib/xapit/query_parsers/abstract_query_parser.rb", "lib/xapit/query_parsers/classic_query_parser.rb", "lib/xapit/query_parsers/simple_query_parser.rb", "lib/xapit/rake_tasks.rb", "lib/xapit.rb", "LICENSE", "Manifest", "rails_generators/xapit/templates/setup_xapit.rb", "rails_generators/xapit/templates/xapit.rake", "rails_generators/xapit/USAGE", "rails_generators/xapit/xapit_generator.rb", "Rakefile", "README.rdoc", "spec/spec_helper.rb", "spec/xapit/adapters/active_record_adapter_spec.rb", "spec/xapit/adapters/data_mapper_adapter_spec.rb", "spec/xapit/collection_spec.rb", "spec/xapit/config_spec.rb", "spec/xapit/facet_blueprint_spec.rb", "spec/xapit/facet_option_spec.rb", "spec/xapit/facet_spec.rb", "spec/xapit/index_blueprint_spec.rb", "spec/xapit/indexers/abstract_indexer_spec.rb", "spec/xapit/indexers/classic_indexer_spec.rb", "spec/xapit/indexers/simple_indexer_spec.rb", "spec/xapit/membership_spec.rb", "spec/xapit/query_parsers/abstract_query_parser_spec.rb", "spec/xapit/query_parsers/classic_query_parser_spec.rb", "spec/xapit/query_parsers/simple_query_parser_spec.rb", "spec/xapit/query_spec.rb", "spec/xapit_member.rb", "tasks/spec.rb", "tasks/xapit.rake", "TODO", "uninstall.rb", "xapit.gemspec"]
14
14
  s.homepage = %q{http://github.com/ryanb/xapit}
15
15
  s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Xapit", "--main", "README.rdoc"]
16
16
  s.require_paths = ["lib"]
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: xapit
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan Bates
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-06-15 00:00:00 -07:00
12
+ date: 2009-06-16 00:00:00 -07:00
13
13
  default_executable:
14
14
  dependencies: []
15
15
 
@@ -78,6 +78,7 @@ files:
78
78
  - lib/xapit/rake_tasks.rb
79
79
  - lib/xapit.rb
80
80
  - LICENSE
81
+ - Manifest
81
82
  - rails_generators/xapit/templates/setup_xapit.rb
82
83
  - rails_generators/xapit/templates/xapit.rake
83
84
  - rails_generators/xapit/USAGE