thinking-sphinx 1.3.2 → 1.3.3

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 (32) hide show
  1. data/VERSION.yml +1 -1
  2. data/features/support/env.rb +2 -1
  3. data/lib/thinking_sphinx.rb +0 -1
  4. data/lib/thinking_sphinx/0.9.8.rb +3 -0
  5. data/lib/thinking_sphinx/0.9.9.rb +3 -0
  6. data/rails/init.rb +1 -1
  7. data/tasks/distribution.rb +3 -4
  8. metadata +24 -26
  9. data/vendor/after_commit/LICENSE +0 -20
  10. data/vendor/after_commit/README +0 -16
  11. data/vendor/after_commit/Rakefile +0 -22
  12. data/vendor/after_commit/init.rb +0 -8
  13. data/vendor/after_commit/lib/after_commit.rb +0 -45
  14. data/vendor/after_commit/lib/after_commit/active_record.rb +0 -114
  15. data/vendor/after_commit/lib/after_commit/connection_adapters.rb +0 -103
  16. data/vendor/after_commit/test/after_commit_test.rb +0 -53
  17. data/vendor/riddle/lib/riddle.rb +0 -30
  18. data/vendor/riddle/lib/riddle/client.rb +0 -635
  19. data/vendor/riddle/lib/riddle/client/filter.rb +0 -53
  20. data/vendor/riddle/lib/riddle/client/message.rb +0 -66
  21. data/vendor/riddle/lib/riddle/client/response.rb +0 -84
  22. data/vendor/riddle/lib/riddle/configuration.rb +0 -33
  23. data/vendor/riddle/lib/riddle/configuration/distributed_index.rb +0 -48
  24. data/vendor/riddle/lib/riddle/configuration/index.rb +0 -142
  25. data/vendor/riddle/lib/riddle/configuration/indexer.rb +0 -19
  26. data/vendor/riddle/lib/riddle/configuration/remote_index.rb +0 -17
  27. data/vendor/riddle/lib/riddle/configuration/searchd.rb +0 -25
  28. data/vendor/riddle/lib/riddle/configuration/section.rb +0 -43
  29. data/vendor/riddle/lib/riddle/configuration/source.rb +0 -23
  30. data/vendor/riddle/lib/riddle/configuration/sql_source.rb +0 -34
  31. data/vendor/riddle/lib/riddle/configuration/xml_source.rb +0 -28
  32. data/vendor/riddle/lib/riddle/controller.rb +0 -55
@@ -1,53 +0,0 @@
1
- module Riddle
2
- class Client
3
- # Used for querying Sphinx.
4
- class Filter
5
- attr_accessor :attribute, :values, :exclude
6
-
7
- # Attribute name, values (which can be an array or a range), and whether
8
- # the filter should be exclusive.
9
- def initialize(attribute, values, exclude=false)
10
- @attribute, @values, @exclude = attribute, values, exclude
11
- end
12
-
13
- def exclude?
14
- self.exclude
15
- end
16
-
17
- # Returns the message for this filter to send to the Sphinx service
18
- def query_message
19
- message = Message.new
20
-
21
- message.append_string self.attribute.to_s
22
- case self.values
23
- when Range
24
- if self.values.first.is_a?(Float) && self.values.last.is_a?(Float)
25
- message.append_int FilterTypes[:float_range]
26
- message.append_floats self.values.first, self.values.last
27
- else
28
- message.append_int FilterTypes[:range]
29
- message.append_ints self.values.first, self.values.last
30
- end
31
- when Array
32
- message.append_int FilterTypes[:values]
33
- message.append_int self.values.length
34
- # using to_f is a hack from the php client - to workaround 32bit
35
- # signed ints on x32 platforms
36
- message.append_ints *self.values.collect { |val|
37
- case val
38
- when TrueClass
39
- 1.0
40
- when FalseClass
41
- 0.0
42
- else
43
- val.to_f
44
- end
45
- }
46
- end
47
- message.append_int self.exclude? ? 1 : 0
48
-
49
- message.to_s
50
- end
51
- end
52
- end
53
- end
@@ -1,66 +0,0 @@
1
- module Riddle
2
- class Client
3
- # This class takes care of the translation of ints, strings and arrays to
4
- # the format required by the Sphinx service.
5
- class Message
6
- def initialize
7
- @message = ""
8
- @size_method = @message.respond_to?(:bytesize) ? :bytesize : :length
9
- end
10
-
11
- # Append raw data (only use if you know what you're doing)
12
- def append(*args)
13
- args.each { |arg| @message << arg }
14
- end
15
-
16
- # Append a string's length, then the string itself
17
- def append_string(str)
18
- string = str.respond_to?(:force_encoding) ?
19
- str.dup.force_encoding('ASCII-8BIT') : str
20
-
21
- @message << [string.send(@size_method)].pack('N') + string
22
- end
23
-
24
- # Append an integer
25
- def append_int(int)
26
- @message << [int].pack('N')
27
- end
28
-
29
- def append_64bit_int(int)
30
- @message << [int >> 32, int & 0xFFFFFFFF].pack('NN')
31
- end
32
-
33
- # Append a float
34
- def append_float(float)
35
- @message << [float].pack('f').unpack('L*').pack("N")
36
- end
37
-
38
- # Append multiple integers
39
- def append_ints(*ints)
40
- ints.each { |int| append_int(int) }
41
- end
42
-
43
- def append_64bit_ints(*ints)
44
- ints.each { |int| append_64bit_int(int) }
45
- end
46
-
47
- # Append multiple floats
48
- def append_floats(*floats)
49
- floats.each { |float| append_float(float) }
50
- end
51
-
52
- # Append an array of strings - first appends the length of the array,
53
- # then each item's length and value.
54
- def append_array(array)
55
- append_int(array.length)
56
-
57
- array.each { |item| append_string(item) }
58
- end
59
-
60
- # Returns the entire message
61
- def to_s
62
- @message
63
- end
64
- end
65
- end
66
- end
@@ -1,84 +0,0 @@
1
- module Riddle
2
- class Client
3
- # Used to interrogate responses from the Sphinx daemon. Keep in mind none
4
- # of the methods here check whether the data they're grabbing are what the
5
- # user expects - it just assumes the user knows what the data stream is
6
- # made up of.
7
- class Response
8
- # Create with the data to interpret
9
- def initialize(str)
10
- @str = str
11
- @marker = 0
12
- end
13
-
14
- # Return the next string value in the stream
15
- def next
16
- len = next_int
17
- result = @str[@marker, len]
18
- @marker += len
19
-
20
- return result
21
- end
22
-
23
- # Return the next integer value from the stream
24
- def next_int
25
- int = @str[@marker, 4].unpack('N*').first
26
- @marker += 4
27
-
28
- return int
29
- end
30
-
31
- def next_64bit_int
32
- high, low = @str[@marker, 8].unpack('N*N*')[0..1]
33
- @marker += 8
34
-
35
- return (high << 32) + low
36
- end
37
-
38
- # Return the next float value from the stream
39
- def next_float
40
- float = @str[@marker, 4].unpack('N*').pack('L').unpack('f*').first
41
- @marker += 4
42
-
43
- return float
44
- end
45
-
46
- # Returns an array of string items
47
- def next_array
48
- count = next_int
49
- items = []
50
- for i in 0...count
51
- items << self.next
52
- end
53
-
54
- return items
55
- end
56
-
57
- # Returns an array of int items
58
- def next_int_array
59
- count = next_int
60
- items = []
61
- for i in 0...count
62
- items << self.next_int
63
- end
64
-
65
- return items
66
- end
67
-
68
- def next_float_array
69
- count = next_int
70
- items = []
71
- for i in 0...count
72
- items << self.next_float
73
- end
74
-
75
- return items
76
- end
77
-
78
- # Returns the length of the streamed data
79
- def length
80
- @str.length
81
- end
82
- end
83
- end
84
- end
@@ -1,33 +0,0 @@
1
- require 'riddle/configuration/section'
2
-
3
- require 'riddle/configuration/distributed_index'
4
- require 'riddle/configuration/index'
5
- require 'riddle/configuration/indexer'
6
- require 'riddle/configuration/remote_index'
7
- require 'riddle/configuration/searchd'
8
- require 'riddle/configuration/source'
9
- require 'riddle/configuration/sql_source'
10
- require 'riddle/configuration/xml_source'
11
-
12
- module Riddle
13
- class Configuration
14
- class ConfigurationError < StandardError #:nodoc:
15
- end
16
-
17
- attr_reader :indexes, :searchd
18
- attr_accessor :indexer
19
-
20
- def initialize
21
- @indexer = Riddle::Configuration::Indexer.new
22
- @searchd = Riddle::Configuration::Searchd.new
23
- @indexes = []
24
- end
25
-
26
- def render
27
- (
28
- [@indexer.render, @searchd.render] +
29
- @indexes.collect { |index| index.render }
30
- ).join("\n")
31
- end
32
- end
33
- end
@@ -1,48 +0,0 @@
1
- module Riddle
2
- class Configuration
3
- class DistributedIndex < Riddle::Configuration::Section
4
- self.settings = [:type, :local, :agent, :agent_connect_timeout,
5
- :agent_query_timeout]
6
-
7
- attr_accessor :name, :local_indexes, :remote_indexes,
8
- :agent_connect_timeout, :agent_query_timeout
9
-
10
- def initialize(name)
11
- @name = name
12
- @local_indexes = []
13
- @remote_indexes = []
14
- end
15
-
16
- def type
17
- "distributed"
18
- end
19
-
20
- def local
21
- self.local_indexes
22
- end
23
-
24
- def agent
25
- agents = remote_indexes.collect { |index| index.remote }.uniq
26
- agents.collect { |agent|
27
- agent + ":" + remote_indexes.select { |index|
28
- index.remote == agent
29
- }.collect { |index| index.name }.join(",")
30
- }
31
- end
32
-
33
- def render
34
- raise ConfigurationError unless valid?
35
-
36
- (
37
- ["index #{name}", "{"] +
38
- settings_body +
39
- ["}", ""]
40
- ).join("\n")
41
- end
42
-
43
- def valid?
44
- @local_indexes.length > 0 || @remote_indexes.length > 0
45
- end
46
- end
47
- end
48
- end
@@ -1,142 +0,0 @@
1
- module Riddle
2
- class Configuration
3
- class Index < Riddle::Configuration::Section
4
- self.settings = [:source, :path, :docinfo, :mlock, :morphology,
5
- :stopwords, :wordforms, :exceptions, :min_word_len, :charset_type,
6
- :charset_table, :ignore_chars, :min_prefix_len, :min_infix_len,
7
- :prefix_fields, :infix_fields, :enable_star, :ngram_len, :ngram_chars,
8
- :phrase_boundary, :phrase_boundary_step, :html_strip,
9
- :html_index_attrs, :html_remove_elements, :preopen]
10
-
11
- attr_accessor :name, :parent, :sources, :path, :docinfo, :mlock,
12
- :morphologies, :stopword_files, :wordform_files, :exception_files,
13
- :min_word_len, :charset_type, :charset_table, :ignore_characters,
14
- :min_prefix_len, :min_infix_len, :prefix_field_names,
15
- :infix_field_names, :enable_star, :ngram_len, :ngram_characters,
16
- :phrase_boundaries, :phrase_boundary_step, :html_strip,
17
- :html_index_attrs, :html_remove_element_tags, :preopen
18
-
19
- def initialize(name, *sources)
20
- @name = name
21
- @sources = sources
22
- @morphologies = []
23
- @stopword_files = []
24
- @wordform_files = []
25
- @exception_files = []
26
- @ignore_characters = []
27
- @prefix_field_names = []
28
- @infix_field_names = []
29
- @ngram_characters = []
30
- @phrase_boundaries = []
31
- @html_remove_element_tags = []
32
- end
33
-
34
- def source
35
- @sources.collect { |s| s.name }
36
- end
37
-
38
- def morphology
39
- nil_join @morphologies, ", "
40
- end
41
-
42
- def morphology=(morphology)
43
- @morphologies = nil_split morphology, /,\s?/
44
- end
45
-
46
- def stopwords
47
- nil_join @stopword_files, " "
48
- end
49
-
50
- def stopwords=(stopwords)
51
- @stopword_files = nil_split stopwords, ' '
52
- end
53
-
54
- def wordforms
55
- nil_join @wordform_files, " "
56
- end
57
-
58
- def wordforms=(wordforms)
59
- @wordform_files = nil_split wordforms, ' '
60
- end
61
-
62
- def exceptions
63
- nil_join @exception_files, " "
64
- end
65
-
66
- def exceptions=(exceptions)
67
- @exception_files = nil_split exceptions, ' '
68
- end
69
-
70
- def ignore_chars
71
- nil_join @ignore_characters, ", "
72
- end
73
-
74
- def ignore_chars=(ignore_chars)
75
- @ignore_characters = nil_split ignore_chars, /,\s?/
76
- end
77
-
78
- def prefix_fields
79
- nil_join @prefix_field_names, ", "
80
- end
81
-
82
- def infix_fields
83
- nil_join @infix_field_names, ", "
84
- end
85
-
86
- def ngram_chars
87
- nil_join @ngram_characters, ", "
88
- end
89
-
90
- def ngram_chars=(ngram_chars)
91
- @ngram_characters = nil_split ngram_chars, /,\s?/
92
- end
93
-
94
- def phrase_boundary
95
- nil_join @phrase_boundaries, ", "
96
- end
97
-
98
- def phrase_boundary=(phrase_boundary)
99
- @phrase_boundaries = nil_split phrase_boundary, /,\s?/
100
- end
101
-
102
- def html_remove_elements
103
- nil_join @html_remove_element_tags, ", "
104
- end
105
-
106
- def html_remove_elements=(html_remove_elements)
107
- @html_remove_element_tags = nil_split html_remove_elements, /,\s?/
108
- end
109
-
110
- def render
111
- raise ConfigurationError, "#{@name} #{@sources.inspect} #{@path} #{@parent}" unless valid?
112
-
113
- inherited_name = "#{name}"
114
- inherited_name << " : #{parent}" if parent
115
- (
116
- @sources.collect { |s| s.render } +
117
- ["index #{inherited_name}", "{"] +
118
- settings_body +
119
- ["}", ""]
120
- ).join("\n")
121
- end
122
-
123
- def valid?
124
- (!@name.nil?) && (!( @sources.length == 0 || @path.nil? ) || !@parent.nil?)
125
- end
126
-
127
- private
128
-
129
- def nil_split(string, pattern)
130
- (string || "").split(pattern)
131
- end
132
-
133
- def nil_join(array, delimiter)
134
- if array.length == 0
135
- nil
136
- else
137
- array.join(delimiter)
138
- end
139
- end
140
- end
141
- end
142
- end
@@ -1,19 +0,0 @@
1
- module Riddle
2
- class Configuration
3
- class Indexer < Riddle::Configuration::Section
4
- self.settings = [:mem_limit, :max_iops, :max_iosize]
5
-
6
- attr_accessor *self.settings
7
-
8
- def render
9
- raise ConfigurationError unless valid?
10
-
11
- (
12
- ["indexer", "{"] +
13
- settings_body +
14
- ["}", ""]
15
- ).join("\n")
16
- end
17
- end
18
- end
19
- end