xapian_db 1.3.2 → 1.3.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: e2a9d352e0fa6f589c5296ea5ed0c25c050595c0
4
+ data.tar.gz: 359d8dd4cfc388bafe0fba2348ddd1a588ded103
5
+ SHA512:
6
+ metadata.gz: 315ca9a190b3d69b17ee58c9a768842a9fa6b57b7a2fcaf6e58dde4fd6ce1881103efb63d4247ea2d011d805229febf5a92220abbcbcbedd0fca624f976a7c9b
7
+ data.tar.gz: 7c87c96b7e63d2ae451ef5b7d7630ce4a9c8a12da80a9faac226983c27dd66da8b4deec50c990712e80a68d40cf2b0c50ed0bb92b7aa1a0bafbcc73a9426838e
data/CHANGELOG.md CHANGED
@@ -1,3 +1,13 @@
1
+ ##1.3.3 (June 23th, 2013)
2
+
3
+ Changes:
4
+
5
+ - xapian query parser flags are now configurable (see README)
6
+
7
+ Breaking Changes:
8
+
9
+ - enable_phrase_search config option is no longer supported (use config.enable_query_flag Xapian::QueryParser::FLAG_PHRASE instead)
10
+
1
11
  ##1.3.2 (April 10th, 2013)
2
12
 
3
13
  Changes:
data/README.rdoc CHANGED
@@ -1,14 +1,5 @@
1
1
  = XapianDb
2
2
 
3
- {<img src="https://secure.travis-ci.org/garaio/xapian_db.png" />}[http://travis-ci.org/garaio/xapian_db]
4
-
5
- == Important Information
6
-
7
- Version 1.3 does not support YAML serialization for attributes anymore. If you don't apply a type information for an attribute (like attribute :birth, as: :date) in your blueprint,
8
- the attribute gets stored as a string. The new preferred type for complex attributes is JSON. Why the change? We were experiencing a unacceptable performance hit when we switched from Syck to Psych. The new philosophy for blueprints is therefore explicit type information. lib/type_codec.rb contains the most common codecs and of course, you can add your own (see examples/custom_serialization.rb).
9
-
10
- <b>Please note: You may want to fine tune your blueprints and you MUST rebuild your xapian index when switching to version 1.3</b>
11
-
12
3
  == What's in the box?
13
4
 
14
5
  XapianDb is a ruby gem that combines features of nosql databases and fulltext indexing into one piece. The result: Rich documents and very fast queries. It is based on {Xapian}[http://xapian.org/], an efficient and powerful indexing library.
@@ -73,6 +64,7 @@ You can override these defaults by placing a config file named 'xapian_db.yml' i
73
64
  adapter: datamapper # Avaliable adapters: :active_record, :datamapper
74
65
  language: de # Global language; can be overridden for specific blueprints
75
66
  term_min_length: 2 # Ignore single character terms
67
+ enable_query_flags: FLAG_PHRASE, FLAG_SPELLING_CORRECTION
76
68
 
77
69
  development:
78
70
  database: db/xapian_db/development
@@ -91,8 +83,18 @@ You can override these defaults by placing a config file named 'xapian_db.yml' i
91
83
  - adapter: :active_record|:datamapper, default: :active_record
92
84
  - language: any iso language code, default: :none (activates spelling corrections, stemmer and stop words if an iso language code ist set)
93
85
  - term_min_length: <n>, default: 1 (do not index terms shorter than n)
94
- - enable_phrase_search: true|false, default: false (see the xapian docs for an intro to phrase searching)
95
86
  - term_splitter_count: <n>, default: 0 (see chapter Term Splitting)
87
+ - enable_query_flags: <list of flags, separated by colons>
88
+ - disable_query_flags: <list of flags, separated by colons>
89
+
90
+ The following query flags are enabled by default:
91
+
92
+ - FLAG_WILDCARD
93
+ - FLAG_BOOLEAN
94
+ - FLAG_BOOLEAN_ANY_CASE
95
+ - FLAG_SPELLING_CORRECTION
96
+
97
+ See the xapian docs for all available query flags
96
98
 
97
99
  If you do not configure settings for an environment in this file, xapian_db applies the defaults.
98
100
 
@@ -248,7 +250,7 @@ You can query objects of a specific class:
248
250
 
249
251
  results = Person.search "name:Foo"
250
252
 
251
- You can search for exact phrases:
253
+ You can search for exact phrases (if the query flag is turned on):
252
254
 
253
255
  results = XapianDb.search('"this exact sentence"')
254
256
 
@@ -53,21 +53,25 @@ module XapianDb
53
53
  @config.instance_variable_get("@_term_min_length") || 1
54
54
  end
55
55
 
56
- def phrase_search_enabled?
57
- @config.instance_variable_get("@_phrase_search_enabled") || false
58
- end
59
-
60
56
  def term_splitter_count
61
57
  @config.instance_variable_get("@_term_splitter_count") || 0
62
58
  end
59
+
60
+ def query_flags
61
+ @config.instance_variable_get("@_enabled_query_flags") || [ Xapian::QueryParser::FLAG_WILDCARD,
62
+ Xapian::QueryParser::FLAG_BOOLEAN,
63
+ Xapian::QueryParser::FLAG_BOOLEAN_ANY_CASE,
64
+ Xapian::QueryParser::FLAG_SPELLING_CORRECTION
65
+ ]
66
+ end
63
67
  end
64
68
 
65
69
  # ---------------------------------------------------------------------------------
66
70
  # DSL methods
67
71
  # ---------------------------------------------------------------------------------
68
72
 
69
- attr_reader :_database, :_adapter, :_writer, :_beanstalk_daemon, :_resque_queue, :_stemmer, :_stopper, :_term_min_length,
70
- :_phrase_search_enabled, :_term_splitter_count
73
+ attr_reader :_database, :_adapter, :_writer, :_beanstalk_daemon, :_resque_queue, :_stemmer, :_stopper,
74
+ :_term_min_length, :_term_splitter_count, :_enabled_query_flags
71
75
 
72
76
  # Set the global database to use
73
77
  # @param [String] path The path to the database. Either apply a file sytem path or :memory
@@ -153,19 +157,20 @@ module XapianDb
153
157
  @_term_min_length = length
154
158
  end
155
159
 
156
- # Enable phrase search support ("search this exact sentence")
157
- def enable_phrase_search
158
- @_phrase_search_enabled = true
160
+ def term_splitter_count(count)
161
+ @_term_splitter_count = count
159
162
  end
160
163
 
161
- # Disable phrase search support ("search this exact sentence")
162
- def disable_phrase_search
163
- @_phrase_search_enabled = false
164
+ def enable_query_flag(flag)
165
+ @_enabled_query_flags ||= []
166
+ @_enabled_query_flags << flag
167
+ @_enabled_query_flags.uniq!
164
168
  end
165
169
 
166
- def term_splitter_count(count)
167
- @_term_splitter_count = count
170
+ def disable_query_flag(flag)
171
+ @_enabled_query_flags ||= []
172
+ @_enabled_query_flags.delete flag
168
173
  end
169
- end
170
174
 
175
+ end
171
176
  end
@@ -17,11 +17,7 @@ module XapianDb
17
17
 
18
18
  # Set the parser options
19
19
  @query_flags = 0
20
- @query_flags |= Xapian::QueryParser::FLAG_WILDCARD # enable wildcards
21
- @query_flags |= Xapian::QueryParser::FLAG_BOOLEAN # enable boolean operators
22
- @query_flags |= Xapian::QueryParser::FLAG_BOOLEAN_ANY_CASE # enable case insensitive boolean operators
23
- @query_flags |= Xapian::QueryParser::FLAG_SPELLING_CORRECTION # enable spelling corrections
24
- @query_flags |= Xapian::QueryParser::FLAG_PHRASE if XapianDb::Config.phrase_search_enabled?
20
+ XapianDb::Config.query_flags.each { |flag| @query_flags |= flag }
25
21
  end
26
22
 
27
23
  # Parse an expression
@@ -51,12 +51,9 @@ module XapianDb
51
51
  config.resque_queue @resque_queue
52
52
  config.language @language.try(:to_sym)
53
53
  config.term_min_length @term_min_length
54
- if @enable_phrase_search
55
- config.enable_phrase_search
56
- else
57
- config.disable_phrase_search
58
- end
59
54
  config.term_splitter_count @term_splitter_count
55
+ @enabled_query_flags.each { |flag| config.enable_query_flag flag }
56
+ @disabled_query_flags.each { |flag| config.disable_query_flag flag }
60
57
  end
61
58
 
62
59
  end
@@ -81,6 +78,24 @@ module XapianDb
81
78
  @term_min_length = env_config["term_min_length"]
82
79
  @enable_phrase_search = env_config["enable_phrase_search"] == true
83
80
  @term_splitter_count = env_config["term_splitter_count"] || 0
81
+
82
+ if env_config["enabled_query_flags"]
83
+ @enabled_query_flags = []
84
+ env_config["enabled_query_flags"].split(",").each { |flag_name| @enabled_query_flags << const_get("Xapian::QueryParser::%s" % flag_name.strip) }
85
+ else
86
+ @enabled_query_flags = [ Xapian::QueryParser::FLAG_WILDCARD,
87
+ Xapian::QueryParser::FLAG_BOOLEAN,
88
+ Xapian::QueryParser::FLAG_BOOLEAN_ANY_CASE,
89
+ Xapian::QueryParser::FLAG_SPELLING_CORRECTION
90
+ ]
91
+ end
92
+
93
+ if env_config["disabled_query_flags"]
94
+ @disabled_query_flags = []
95
+ env_config["disabled_query_flags"].split(",").each { |flag_name| @disabled_query_flags << const_get("Xapian::QueryParser::%s" % flag_name.strip) }
96
+ else
97
+ @disabled_query_flags = []
98
+ end
84
99
  end
85
100
 
86
101
  # set default config options
@@ -92,7 +107,11 @@ module XapianDb
92
107
  @term_min_length = 1
93
108
  @enable_phrase_search = false
94
109
  @term_splitter_count = 0
110
+ @enabled_query_flags = [ Xapian::QueryParser::FLAG_WILDCARD,
111
+ Xapian::QueryParser::FLAG_BOOLEAN,
112
+ Xapian::QueryParser::FLAG_BOOLEAN_ANY_CASE,
113
+ Xapian::QueryParser::FLAG_SPELLING_CORRECTION
114
+ ]
95
115
  end
96
-
97
116
  end
98
117
  end
metadata CHANGED
@@ -1,174 +1,153 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: xapian_db
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.2
5
- prerelease:
4
+ version: 1.3.3
6
5
  platform: ruby
7
6
  authors:
8
7
  - Gernot Kogler
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-04-10 00:00:00.000000000 Z
11
+ date: 2013-06-23 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: daemons
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
- - - ! '>='
17
+ - - '>='
20
18
  - !ruby/object:Gem::Version
21
19
  version: 1.0.10
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
- - - ! '>='
24
+ - - '>='
28
25
  - !ruby/object:Gem::Version
29
26
  version: 1.0.10
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: guard
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
- - - ! '>='
31
+ - - '>='
36
32
  - !ruby/object:Gem::Version
37
33
  version: '0'
38
34
  type: :development
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
- - - ! '>='
38
+ - - '>='
44
39
  - !ruby/object:Gem::Version
45
40
  version: '0'
46
41
  - !ruby/object:Gem::Dependency
47
42
  name: rspec
48
43
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
44
  requirements:
51
- - - ! '>='
45
+ - - '>='
52
46
  - !ruby/object:Gem::Version
53
47
  version: 2.3.1
54
48
  type: :development
55
49
  prerelease: false
56
50
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
51
  requirements:
59
- - - ! '>='
52
+ - - '>='
60
53
  - !ruby/object:Gem::Version
61
54
  version: 2.3.1
62
55
  - !ruby/object:Gem::Dependency
63
56
  name: simplecov
64
57
  requirement: !ruby/object:Gem::Requirement
65
- none: false
66
58
  requirements:
67
- - - ! '>='
59
+ - - '>='
68
60
  - !ruby/object:Gem::Version
69
61
  version: 0.3.7
70
62
  type: :development
71
63
  prerelease: false
72
64
  version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
65
  requirements:
75
- - - ! '>='
66
+ - - '>='
76
67
  - !ruby/object:Gem::Version
77
68
  version: 0.3.7
78
69
  - !ruby/object:Gem::Dependency
79
70
  name: beanstalk-client
80
71
  requirement: !ruby/object:Gem::Requirement
81
- none: false
82
72
  requirements:
83
- - - ! '>='
73
+ - - '>='
84
74
  - !ruby/object:Gem::Version
85
75
  version: 1.1.0
86
76
  type: :development
87
77
  prerelease: false
88
78
  version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
79
  requirements:
91
- - - ! '>='
80
+ - - '>='
92
81
  - !ruby/object:Gem::Version
93
82
  version: 1.1.0
94
83
  - !ruby/object:Gem::Dependency
95
84
  name: rake
96
85
  requirement: !ruby/object:Gem::Requirement
97
- none: false
98
86
  requirements:
99
- - - ! '>='
87
+ - - '>='
100
88
  - !ruby/object:Gem::Version
101
89
  version: '0'
102
90
  type: :development
103
91
  prerelease: false
104
92
  version_requirements: !ruby/object:Gem::Requirement
105
- none: false
106
93
  requirements:
107
- - - ! '>='
94
+ - - '>='
108
95
  - !ruby/object:Gem::Version
109
96
  version: '0'
110
97
  - !ruby/object:Gem::Dependency
111
98
  name: ruby-progressbar
112
99
  requirement: !ruby/object:Gem::Requirement
113
- none: false
114
100
  requirements:
115
- - - ! '>='
101
+ - - '>='
116
102
  - !ruby/object:Gem::Version
117
103
  version: '0'
118
104
  type: :development
119
105
  prerelease: false
120
106
  version_requirements: !ruby/object:Gem::Requirement
121
- none: false
122
107
  requirements:
123
- - - ! '>='
108
+ - - '>='
124
109
  - !ruby/object:Gem::Version
125
110
  version: '0'
126
111
  - !ruby/object:Gem::Dependency
127
112
  name: resque
128
113
  requirement: !ruby/object:Gem::Requirement
129
- none: false
130
114
  requirements:
131
- - - ! '>='
115
+ - - '>='
132
116
  - !ruby/object:Gem::Version
133
117
  version: 1.19.0
134
118
  type: :development
135
119
  prerelease: false
136
120
  version_requirements: !ruby/object:Gem::Requirement
137
- none: false
138
121
  requirements:
139
- - - ! '>='
122
+ - - '>='
140
123
  - !ruby/object:Gem::Version
141
124
  version: 1.19.0
142
125
  - !ruby/object:Gem::Dependency
143
126
  name: xapian-ruby
144
127
  requirement: !ruby/object:Gem::Requirement
145
- none: false
146
128
  requirements:
147
- - - ! '>='
129
+ - - '>='
148
130
  - !ruby/object:Gem::Version
149
131
  version: 1.2.7.1
150
132
  type: :development
151
133
  prerelease: false
152
134
  version_requirements: !ruby/object:Gem::Requirement
153
- none: false
154
135
  requirements:
155
- - - ! '>='
136
+ - - '>='
156
137
  - !ruby/object:Gem::Version
157
138
  version: 1.2.7.1
158
139
  - !ruby/object:Gem::Dependency
159
140
  name: pry-rails
160
141
  requirement: !ruby/object:Gem::Requirement
161
- none: false
162
142
  requirements:
163
- - - ! '>='
143
+ - - '>='
164
144
  - !ruby/object:Gem::Version
165
145
  version: '0'
166
146
  type: :development
167
147
  prerelease: false
168
148
  version_requirements: !ruby/object:Gem::Requirement
169
- none: false
170
149
  requirements:
171
- - - ! '>='
150
+ - - '>='
172
151
  - !ruby/object:Gem::Version
173
152
  version: '0'
174
153
  description: XapianDb is a ruby gem that combines features of nosql databases and
@@ -228,6 +207,7 @@ files:
228
207
  - Rakefile
229
208
  homepage: https://github.com/garaio/xapian_db
230
209
  licenses: []
210
+ metadata: {}
231
211
  post_install_message:
232
212
  rdoc_options:
233
213
  - --line-numbers
@@ -239,25 +219,20 @@ rdoc_options:
239
219
  require_paths:
240
220
  - lib
241
221
  required_ruby_version: !ruby/object:Gem::Requirement
242
- none: false
243
222
  requirements:
244
- - - ! '>='
223
+ - - '>='
245
224
  - !ruby/object:Gem::Version
246
225
  version: '0'
247
- segments:
248
- - 0
249
- hash: -1707289322926959795
250
226
  required_rubygems_version: !ruby/object:Gem::Requirement
251
- none: false
252
227
  requirements:
253
- - - ! '>='
228
+ - - '>='
254
229
  - !ruby/object:Gem::Version
255
230
  version: 1.3.6
256
231
  requirements: []
257
232
  rubyforge_project:
258
- rubygems_version: 1.8.25
233
+ rubygems_version: 2.0.3
259
234
  signing_key:
260
- specification_version: 3
235
+ specification_version: 4
261
236
  summary: Ruby library to use a Xapian db as a key/value store with high performance
262
237
  fulltext search
263
238
  test_files: []