nazrin 2.3.0 → 2.4.0
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/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
|