nazrin 2.3.0 → 2.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +14 -0
- data/README.md +7 -0
- data/lib/nazrin.rb +1 -0
- data/lib/nazrin/config.rb +1 -0
- data/lib/nazrin/document_client.rb +6 -5
- data/lib/nazrin/search_client.rb +21 -19
- data/lib/nazrin/searchable.rb +11 -2
- data/lib/nazrin/searchable/config.rb +24 -0
- data/lib/nazrin/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f98b0576f7417a5acab58c60adf492414ce08a2e
|
4
|
+
data.tar.gz: c745e6f9830896c0fdf08206e83fa9b9ce7a3e04
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 68875e9dde8ec03648a17add6d131b7ca2093150ddade67cfe6c246f30154d9eb17ee558ae5629b0dc629d89d959f270921b0e2eda9c51692d19322626a4cdeb
|
7
|
+
data.tar.gz: e07771ba1ed25375d58b7692026472bc1fd62c4a9a3b72a6b2293150dbc2938635df145b0d1d64971f6eda9f91b65fe36dc3d097549b0ea90a9fc9e352b20eef
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,17 @@
|
|
1
|
+
## [2.4.0](https://github.com/tsuwatch/nazrin/compare/v2.3.0...v2.4.0)
|
2
|
+
|
3
|
+
### Features:
|
4
|
+
|
5
|
+
* Support multile domains [#23](https://github.com/tsuwatch/nazrin/pull/23) - [@totem3](https://github.com/totem3)
|
6
|
+
|
7
|
+
* Allow logger setting of Aws::CloudSearchDomain::Client [#24](https://github.com/tsuwatch/nazrin/pull/24) - [@AMHOL](https://github.com/AMHOL)
|
8
|
+
|
9
|
+
## [2.3.0](https://github.com/tsuwatch/nazrin/compare/v2.2.0...v2.3.0)
|
10
|
+
|
11
|
+
### Features:
|
12
|
+
|
13
|
+
* Dropped support for `aws-sdk` v2 [#22](https://github.com/tsuwatch/nazrin/pull/22)
|
14
|
+
|
1
15
|
## [2.2.0](https://github.com/tsuwatch/nazrin/compare/v2.1.2...v2.2.0)
|
2
16
|
|
3
17
|
### Breaking changes:
|
data/README.md
CHANGED
@@ -39,6 +39,7 @@ Nazrin.configure do |config|
|
|
39
39
|
config.region = ''
|
40
40
|
config.access_key_id = ''
|
41
41
|
config.secret_access_key = ''
|
42
|
+
config.logger = nil
|
42
43
|
end
|
43
44
|
```
|
44
45
|
|
@@ -46,6 +47,12 @@ end
|
|
46
47
|
class Post < ActiveRecord::Base
|
47
48
|
include Nazrin::Searchable
|
48
49
|
|
50
|
+
# You can override settings
|
51
|
+
searchable_configure do |config|
|
52
|
+
config.search_endpoint = 'http://example.com/override-search-endpoint'
|
53
|
+
config.document_endpoint = 'http://example.com/override-document-endpoint'
|
54
|
+
end
|
55
|
+
|
49
56
|
searchable do
|
50
57
|
fields [:content]
|
51
58
|
field(:created_at) { created_at.utc.iso8601 }
|
data/lib/nazrin.rb
CHANGED
data/lib/nazrin/config.rb
CHANGED
@@ -2,12 +2,13 @@ module Nazrin
|
|
2
2
|
class DocumentClient
|
3
3
|
attr_reader :client
|
4
4
|
|
5
|
-
def initialize
|
5
|
+
def initialize(config=Nazrin.config)
|
6
6
|
@client = Aws::CloudSearchDomain::Client.new(
|
7
|
-
endpoint:
|
8
|
-
region:
|
9
|
-
access_key_id:
|
10
|
-
secret_access_key:
|
7
|
+
endpoint: config.document_endpoint,
|
8
|
+
region: config.region,
|
9
|
+
access_key_id: config.access_key_id,
|
10
|
+
secret_access_key: config.secret_access_key,
|
11
|
+
logger: config.logger)
|
11
12
|
end
|
12
13
|
|
13
14
|
def add_document(id, field_data)
|
data/lib/nazrin/search_client.rb
CHANGED
@@ -5,113 +5,115 @@ module Nazrin
|
|
5
5
|
CLOUD_SEARCH_MAX_LIMIT = 10_000
|
6
6
|
|
7
7
|
attr_accessor :data_accessor
|
8
|
+
attr_reader :client
|
8
9
|
attr_reader :parameters
|
9
10
|
|
10
|
-
def initialize
|
11
|
+
def initialize(config=Nazrin.config)
|
11
12
|
# @see http://docs.aws.amazon.com/sdkforruby/api/Aws/CloudSearchDomain/Client.html aws-sdk
|
12
13
|
@client = Aws::CloudSearchDomain::Client.new(
|
13
|
-
endpoint:
|
14
|
-
region:
|
15
|
-
access_key_id:
|
16
|
-
secret_access_key:
|
14
|
+
endpoint: config.search_endpoint,
|
15
|
+
region: config.region,
|
16
|
+
access_key_id: config.access_key_id,
|
17
|
+
secret_access_key: config.secret_access_key,
|
18
|
+
logger: config.logger)
|
17
19
|
@parameters = {}
|
18
20
|
end
|
19
21
|
|
20
22
|
# query
|
21
23
|
# @param [String] query query string
|
22
24
|
def query(query)
|
23
|
-
|
25
|
+
parameters[:query] = query
|
24
26
|
self
|
25
27
|
end
|
26
28
|
|
27
29
|
# return fields
|
28
30
|
# @param [Array<String>] fields ex) ['title']
|
29
31
|
def return(fields)
|
30
|
-
|
32
|
+
parameters[:return] = fields.join(',')
|
31
33
|
self
|
32
34
|
end
|
33
35
|
|
34
36
|
# set the number to get
|
35
37
|
# @param [Integer] size the number to get
|
36
38
|
def size(size)
|
37
|
-
|
39
|
+
parameters[:size] = size
|
38
40
|
self
|
39
41
|
end
|
40
42
|
|
41
43
|
# set the parser to be used
|
42
44
|
# @param [String] parser 'simple', 'structured', 'lucene', dismax'
|
43
45
|
def query_parser(query_parser)
|
44
|
-
|
46
|
+
parameters[:query_parser] = query_parser
|
45
47
|
self
|
46
48
|
end
|
47
49
|
|
48
50
|
# set the search start position
|
49
51
|
# @param [Integer] start start position
|
50
52
|
def start(start)
|
51
|
-
|
53
|
+
parameters[:start] = start
|
52
54
|
self
|
53
55
|
end
|
54
56
|
|
55
57
|
# set the cursor
|
56
58
|
# @param [String] cursor cursor
|
57
59
|
def cursor(cursor)
|
58
|
-
|
60
|
+
parameters[:cursor] = cursor
|
59
61
|
self
|
60
62
|
end
|
61
63
|
|
62
64
|
# sort
|
63
65
|
# @param [Array<String>] sorts ex) ['year desc']
|
64
66
|
def sort(sorts)
|
65
|
-
|
67
|
+
parameters[:sort] = sorts.join(',')
|
66
68
|
self
|
67
69
|
end
|
68
70
|
|
69
71
|
# partial
|
70
72
|
# @param [Boolean] partial true or false
|
71
73
|
def partial(partial)
|
72
|
-
|
74
|
+
parameters[:partial] = partial
|
73
75
|
self
|
74
76
|
end
|
75
77
|
|
76
78
|
# query filtering
|
77
79
|
# @param [String] filter_query "tags:'aaa'"
|
78
80
|
def filter_query(filter_query)
|
79
|
-
|
81
|
+
parameters[:filter_query] = filter_query
|
80
82
|
self
|
81
83
|
end
|
82
84
|
|
83
85
|
# query options
|
84
86
|
# @param [String] query_options ex) target field "{fields:['title']}"
|
85
87
|
def query_options(query_options)
|
86
|
-
|
88
|
+
parameters[:query_options] = query_options
|
87
89
|
self
|
88
90
|
end
|
89
91
|
|
90
92
|
# highlight
|
91
93
|
# @param [String] highlight "{'tags':{}}"
|
92
94
|
def highlight(highlight)
|
93
|
-
|
95
|
+
parameters[:highlight] = highlight
|
94
96
|
self
|
95
97
|
end
|
96
98
|
|
97
99
|
# facet
|
98
100
|
# @param [String] facet ex) "{'year':{'sort':'bucket'}}"
|
99
101
|
def facet(facet)
|
100
|
-
|
102
|
+
parameters[:facet] = facet
|
101
103
|
self
|
102
104
|
end
|
103
105
|
|
104
106
|
# define any expression
|
105
107
|
# @param [String] expr ex) "{'EXPRESSIONNAME':'EXPRESSION'}"
|
106
108
|
def expr(expr)
|
107
|
-
|
109
|
+
parameters[:expr] = expr
|
108
110
|
self
|
109
111
|
end
|
110
112
|
|
111
113
|
def search
|
112
114
|
return fake_response if Nazrin.config.mode == 'sandbox'
|
113
115
|
fail SearchClientError if deep_page?
|
114
|
-
|
116
|
+
client.search(parameters)
|
115
117
|
end
|
116
118
|
|
117
119
|
def execute
|
data/lib/nazrin/searchable.rb
CHANGED
@@ -29,11 +29,12 @@ module Nazrin
|
|
29
29
|
alias_method :searchable, :nazrin_searchable unless method_defined? :searchable
|
30
30
|
alias_method :fields, :nazrin_fields unless method_defined? :fields
|
31
31
|
alias_method :field, :nazrin_field unless method_defined? :field
|
32
|
+
alias_method :searchable_configure, :nazrin_searchable_configure unless method_defined? :searchable_configure
|
32
33
|
end
|
33
34
|
end
|
34
35
|
|
35
36
|
def nazrin_search(options = {})
|
36
|
-
client = Nazrin::SearchClient.new
|
37
|
+
client = Nazrin::SearchClient.new(nazrin_searchable_config)
|
37
38
|
client.data_accessor = Nazrin::DataAccessor.for(self).new(self, options)
|
38
39
|
client
|
39
40
|
end
|
@@ -41,7 +42,7 @@ module Nazrin
|
|
41
42
|
def nazrin_searchable(&block)
|
42
43
|
class_variable_set(
|
43
44
|
:@@nazrin_doc_client,
|
44
|
-
Nazrin::DocumentClient.new)
|
45
|
+
Nazrin::DocumentClient.new(nazrin_searchable_config))
|
45
46
|
class_variable_set(:@@nazrin_search_field_data, {})
|
46
47
|
block.call
|
47
48
|
end
|
@@ -87,6 +88,14 @@ module Nazrin
|
|
87
88
|
def nazrin_delete_document(obj)
|
88
89
|
nazrin_doc_client.delete_document(obj.send(:id))
|
89
90
|
end
|
91
|
+
|
92
|
+
def nazrin_searchable_config
|
93
|
+
@nazrin_searchable_config ||= Nazrin::Searchable::Configuration.new
|
94
|
+
end
|
95
|
+
|
96
|
+
def nazrin_searchable_configure
|
97
|
+
yield nazrin_searchable_config
|
98
|
+
end
|
90
99
|
end
|
91
100
|
end
|
92
101
|
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module Nazrin
|
2
|
+
module Searchable
|
3
|
+
class Configuration
|
4
|
+
%i(
|
5
|
+
search_endpoint
|
6
|
+
document_endpoint
|
7
|
+
region
|
8
|
+
access_key_id
|
9
|
+
secret_access_key
|
10
|
+
logger
|
11
|
+
).each do |attr|
|
12
|
+
class_eval <<-CODE, __FILE__, __LINE__ + 1
|
13
|
+
def #{attr}
|
14
|
+
@#{attr} || Nazrin.config.#{attr}
|
15
|
+
end
|
16
|
+
|
17
|
+
def #{attr}=(v)
|
18
|
+
@#{attr} = v
|
19
|
+
end
|
20
|
+
CODE
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
data/lib/nazrin/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nazrin
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tomohiro Suwa
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-01-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: aws-sdk-core
|
@@ -207,6 +207,7 @@ files:
|
|
207
207
|
- lib/nazrin/pagination_generator.rb
|
208
208
|
- lib/nazrin/search_client.rb
|
209
209
|
- lib/nazrin/searchable.rb
|
210
|
+
- lib/nazrin/searchable/config.rb
|
210
211
|
- lib/nazrin/version.rb
|
211
212
|
- nazrin.gemspec
|
212
213
|
homepage: https://github.com/tsuwatch/nazrin
|