elasticsearch-explain-response 0.2.0 → 0.2.1
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 +4 -4
- data/elasticsearch-explain-response.gemspec +1 -1
- data/lib/elasticsearch/api/response/explain_node.rb +3 -0
- data/lib/elasticsearch/api/response/explain_response.rb +10 -10
- data/lib/elasticsearch/api/response/renderable.rb +22 -0
- data/spec/elasticsearch/api/response/explain_response_spec.rb +13 -0
- metadata +3 -3
- data/lib/elasticsearch/api/response/explain_renderer.rb +0 -50
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8ea1238650fd2756ec6248ac4b08de91c29dd353
|
4
|
+
data.tar.gz: 413adb252c2a14172f19429ab32ec8813c1ec920
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 720dfd516b2d11b1f74121106a17f159e72018032dc19539651e3d83e829fd1aaf6870f4cd9766aa704672e4ecf6146fed96cd7bc017909b3b37bb41ace3cdb8
|
7
|
+
data.tar.gz: a4f2fcbf13b033977a2bd731700c658fb641baee8e2943807f6439e8ac25708f424ee5c3c62180dfd0bfd5125886cf0cb67b7a9ce9fc88b4a519eacc709d1029
|
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
4
|
|
5
5
|
Gem::Specification.new do |spec|
|
6
6
|
spec.name = "elasticsearch-explain-response"
|
7
|
-
spec.version = "0.2.
|
7
|
+
spec.version = "0.2.1"
|
8
8
|
spec.authors = ["Tomoya Hirano"]
|
9
9
|
spec.email = ["hiranotomoya@gmail.com"]
|
10
10
|
spec.summary = %q{Parser for Elasticserach Explain response}
|
@@ -22,8 +22,8 @@ module Elasticsearch
|
|
22
22
|
# Show scoring as a simple math formula
|
23
23
|
# @example
|
24
24
|
# "1.0 = (1.0(termFreq=1.0)) x 1.0(idf(2/3)) x 1.0(fieldNorm)"
|
25
|
-
def render_in_line(result, options = {})
|
26
|
-
new(result["explanation"], options).render_in_line
|
25
|
+
def render_in_line(result, options = {}, &block)
|
26
|
+
new(result["explanation"], options).render_in_line(&block)
|
27
27
|
end
|
28
28
|
|
29
29
|
# Show scoring with indents
|
@@ -33,8 +33,8 @@ module Elasticsearch
|
|
33
33
|
# 3.35 = 0.2 + 0.93 + 1.29 + 0.93
|
34
34
|
# 54.3 = 54.3 min 3.4028234999999995e+38(maxBoost)
|
35
35
|
# 54.3 = 2.0 x 10.0 x 3.0 x 0.91
|
36
|
-
def render(result, options = {})
|
37
|
-
new(result["explanation"], options).render
|
36
|
+
def render(result, options = {}, &block)
|
37
|
+
new(result["explanation"], options).render(&block)
|
38
38
|
end
|
39
39
|
|
40
40
|
def result_as_hash(result, options = {})
|
@@ -53,16 +53,16 @@ module Elasticsearch
|
|
53
53
|
parse_details
|
54
54
|
end
|
55
55
|
|
56
|
-
def render
|
57
|
-
|
56
|
+
def render(&block)
|
57
|
+
@root.render(rendering_options, &block)
|
58
58
|
end
|
59
59
|
|
60
|
-
def render_in_line
|
61
|
-
|
60
|
+
def render_in_line(&block)
|
61
|
+
@root.render_in_line(rendering_options, &block)
|
62
62
|
end
|
63
63
|
|
64
|
-
def render_as_hash
|
65
|
-
|
64
|
+
def render_as_hash(&block)
|
65
|
+
@root.render_as_hash(rendering_options, &block)
|
66
66
|
end
|
67
67
|
|
68
68
|
private
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module Elasticsearch
|
2
|
+
module API
|
3
|
+
module Response
|
4
|
+
module Renderable
|
5
|
+
def render(rendering_options = {})
|
6
|
+
tree = block_given? ? yield(self) : self
|
7
|
+
Renderers::StandardRenderer.new({ colorize: true }.merge(rendering_options)).render(tree)
|
8
|
+
end
|
9
|
+
|
10
|
+
def render_in_line(rendering_options = {})
|
11
|
+
tree = block_given? ? yield(self) : self
|
12
|
+
Renderers::InlineRenderer.new({ colorize: true }.merge(rendering_options)).render(tree)
|
13
|
+
end
|
14
|
+
|
15
|
+
def render_as_hash(rendering_options = {})
|
16
|
+
tree = block_given? ? yield(self) : self
|
17
|
+
Renderers::HashRenderer.new.render(tree)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -14,6 +14,19 @@ describe Elasticsearch::API::Response::ExplainResponse do
|
|
14
14
|
it "returns summary" do
|
15
15
|
expect(subject).not_to be_empty
|
16
16
|
end
|
17
|
+
|
18
|
+
context "with block" do
|
19
|
+
subject do
|
20
|
+
described_class.render_in_line(fake_response, colorize: false) do |tree|
|
21
|
+
tree.children = tree.children[0..1]
|
22
|
+
tree
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
it "changes the tree before rendering" do
|
27
|
+
expect(subject).to eq("0.05 = (0.11(score) x 0.5(coord(1/2)))")
|
28
|
+
end
|
29
|
+
end
|
17
30
|
end
|
18
31
|
|
19
32
|
describe '.render' do
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: elasticsearch-explain-response
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tomoya Hirano
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-12-
|
11
|
+
date: 2015-12-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -112,11 +112,11 @@ files:
|
|
112
112
|
- lib/elasticsearch/api/response/description.rb
|
113
113
|
- lib/elasticsearch/api/response/explain_node.rb
|
114
114
|
- lib/elasticsearch/api/response/explain_parser.rb
|
115
|
-
- lib/elasticsearch/api/response/explain_renderer.rb
|
116
115
|
- lib/elasticsearch/api/response/explain_response.rb
|
117
116
|
- lib/elasticsearch/api/response/explain_trimmer.rb
|
118
117
|
- lib/elasticsearch/api/response/helpers/color_helper.rb
|
119
118
|
- lib/elasticsearch/api/response/helpers/string_helper.rb
|
119
|
+
- lib/elasticsearch/api/response/renderable.rb
|
120
120
|
- lib/elasticsearch/api/response/renderers/base_renderer.rb
|
121
121
|
- lib/elasticsearch/api/response/renderers/hash_renderer.rb
|
122
122
|
- lib/elasticsearch/api/response/renderers/inline_renderer.rb
|
@@ -1,50 +0,0 @@
|
|
1
|
-
require "elasticsearch/api/response/color_helper"
|
2
|
-
|
3
|
-
module Elasticsearch
|
4
|
-
module API
|
5
|
-
module Response
|
6
|
-
class ExplainRenderer
|
7
|
-
include ColorHelper
|
8
|
-
|
9
|
-
def initialize(options = {})
|
10
|
-
disable_colorization if options[:colorize] == false
|
11
|
-
@max = options[:max] || 3
|
12
|
-
@plain_score = options[:plain_score] == true
|
13
|
-
@show_values = options[:show_values] == true
|
14
|
-
end
|
15
|
-
|
16
|
-
def render(tree)
|
17
|
-
@buffer = []
|
18
|
-
recursive_render(tree)
|
19
|
-
@buffer.join("\n")
|
20
|
-
end
|
21
|
-
|
22
|
-
def render_in_line(tree)
|
23
|
-
[render_score(tree.score), "=", recursive_render_details(tree)].flatten.join(" ")
|
24
|
-
end
|
25
|
-
|
26
|
-
def recursive_render(node)
|
27
|
-
return if node.level > @max
|
28
|
-
render_result(node) if node.details.any?
|
29
|
-
node.children.each do |child|
|
30
|
-
recursive_render(child)
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
private
|
35
|
-
|
36
|
-
def render_result(node)
|
37
|
-
@buffer << " " * node.level * 2 + [render_score(node.score), "=", render_details(node)].flatten.join(" ")
|
38
|
-
end
|
39
|
-
|
40
|
-
def render_details(node)
|
41
|
-
if node.has_children?
|
42
|
-
node.children.map(&method(:render_node)).compact.join(" #{node.operator} ")
|
43
|
-
else
|
44
|
-
render_node(node)
|
45
|
-
end
|
46
|
-
end
|
47
|
-
end
|
48
|
-
end
|
49
|
-
end
|
50
|
-
end
|