mastico 0.1.0 → 0.1.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 +5 -5
- data/lib/mastico/query.rb +30 -21
- data/lib/mastico/version.rb +1 -1
- data/mastico.gemspec +1 -0
- metadata +17 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 46282da7310c519736cd0947cd37b93cb28324ca7c4bfec8e4d042f4dcfbd112
|
4
|
+
data.tar.gz: bb39aaacb4a89cfa83143347a2136246fed4ef40f930abf7a1b5561fe5e7550a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8917049d8ab75f18fb6a53446e1ddabba4c5ba9ff595e22dee3ee5869d8e0a1a7a90fcd577584d95f832d6d2642441892e776b06f68d8673a572be6e25db2f8c
|
7
|
+
data.tar.gz: 9c92b1644a6f6dbb285682cf1560c125ad5af4cb408d4fd81844707750041b5d265a89f68a6f88db86c517fea6f480003c8f73607ecdf2b22b3f8bc2cbad86b8
|
data/lib/mastico/query.rb
CHANGED
@@ -24,6 +24,7 @@ module Mastico
|
|
24
24
|
@fields = fields
|
25
25
|
@word_weight = word_weight
|
26
26
|
@options = options
|
27
|
+
@parts = nil
|
27
28
|
end
|
28
29
|
|
29
30
|
def perform(scope)
|
@@ -33,28 +34,32 @@ module Mastico
|
|
33
34
|
private
|
34
35
|
|
35
36
|
def parts
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
37
|
+
@parts ||=
|
38
|
+
begin
|
39
|
+
clean = query.strip.gsub(/\s+/, ' ').downcase
|
40
|
+
terms = clean.split(" ")
|
41
|
+
term_parts = terms.map do |term|
|
42
|
+
weight = word_weight.call(term)
|
43
|
+
next nil if weight == 0.0
|
44
|
+
chewy_term_query(term: term, weight: weight)
|
45
|
+
end
|
46
|
+
term_parts = term_parts.compact
|
47
|
+
case term_parts.size
|
48
|
+
when 0
|
49
|
+
nil
|
50
|
+
when 1
|
51
|
+
term_parts[0]
|
52
|
+
else
|
53
|
+
# We have multiple words in the query -
|
54
|
+
# all of them **must** match
|
55
|
+
{bool: {must: term_parts}} # AND query
|
56
|
+
end
|
57
|
+
end
|
54
58
|
end
|
55
59
|
|
56
60
|
def chewy_term_query(term:, weight:)
|
57
61
|
parts = []
|
62
|
+
|
58
63
|
if term.length >= options[:minimum_term_length]
|
59
64
|
relevant_fields(:term).each do |field, field_boost|
|
60
65
|
parts << chewy_multi_match_term_query(
|
@@ -64,8 +69,9 @@ module Mastico
|
|
64
69
|
)
|
65
70
|
end
|
66
71
|
end
|
72
|
+
|
67
73
|
if term.length >= options[:minimum_prefix_length]
|
68
|
-
relevant_fields(:
|
74
|
+
relevant_fields(:prefix).each do |field, field_boost|
|
69
75
|
parts << chewy_multi_match_prefix_query(
|
70
76
|
query: term,
|
71
77
|
fields: [field],
|
@@ -73,8 +79,9 @@ module Mastico
|
|
73
79
|
)
|
74
80
|
end
|
75
81
|
end
|
82
|
+
|
76
83
|
if term.length >= options[:minimum_infix_length]
|
77
|
-
relevant_fields(:
|
84
|
+
relevant_fields(:infix).each do |field, field_boost|
|
78
85
|
parts << chewy_multi_match_infix_query(
|
79
86
|
query: term,
|
80
87
|
fields: [field],
|
@@ -82,8 +89,9 @@ module Mastico
|
|
82
89
|
)
|
83
90
|
end
|
84
91
|
end
|
92
|
+
|
85
93
|
if term.length >= options[:minimum_fuzzy_length]
|
86
|
-
relevant_fields(:
|
94
|
+
relevant_fields(:fuzzy).each do |field, field_boost|
|
87
95
|
parts << chewy_multi_match_fuzzy_query(
|
88
96
|
query: term,
|
89
97
|
fields: [field],
|
@@ -91,6 +99,7 @@ module Mastico
|
|
91
99
|
)
|
92
100
|
end
|
93
101
|
end
|
102
|
+
|
94
103
|
parts.compact!
|
95
104
|
|
96
105
|
if parts.size > 0
|
data/lib/mastico/version.rb
CHANGED
data/mastico.gemspec
CHANGED
@@ -31,6 +31,7 @@ Gem::Specification.new do |spec|
|
|
31
31
|
spec.require_paths = ["lib"]
|
32
32
|
|
33
33
|
spec.add_development_dependency "bundler", "~> 1.14"
|
34
|
+
spec.add_development_dependency "pry-byebug", "~> 3.6"
|
34
35
|
spec.add_development_dependency "rake", "~> 10.0"
|
35
36
|
spec.add_development_dependency "rspec", "~> 3.0"
|
36
37
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mastico
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matteo Manzo
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-03-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -24,6 +24,20 @@ dependencies:
|
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '1.14'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: pry-byebug
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '3.6'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '3.6'
|
27
41
|
- !ruby/object:Gem::Dependency
|
28
42
|
name: rake
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -94,7 +108,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
94
108
|
version: '0'
|
95
109
|
requirements: []
|
96
110
|
rubyforge_project:
|
97
|
-
rubygems_version: 2.
|
111
|
+
rubygems_version: 2.7.3
|
98
112
|
signing_key:
|
99
113
|
specification_version: 4
|
100
114
|
summary: A chewy helper
|