arelastic 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,2 +1,2 @@
1
- = Foreigner
1
+ = Arelastic
2
2
  {<img src="https://secure.travis-ci.org/matthuhiggins/arelastic.png?rvm=1.9.3" />}[http://travis-ci.org/matthuhiggins/arelastic]
@@ -9,21 +9,20 @@ module Arelastic
9
9
  attr_reader :predicate
10
10
  end
11
11
 
12
- attr_reader :field, :value
12
+ attr_reader :field, :value, :options
13
13
  end
14
14
 
15
15
  module Methods
16
- def initialize field, value
16
+ def initialize field, value, options = {}
17
17
  @field = field
18
18
  @value = value
19
+ @options = options
19
20
  end
20
21
 
21
22
  def as_elastic
22
- {
23
- self.class.predicate => {
24
- field => convert_to_elastic(value)
25
- }
26
- }
23
+ params = {field => convert_to_elastic(value)}.update(options)
24
+
25
+ { self.class.predicate => params }
27
26
  end
28
27
  end
29
28
  end
@@ -5,6 +5,7 @@ module Arelastic
5
5
  def [](field)
6
6
  new(field)
7
7
  end
8
+
8
9
  def constant_score(filter_or_query)
9
10
  query Arelastic::Queries::ConstantScore.new(filter_or_query)
10
11
  end
@@ -17,6 +18,10 @@ module Arelastic
17
18
  query Arelastic::Queries::MatchAll.new
18
19
  end
19
20
 
21
+ def multi_match other, fields
22
+ # Arelastic::Queries::MultiMatch.new other, fields
23
+ end
24
+
20
25
  private
21
26
  def query value
22
27
  Arelastic::Searches::Query.new value
@@ -34,6 +39,10 @@ module Arelastic
34
39
  def terms other
35
40
  Arelastic::Queries::Terms.new name, other
36
41
  end
42
+
43
+ def match other
44
+ Arelastic::Queries::Match.new name, other
45
+ end
37
46
  end
38
47
  end
39
48
  end
@@ -10,6 +10,10 @@ module Arelastic
10
10
  def asc
11
11
 
12
12
  end
13
+
14
+ def desc
15
+
16
+ end
13
17
  end
14
18
  end
15
19
  end
@@ -1,18 +1,7 @@
1
1
  module Arelastic
2
2
  module Filters
3
3
  class Terms < Arelastic::Filters::Filter
4
- attr_accessor :field, :terms, :options
5
- def initialize(field, terms, options = {})
6
- @field = field
7
- @terms = terms
8
- @options = options
9
- end
10
-
11
- def as_elastic
12
- params = {field => terms}.update(options)
13
-
14
- { "terms" => params }
15
- end
4
+ binary 'terms'
16
5
  end
17
6
  end
18
7
  end
@@ -3,7 +3,9 @@ require 'arelastic/queries/query'
3
3
  require 'arelastic/queries/constant_score'
4
4
  require 'arelastic/queries/field'
5
5
  require 'arelastic/queries/filtered'
6
+ require 'arelastic/queries/match'
6
7
  require 'arelastic/queries/match_all'
8
+ require 'arelastic/queries/multi_match'
7
9
  require 'arelastic/queries/prefix'
8
10
  require 'arelastic/queries/query_string'
9
11
  require 'arelastic/queries/terms'
@@ -0,0 +1,7 @@
1
+ module Arelastic
2
+ module Queries
3
+ class Match < Arelastic::Queries::Query
4
+ binary 'match'
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,6 @@
1
+ module Arelastic
2
+ module Queries
3
+ class MultiMatch
4
+ end
5
+ end
6
+ end
@@ -8,5 +8,8 @@ class Arelastic::Arities::BinaryTest < MiniTest::Spec
8
8
 
9
9
  expected = {'suffix' => {'phone' => '666'}}
10
10
  assert_equal expected, node.new('phone', '666').as_elastic
11
+
12
+ expected = {'suffix' => {'phone' => '666', '_cache' => false}}
13
+ assert_equal expected, node.new('phone', '666', '_cache' => false).as_elastic
11
14
  end
12
15
  end
@@ -22,6 +22,10 @@ class Arelastic::Builders::QueryTest < MiniTest::Spec
22
22
  assert_equal expected, query.as_elastic
23
23
  end
24
24
 
25
+ def test_multi_match
26
+ Arelastic::Builders::Query.multi_match 'blue', ['color', 'description']
27
+ end
28
+
25
29
  def test_field
26
30
  query = Arelastic::Builders::Query['user'].field 'kimchy'
27
31
  expected = { "field" => { "user" => "kimchy" } }
@@ -36,10 +40,17 @@ class Arelastic::Builders::QueryTest < MiniTest::Spec
36
40
  assert_equal expected, query.as_elastic
37
41
  end
38
42
 
39
- def test_term
43
+ def test_terms
40
44
  query = Arelastic::Builders::Query['tags'].terms ['blue', 'pill']
41
45
  expected = {"terms" => { "tags" => ["blue", "pill"] }}
42
46
 
43
47
  assert_equal expected, query.as_elastic
44
48
  end
49
+
50
+ def test_match
51
+ query = Arelastic::Builders::Query['message'].match "hello"
52
+ expected = {"match" => { "message" => "hello" }}
53
+
54
+ assert_equal expected, query.as_elastic
55
+ end
45
56
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: arelastic
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-08-06 00:00:00.000000000 Z
12
+ date: 2012-09-11 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description: Build Elastic Search queries with objects
15
15
  email: developer@matthewhiggins.com
@@ -53,7 +53,9 @@ files:
53
53
  - lib/arelastic/queries/constant_score.rb
54
54
  - lib/arelastic/queries/field.rb
55
55
  - lib/arelastic/queries/filtered.rb
56
+ - lib/arelastic/queries/match.rb
56
57
  - lib/arelastic/queries/match_all.rb
58
+ - lib/arelastic/queries/multi_match.rb
57
59
  - lib/arelastic/queries/prefix.rb
58
60
  - lib/arelastic/queries/query.rb
59
61
  - lib/arelastic/queries/query_string.rb