gcloud 0.7.2 → 0.8.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/CHANGELOG.md +16 -0
- data/OVERVIEW.md +23 -18
- data/lib/gcloud.rb +41 -27
- data/lib/gcloud/datastore/credentials.rb +1 -1
- data/lib/gcloud/datastore/dataset.rb +2 -0
- data/lib/gcloud/datastore/transaction.rb +9 -2
- data/lib/gcloud/pubsub.rb +34 -0
- data/lib/gcloud/pubsub/service.rb +5 -0
- data/lib/gcloud/translate.rb +236 -0
- data/lib/gcloud/translate/api.rb +248 -0
- data/lib/gcloud/translate/connection.rb +76 -0
- data/lib/gcloud/translate/detection.rb +137 -0
- data/lib/gcloud/{search → translate}/errors.rb +7 -10
- data/lib/gcloud/translate/language.rb +69 -0
- data/lib/gcloud/translate/translation.rb +112 -0
- data/lib/gcloud/version.rb +1 -1
- metadata +9 -17
- data/lib/gcloud/search.rb +0 -318
- data/lib/gcloud/search/api_client.rb +0 -144
- data/lib/gcloud/search/connection.rb +0 -146
- data/lib/gcloud/search/credentials.rb +0 -30
- data/lib/gcloud/search/document.rb +0 -278
- data/lib/gcloud/search/document/list.rb +0 -85
- data/lib/gcloud/search/field_value.rb +0 -158
- data/lib/gcloud/search/field_values.rb +0 -233
- data/lib/gcloud/search/fields.rb +0 -246
- data/lib/gcloud/search/index.rb +0 -572
- data/lib/gcloud/search/index/list.rb +0 -90
- data/lib/gcloud/search/project.rb +0 -181
- data/lib/gcloud/search/result.rb +0 -165
- data/lib/gcloud/search/result/list.rb +0 -95
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright
|
1
|
+
# Copyright 2016 Google Inc. All rights reserved.
|
2
2
|
#
|
3
3
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
4
|
# you may not use this file except in compliance with the License.
|
@@ -16,9 +16,9 @@
|
|
16
16
|
require "gcloud/errors"
|
17
17
|
|
18
18
|
module Gcloud
|
19
|
-
module
|
19
|
+
module Translate
|
20
20
|
##
|
21
|
-
# Base
|
21
|
+
# Base Translate exception class.
|
22
22
|
class Error < Gcloud::Error
|
23
23
|
end
|
24
24
|
|
@@ -42,14 +42,11 @@ module Gcloud
|
|
42
42
|
|
43
43
|
# @private
|
44
44
|
def self.from_response resp
|
45
|
-
data
|
46
|
-
|
47
|
-
from_response_data data["error"]
|
45
|
+
if resp.data? && resp.data["error"]
|
46
|
+
from_response_data resp.data["error"]
|
48
47
|
else
|
49
48
|
from_response_status resp
|
50
49
|
end
|
51
|
-
rescue JSON::ParserError
|
52
|
-
from_response_status resp
|
53
50
|
end
|
54
51
|
|
55
52
|
# @private
|
@@ -60,10 +57,10 @@ module Gcloud
|
|
60
57
|
# @private
|
61
58
|
def self.from_response_status resp
|
62
59
|
if resp.status == 404
|
63
|
-
new "#{resp.
|
60
|
+
new "#{resp.error_message}: #{resp.request.uri.request_uri}",
|
64
61
|
resp.status
|
65
62
|
else
|
66
|
-
new resp.
|
63
|
+
new resp.error_message, resp.status
|
67
64
|
end
|
68
65
|
end
|
69
66
|
end
|
@@ -0,0 +1,69 @@
|
|
1
|
+
# Copyright 2016 Google Inc. All rights reserved.
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
|
15
|
+
|
16
|
+
module Gcloud
|
17
|
+
module Translate
|
18
|
+
##
|
19
|
+
# # Language
|
20
|
+
#
|
21
|
+
# Represents a supported languages query result. Returned by
|
22
|
+
# {Gcloud::Translate::Api#languages}.
|
23
|
+
#
|
24
|
+
# @see https://cloud.google.com/translate/v2/using_rest#supported-languages
|
25
|
+
# Discover Supported Languages
|
26
|
+
#
|
27
|
+
# @example
|
28
|
+
# require "gcloud"
|
29
|
+
#
|
30
|
+
# gcloud = Gcloud.new
|
31
|
+
# translate = gcloud.translate
|
32
|
+
#
|
33
|
+
# languages = translate.languages "en"
|
34
|
+
#
|
35
|
+
# languages.size #=> 104
|
36
|
+
# languages[0].code #=> "af"
|
37
|
+
# languages[0].name #=> "Afrikaans"
|
38
|
+
#
|
39
|
+
class Language
|
40
|
+
##
|
41
|
+
# The language code. This is an [ISO
|
42
|
+
# 639-1](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes) language
|
43
|
+
# code.
|
44
|
+
#
|
45
|
+
# @return [String]
|
46
|
+
attr_reader :code
|
47
|
+
|
48
|
+
##
|
49
|
+
# The localized name of the language, if available.
|
50
|
+
#
|
51
|
+
# @return [String]
|
52
|
+
attr_reader :name
|
53
|
+
|
54
|
+
##
|
55
|
+
# @private Create a new object.
|
56
|
+
def initialize code, name
|
57
|
+
@code = code
|
58
|
+
@name = name
|
59
|
+
end
|
60
|
+
|
61
|
+
##
|
62
|
+
# @private New Language from a LanguagesResource object as defined by the
|
63
|
+
# Google API Client object.
|
64
|
+
def self.from_gapi gapi
|
65
|
+
new gapi["language"], gapi["name"]
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
@@ -0,0 +1,112 @@
|
|
1
|
+
# Copyright 2016 Google Inc. All rights reserved.
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
|
15
|
+
|
16
|
+
module Gcloud
|
17
|
+
module Translate
|
18
|
+
##
|
19
|
+
# # Translation
|
20
|
+
#
|
21
|
+
# Represents a translation query result. Returned by
|
22
|
+
# {Gcloud::Translate::Api#translate}.
|
23
|
+
#
|
24
|
+
# @see https://cloud.google.com/translate/v2/using_rest#Translate Translate
|
25
|
+
# Text
|
26
|
+
#
|
27
|
+
# @example
|
28
|
+
# require "gcloud"
|
29
|
+
#
|
30
|
+
# gcloud = Gcloud.new
|
31
|
+
# translate = gcloud.translate
|
32
|
+
#
|
33
|
+
# translation = translate.translate "Hello world!", to: "la"
|
34
|
+
#
|
35
|
+
# puts translation #=> Salve mundi!
|
36
|
+
#
|
37
|
+
# translation.from #=> "en"
|
38
|
+
# translation.origin #=> "Hello world!"
|
39
|
+
# translation.to #=> "la"
|
40
|
+
# translation.text #=> "Salve mundi!"
|
41
|
+
#
|
42
|
+
class Translation
|
43
|
+
##
|
44
|
+
# The translated result.
|
45
|
+
#
|
46
|
+
# @return [String]
|
47
|
+
attr_reader :text
|
48
|
+
alias_method :to_s, :text
|
49
|
+
alias_method :to_str, :text
|
50
|
+
|
51
|
+
##
|
52
|
+
# The original query text that was translated.
|
53
|
+
#
|
54
|
+
# @return [String]
|
55
|
+
attr_reader :origin
|
56
|
+
|
57
|
+
##
|
58
|
+
# The target language into which the text was translated.
|
59
|
+
#
|
60
|
+
# @return [String]
|
61
|
+
attr_reader :to
|
62
|
+
alias_method :language, :to
|
63
|
+
alias_method :target, :to
|
64
|
+
|
65
|
+
##
|
66
|
+
# The source language from which the text was translated.
|
67
|
+
attr_reader :from
|
68
|
+
alias_method :source, :from
|
69
|
+
|
70
|
+
##
|
71
|
+
# @private Create a new object.
|
72
|
+
def initialize text, to, origin, from, detected
|
73
|
+
@text = text
|
74
|
+
@to = to
|
75
|
+
@origin = origin
|
76
|
+
@from = from
|
77
|
+
@detected = detected
|
78
|
+
end
|
79
|
+
|
80
|
+
##
|
81
|
+
# Determines if the source language was detected by the Google Cloud
|
82
|
+
# Translate API.
|
83
|
+
#
|
84
|
+
# @return [Boolean] `true` if the source language was detected by the
|
85
|
+
# Translate service, `false` if the source language was provided in the
|
86
|
+
# request
|
87
|
+
def detected?
|
88
|
+
@detected
|
89
|
+
end
|
90
|
+
|
91
|
+
##
|
92
|
+
# @private New Translation from a TranslationsListResponse object as
|
93
|
+
# defined by the Google API Client object.
|
94
|
+
def self.from_response resp, text, to, from
|
95
|
+
res = text.zip(Array(resp.data["translations"])).map do |origin, gapi|
|
96
|
+
from_gapi gapi, to, origin, from
|
97
|
+
end
|
98
|
+
return res.first if res.size == 1
|
99
|
+
res
|
100
|
+
end
|
101
|
+
|
102
|
+
##
|
103
|
+
# @private New Translation from a TranslationsResource object as defined
|
104
|
+
# by the Google API Client object.
|
105
|
+
def self.from_gapi gapi, to, origin, from
|
106
|
+
from ||= gapi["detectedSourceLanguage"]
|
107
|
+
detected = !gapi["detectedSourceLanguage"].nil?
|
108
|
+
new gapi["translatedText"], to, origin, from, detected
|
109
|
+
end
|
110
|
+
end
|
111
|
+
end
|
112
|
+
end
|
data/lib/gcloud/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gcloud
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.8.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Silvano Luciani
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2016-04-
|
13
|
+
date: 2016-04-28 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: grpc
|
@@ -354,21 +354,6 @@ files:
|
|
354
354
|
- lib/gcloud/resource_manager/project.rb
|
355
355
|
- lib/gcloud/resource_manager/project/list.rb
|
356
356
|
- lib/gcloud/resource_manager/project/updater.rb
|
357
|
-
- lib/gcloud/search.rb
|
358
|
-
- lib/gcloud/search/api_client.rb
|
359
|
-
- lib/gcloud/search/connection.rb
|
360
|
-
- lib/gcloud/search/credentials.rb
|
361
|
-
- lib/gcloud/search/document.rb
|
362
|
-
- lib/gcloud/search/document/list.rb
|
363
|
-
- lib/gcloud/search/errors.rb
|
364
|
-
- lib/gcloud/search/field_value.rb
|
365
|
-
- lib/gcloud/search/field_values.rb
|
366
|
-
- lib/gcloud/search/fields.rb
|
367
|
-
- lib/gcloud/search/index.rb
|
368
|
-
- lib/gcloud/search/index/list.rb
|
369
|
-
- lib/gcloud/search/project.rb
|
370
|
-
- lib/gcloud/search/result.rb
|
371
|
-
- lib/gcloud/search/result/list.rb
|
372
357
|
- lib/gcloud/storage.rb
|
373
358
|
- lib/gcloud/storage/bucket.rb
|
374
359
|
- lib/gcloud/storage/bucket/acl.rb
|
@@ -382,6 +367,13 @@ files:
|
|
382
367
|
- lib/gcloud/storage/file/list.rb
|
383
368
|
- lib/gcloud/storage/file/verifier.rb
|
384
369
|
- lib/gcloud/storage/project.rb
|
370
|
+
- lib/gcloud/translate.rb
|
371
|
+
- lib/gcloud/translate/api.rb
|
372
|
+
- lib/gcloud/translate/connection.rb
|
373
|
+
- lib/gcloud/translate/detection.rb
|
374
|
+
- lib/gcloud/translate/errors.rb
|
375
|
+
- lib/gcloud/translate/language.rb
|
376
|
+
- lib/gcloud/translate/translation.rb
|
385
377
|
- lib/gcloud/upload.rb
|
386
378
|
- lib/gcloud/version.rb
|
387
379
|
- lib/google/api/annotations.rb
|
data/lib/gcloud/search.rb
DELETED
@@ -1,318 +0,0 @@
|
|
1
|
-
# Copyright 2015 Google Inc. All rights reserved.
|
2
|
-
#
|
3
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
-
# you may not use this file except in compliance with the License.
|
5
|
-
# You may obtain a copy of the License at
|
6
|
-
#
|
7
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
-
#
|
9
|
-
# Unless required by applicable law or agreed to in writing, software
|
10
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
-
# See the License for the specific language governing permissions and
|
13
|
-
# limitations under the License.
|
14
|
-
|
15
|
-
|
16
|
-
require "gcloud"
|
17
|
-
require "gcloud/search/project"
|
18
|
-
|
19
|
-
module Gcloud
|
20
|
-
##
|
21
|
-
# Creates a new `Project` instance connected to the Search service.
|
22
|
-
# Each call creates a new connection.
|
23
|
-
#
|
24
|
-
# For more information on connecting to Google Cloud see the [Authentication
|
25
|
-
# Guide](https://googlecloudplatform.github.io/gcloud-ruby/#/docs/guides/authentication).
|
26
|
-
#
|
27
|
-
# @param [String] project Identifier for a Search project. If not present, the
|
28
|
-
# default project for the credentials is used.
|
29
|
-
# @param [String, Hash] keyfile Keyfile downloaded from Google Cloud. If file
|
30
|
-
# path the file must be readable.
|
31
|
-
# @param [String, Array<String>] scope The OAuth 2.0 scopes controlling the
|
32
|
-
# set of resources and operations that the connection can access. See [Using
|
33
|
-
# OAuth 2.0 to Access Google
|
34
|
-
# APIs](https://developers.google.com/identity/protocols/OAuth2).
|
35
|
-
#
|
36
|
-
# The default scopes are:
|
37
|
-
#
|
38
|
-
# * `https://www.googleapis.com/auth/cloudsearch`
|
39
|
-
# * `https://www.googleapis.com/auth/userinfo.email`
|
40
|
-
#
|
41
|
-
# @return [Gcloud::Search::Project]
|
42
|
-
#
|
43
|
-
def self.search project = nil, keyfile = nil, scope: nil
|
44
|
-
project ||= Gcloud::Search::Project.default_project
|
45
|
-
if keyfile.nil?
|
46
|
-
credentials = Gcloud::Search::Credentials.default scope: scope
|
47
|
-
else
|
48
|
-
credentials = Gcloud::Search::Credentials.new keyfile, scope: scope
|
49
|
-
end
|
50
|
-
Gcloud::Search::Project.new project, credentials
|
51
|
-
end
|
52
|
-
|
53
|
-
# rubocop:disable Metrics/LineLength
|
54
|
-
# Disabled because there are links in the docs that are long.
|
55
|
-
|
56
|
-
##
|
57
|
-
# # Google Cloud Search
|
58
|
-
#
|
59
|
-
# Google Cloud Search allows an application to quickly perform full-text and
|
60
|
-
# geo-spatial searches without having to spin up instances and without the
|
61
|
-
# hassle of managing and maintaining a search service.
|
62
|
-
#
|
63
|
-
# Cloud Search provides a model for indexing documents containing structured
|
64
|
-
# data, with documents and indexes saved to a separate persistent store
|
65
|
-
# optimized for search operations. The API supports full text matching on
|
66
|
-
# string fields and allows indexing any number of documents in any number of
|
67
|
-
# indexes.
|
68
|
-
#
|
69
|
-
# The Cloud Search API is an Alpha release, and might be changed in
|
70
|
-
# backward-incompatible ways. It is not currently recommended for production
|
71
|
-
# use. It is not subject to any SLA or deprecation policy.
|
72
|
-
#
|
73
|
-
# ## Accessing the Service
|
74
|
-
#
|
75
|
-
# Currently, the Cloud Search API is available only to white-listed users.
|
76
|
-
# Contact your account manager or a member of the Google Cloud sales team if
|
77
|
-
# you are interested in access.
|
78
|
-
#
|
79
|
-
# ## Authentication
|
80
|
-
#
|
81
|
-
# Authentication is handled by {Gcloud#search}. You can provide the project and
|
82
|
-
# credential information to connect to the Cloud Search service, or if you are
|
83
|
-
# running on Google Compute Engine this configuration is taken care of for
|
84
|
-
# you. You can read more about the options for connecting in the
|
85
|
-
# [Authentication
|
86
|
-
# Guide](https://googlecloudplatform.github.io/gcloud-ruby/#/docs/guides/authentication).
|
87
|
-
#
|
88
|
-
# ## Managing Indexes
|
89
|
-
#
|
90
|
-
# An Index is a searchable collection of documents that belongs to a Project.
|
91
|
-
#
|
92
|
-
# You can list the indexes in your current project:
|
93
|
-
#
|
94
|
-
# ```ruby
|
95
|
-
# require "gcloud"
|
96
|
-
#
|
97
|
-
# gcloud = Gcloud.new
|
98
|
-
# search = gcloud.search
|
99
|
-
#
|
100
|
-
# indexes = search.indexes # API call
|
101
|
-
# indexes.each do |index|
|
102
|
-
# puts index.index_id
|
103
|
-
# end
|
104
|
-
# ```
|
105
|
-
#
|
106
|
-
# And you can use the project to create new indexes:
|
107
|
-
#
|
108
|
-
# ```ruby
|
109
|
-
# require "gcloud"
|
110
|
-
#
|
111
|
-
# gcloud = Gcloud.new
|
112
|
-
# search = gcloud.search
|
113
|
-
#
|
114
|
-
# index = search.index "products", skip_lookup: true
|
115
|
-
# ```
|
116
|
-
#
|
117
|
-
# A new index is an unsaved value object. Indexes cannot be created,
|
118
|
-
# updated, or deleted directly in the service: They are derived from the
|
119
|
-
# documents which are created "within" them. A new index will exist in the
|
120
|
-
# service once you save a document that references it.
|
121
|
-
#
|
122
|
-
# ## Managing Documents
|
123
|
-
#
|
124
|
-
# Using an index, create a new, unsaved Document instance, providing
|
125
|
-
# your own unique document ID, as shown below, or omitting this argument to
|
126
|
-
# let the service assign the ID.
|
127
|
-
#
|
128
|
-
# ```ruby
|
129
|
-
# require "gcloud"
|
130
|
-
#
|
131
|
-
# gcloud = Gcloud.new
|
132
|
-
# search = gcloud.search
|
133
|
-
#
|
134
|
-
# index = search.index "products"
|
135
|
-
# document = index.document "product-sku-000001"
|
136
|
-
# index.find document # API call
|
137
|
-
# #=> nil
|
138
|
-
# document.rank #=> nil
|
139
|
-
# ```
|
140
|
-
#
|
141
|
-
# Add one or more fields to the document. (See [Adding document fields](#module-Gcloud::Search-label-Adding`document`fields), below.)
|
142
|
-
#
|
143
|
-
# ```ruby
|
144
|
-
# document.add "price", 24.95
|
145
|
-
# ```
|
146
|
-
#
|
147
|
-
# When your document is complete, save it:
|
148
|
-
#
|
149
|
-
# ```ruby
|
150
|
-
# index.save document # API call
|
151
|
-
# document.rank # set by the server
|
152
|
-
# #=> 1443648166
|
153
|
-
# ```
|
154
|
-
#
|
155
|
-
# You can list the documents in an index:
|
156
|
-
#
|
157
|
-
# ```ruby
|
158
|
-
# require "gcloud"
|
159
|
-
#
|
160
|
-
# gcloud = Gcloud.new
|
161
|
-
# search = gcloud.search
|
162
|
-
# index = search.index "products"
|
163
|
-
#
|
164
|
-
# documents = index.documents # API call
|
165
|
-
# documents.map &:doc_id #=> ["product-sku-000001"]
|
166
|
-
# ```
|
167
|
-
#
|
168
|
-
# And you can delete documents:
|
169
|
-
#
|
170
|
-
# ```ruby
|
171
|
-
# require "gcloud"
|
172
|
-
#
|
173
|
-
# gcloud = Gcloud.new
|
174
|
-
# search = gcloud.search
|
175
|
-
# index = search.index "products"
|
176
|
-
#
|
177
|
-
# document = index.find "product-sku-000001"
|
178
|
-
#
|
179
|
-
# document.delete # API call
|
180
|
-
# index.find document # API call
|
181
|
-
# #=> nil
|
182
|
-
# ```
|
183
|
-
#
|
184
|
-
# To update a document after manipulating its fields or rank, just re-save it:
|
185
|
-
#
|
186
|
-
# ```ruby
|
187
|
-
# require "gcloud"
|
188
|
-
#
|
189
|
-
# gcloud = Gcloud.new
|
190
|
-
# search = gcloud.search
|
191
|
-
# index = search.index "products"
|
192
|
-
#
|
193
|
-
# document = index.find "product-sku-000001"
|
194
|
-
#
|
195
|
-
# document.rank = 12345
|
196
|
-
# document.add "price", 9.95 # replace existing number value
|
197
|
-
# index.save document # API call
|
198
|
-
# ```
|
199
|
-
#
|
200
|
-
# ## Adding document fields
|
201
|
-
#
|
202
|
-
# Fields belong to documents and are the data that actually gets searched.
|
203
|
-
# Each field has a FieldValues collection, which facilitates access to
|
204
|
-
# FieldValue objects. Each FieldValue object will be saved as one of the
|
205
|
-
# [Cloud Search types](https://cloud.google.com/search/documents_indexes#document_fields_field_names_and_multi-valued_fields).
|
206
|
-
# The type will be inferred from the value when possible, or you can
|
207
|
-
# explicitly specify it by passing a symbol with the `type` option to
|
208
|
-
# {Gcloud::Search::Document#add}.
|
209
|
-
#
|
210
|
-
# - String (`:atom`, `:html`, `:text`, or `:default`)
|
211
|
-
# - Number (`:number`)
|
212
|
-
# - Timestamp (`:datetime`)
|
213
|
-
# - Geovalue (`:geo`)
|
214
|
-
#
|
215
|
-
# String values can be tokenized using one of three different types of
|
216
|
-
# tokenization, which can be passed with the `type` option when the value is
|
217
|
-
# added:
|
218
|
-
#
|
219
|
-
# - `:atom` means "don't tokenize this string", treat it as one
|
220
|
-
# thing to compare against
|
221
|
-
#
|
222
|
-
# - `:html` means "treat this string as HTML", not comparing against the
|
223
|
-
# tags, and treating the rest of the content like `:text`
|
224
|
-
#
|
225
|
-
# - `:text` means "treat this string as normal text" and split words
|
226
|
-
# apart to be compared against
|
227
|
-
#
|
228
|
-
# Again, you can add more than one value to a field, and the values may be of
|
229
|
-
# different types.
|
230
|
-
#
|
231
|
-
# ```ruby
|
232
|
-
# require "gcloud"
|
233
|
-
#
|
234
|
-
# gcloud = Gcloud.new
|
235
|
-
# search = gcloud.search
|
236
|
-
#
|
237
|
-
# index = search.index "products"
|
238
|
-
# document = index.find "product-sku-000001"
|
239
|
-
# document.add "description", "The best T-shirt ever.", type: :text, lang: "en"
|
240
|
-
# document.add "description", "<p>The best T-shirt ever.</p>", type: :html, lang: "en"
|
241
|
-
# document["description"].size #=> 2
|
242
|
-
# ```
|
243
|
-
#
|
244
|
-
# ## Searching
|
245
|
-
#
|
246
|
-
# After populating an index with documents, you can request search results
|
247
|
-
# with a query:
|
248
|
-
#
|
249
|
-
# ```ruby
|
250
|
-
# require "gcloud"
|
251
|
-
#
|
252
|
-
# gcloud = Gcloud.new
|
253
|
-
# search = gcloud.search
|
254
|
-
# index = search.index "books"
|
255
|
-
#
|
256
|
-
# results = index.search "dark stormy"
|
257
|
-
# results.each do |result|
|
258
|
-
# puts result.doc_id
|
259
|
-
# end
|
260
|
-
# ```
|
261
|
-
#
|
262
|
-
# By default, Result objects are sorted by document rank. For more information
|
263
|
-
# see the [REST API documentation for Document.rank](https://cloud.google.com/search/reference/rest/v1/projects/indexes/documents#resource_representation.google.cloudsearch.v1.Document.rank).
|
264
|
-
#
|
265
|
-
# You can specify how to sort results with the `order` option:
|
266
|
-
#
|
267
|
-
# ```ruby
|
268
|
-
# require "gcloud"
|
269
|
-
#
|
270
|
-
# gcloud = Gcloud.new
|
271
|
-
# search = gcloud.search
|
272
|
-
# index = search.index "books"
|
273
|
-
#
|
274
|
-
# results = index.search "dark stormy", order: "published, avg_review desc"
|
275
|
-
# documents = index.search query # API call
|
276
|
-
# ```
|
277
|
-
#
|
278
|
-
# You can add computed fields with the `expressions` option, and specify the
|
279
|
-
# fields that are returned with the `fields` option. No document data will be
|
280
|
-
# returned if you omit the `fields` option, only `doc_id` references to any
|
281
|
-
# matched documents.
|
282
|
-
#
|
283
|
-
# ```ruby
|
284
|
-
# require "gcloud"
|
285
|
-
#
|
286
|
-
# gcloud = Gcloud.new
|
287
|
-
# search = gcloud.search
|
288
|
-
# index = search.index "products"
|
289
|
-
#
|
290
|
-
# results = index.search "cotton T-shirt",
|
291
|
-
# expressions: { total_price: "(price + tax)" },
|
292
|
-
# fields: ["name", "total_price", "highlight"]
|
293
|
-
# ```
|
294
|
-
#
|
295
|
-
# Just as in documents, Result data is accessible via Fields methods:
|
296
|
-
#
|
297
|
-
# ```ruby
|
298
|
-
# require "gcloud"
|
299
|
-
#
|
300
|
-
# gcloud = Gcloud.new
|
301
|
-
# search = gcloud.search
|
302
|
-
# index = search.index "products"
|
303
|
-
# document = index.find "product-sku-000001"
|
304
|
-
# results = index.search "cotton T-shirt"
|
305
|
-
# values = results[0]["description"]
|
306
|
-
#
|
307
|
-
# values[0] #=> "100% organic cotton ruby gem T-shirt"
|
308
|
-
# values[0].type #=> :text
|
309
|
-
# values[0].lang #=> "en"
|
310
|
-
# values[1] #=> "<p>100% organic cotton ruby gem T-shirt</p>"
|
311
|
-
# values[1].type #=> :html
|
312
|
-
# values[1].lang #=> "en"
|
313
|
-
# ```
|
314
|
-
#
|
315
|
-
module Search
|
316
|
-
end
|
317
|
-
# rubocop:enable Metrics/LineLength
|
318
|
-
end
|