stretcher 1.20.0.beta2 → 1.20.0.beta3

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 81f2f9ec0ad54ee0611402adab9de910c69c7add
4
- data.tar.gz: dd0776a032dc17bce10cb15d44a66435f19f6ee1
3
+ metadata.gz: 6fe7e6ae86720732abdf939c6632e6c025244ae0
4
+ data.tar.gz: 715e7729054c64b798914cb05a3d1364af9dfc23
5
5
  SHA512:
6
- metadata.gz: 2173de91fa8f0e1322aa6a0e5b7718b6cbd6005dd237250967773f567ba2cb841626fb8b5251dc1d25034ee7163e22fc309ea07762455673b5625d7e9110a322
7
- data.tar.gz: 2c69f1f1f583985b4b7bb1c7c36664ceb5937c2ea5656bbaf6a5a34c22f2aa0c3e9e786f84c992f98bc77364beee865effa24452f65d1ac3700599d760335870
6
+ metadata.gz: a89263f5d9a591a5b798b04333726b5c8af8174ff3a5f68ea155fe4c881d3b1f01a8fddc91ec0dfa8eac295e1461b6a41cb0b1a4d80a60f1a3969761a6aaf992
7
+ data.tar.gz: 0a40d4f3f45ab830efe603fd50145ad4439222fe91452060b93eee3fe222fced761df86a5f2743e09540c8091ce65f2c4ec4ca71ee59c4e4e791079ea870b10e
@@ -73,9 +73,20 @@ module Stretcher
73
73
  false
74
74
  end
75
75
 
76
+ # Takes a document and percolates it
76
77
  def percolate(document = {})
77
78
  request :get, '_percolate', nil, {:doc => document}
78
79
  end
80
+
81
+ # Runs an MLT query based on the document's content.
82
+ # This is actually a search, so a Stretcher::SearchResults object is returned
83
+ #
84
+ # Equivalent to hitting /index/type/id/_mlt
85
+ # See http://www.elasticsearch.org/guide/reference/api/more-like-this/ for more
86
+ # Takens an options hash as a second argument, for things like fields=
87
+ def mlt(id, options={})
88
+ SearchResults.new(request(:get, "#{id}/_mlt", options))
89
+ end
79
90
 
80
91
  # Retrieve the mapping for this type
81
92
  def get_mapping
@@ -13,6 +13,8 @@ module Stretcher
13
13
  end
14
14
 
15
15
  # Returns a plain (string keyed) hash of the raw response
16
+ # Normally stretcher deals in Hashie::Mash-ified versions of data
17
+ # If you have truly gigantic result sets this may matter.
16
18
  def raw_plain
17
19
  @raw_plain
18
20
  end
@@ -27,17 +29,14 @@ module Stretcher
27
29
  @total ||= raw_plain['hits']['total']
28
30
  end
29
31
 
32
+ # Returns the facet data from elasticsearch
33
+ # Equivalent to raw[:facets]
30
34
  def facets
31
35
  @facets ||= raw[:facets]
32
36
  end
33
-
34
- # DEPRECATED!
35
- # Call #documents instead!
36
- def results
37
- documents
38
- end
39
37
 
40
38
  # Returns a 'prettier' version of elasticsearch results
39
+ # Also aliased as +docs+
41
40
  # This will:
42
41
  #
43
42
  # 1. Return either '_source' or 'fields' as the base of the result
@@ -53,6 +52,13 @@ module Stretcher
53
52
  doc
54
53
  end
55
54
  end
55
+ alias_method :docs, :documents
56
+
57
+ # DEPRECATED!
58
+ # Call #documents instead!
59
+ def results
60
+ documents
61
+ end
56
62
 
57
63
  private
58
64
 
@@ -72,16 +78,15 @@ module Stretcher
72
78
  def copy_underscores(hit, doc)
73
79
  # Copy underscore keys into the document
74
80
  hit.each do |k,v|
75
- if k && k[0] == "_"
76
- doc[k] = v
77
- end
81
+ doc[k] = v if k && k[0] == "_"
78
82
  end
83
+
79
84
  doc
80
85
  end
81
86
 
82
87
  def copy_highlight(hit, doc)
83
88
  if highlight = hit.key?("highlight")
84
- doc[:_highlight] = highlight
89
+ doc[:_highlight] = highlight
85
90
  end
86
91
  doc
87
92
  end
@@ -1,3 +1,3 @@
1
1
  module Stretcher
2
- VERSION = "1.20.0.beta2"
2
+ VERSION = "1.20.0.beta3"
3
3
  end
@@ -17,7 +17,11 @@ describe Stretcher::IndexType do
17
17
  before do
18
18
  type.delete_query(:match_all => {})
19
19
  index.refresh
20
- type.put_mapping({"bar" => {"properties" => {"message" => {"type" => "string"}}}})
20
+ type.put_mapping({"bar" => {
21
+ "properties" => {
22
+ "message" => {"type" => "string", analyzer: "snowball"},
23
+ "username" => {"type" => "string"}
24
+ }}})
21
25
  end
22
26
 
23
27
  describe "searching" do
@@ -50,6 +54,31 @@ describe Stretcher::IndexType do
50
54
  end
51
55
  end
52
56
 
57
+ describe "document based mlt_searches" do
58
+ let(:doc_one) {{message: "I just saw Death Wish I with charles bronson!", :_timestamp => 1366420402}}
59
+ let(:doc_two) {{message: "Death Wish II was even better!", :_timestamp => 1366420403}}
60
+ let(:doc_three) {{message: "Death Wish III was even better, making it the best!", :_timestamp => 1366420403}}
61
+
62
+ before do
63
+ type.put(1, doc_one)
64
+ type.put(2, doc_two)
65
+ type.put(3, doc_three)
66
+ type.index.refresh
67
+ end
68
+
69
+ let (:results) {
70
+ type.mlt(1, min_term_freq: 1, min_doc_freq: 1, fields: [:message])
71
+ }
72
+
73
+ it "should return results as SearchResults" do
74
+ results.should be_a(Stretcher::SearchResults)
75
+ end
76
+
77
+ it "should return expected mlt results" do
78
+ Set.new(results.docs.map(&:_id)).should == Set.new(["2", "3"])
79
+ end
80
+ end
81
+
53
82
  describe 'mget' do
54
83
  let(:doc_one) {{:message => "message one!", :_timestamp => 1366420402}}
55
84
  let(:doc_two) {{:message => "message two!", :_timestamp => 1366420403}}
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: stretcher
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.20.0.beta2
4
+ version: 1.20.0.beta3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Cholakian
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-09-19 00:00:00.000000000 Z
11
+ date: 2013-09-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday