Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(552)

Side by Side Diff: third_party/gsutil/boto/cloudsearch/layer1.py

Issue 12042069: Scripts to download files from google storage based on sha1 sums (Closed) Base URL: https://chromium.googlesource.com/chromium/tools/depot_tools.git@master
Patch Set: Removed gsutil/tests and gsutil/docs Created 7 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 # Copyright (c) 2012 Mitch Garnaat http://garnaat.org/
2 # Copyright (c) 2012 Amazon.com, Inc. or its affiliates.
3 # All Rights Reserved
4 #
5 # Permission is hereby granted, free of charge, to any person obtaining a
6 # copy of this software and associated documentation files (the
7 # "Software"), to deal in the Software without restriction, including
8 # without limitation the rights to use, copy, modify, merge, publish, dis-
9 # tribute, sublicense, and/or sell copies of the Software, and to permit
10 # persons to whom the Software is furnished to do so, subject to the fol-
11 # lowing conditions:
12 #
13 # The above copyright notice and this permission notice shall be included
14 # in all copies or substantial portions of the Software.
15 #
16 # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
17 # OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABIL-
18 # ITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
19 # SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
20 # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21 # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
22 # IN THE SOFTWARE.
23
24 import boto
25 import boto.jsonresponse
26 from boto.connection import AWSQueryConnection
27 from boto.regioninfo import RegionInfo
28
29 #boto.set_stream_logger('cloudsearch')
30
31
32 def do_bool(val):
33 return 'true' if val in [True, 1, '1', 'true'] else 'false'
34
35
36 class Layer1(AWSQueryConnection):
37
38 APIVersion = '2011-02-01'
39 DefaultRegionName = boto.config.get('Boto', 'cs_region_name', 'us-east-1')
40 DefaultRegionEndpoint = boto.config.get('Boto', 'cs_region_endpoint',
41 'cloudsearch.us-east-1.amazonaws.com ')
42
43 def __init__(self, aws_access_key_id=None, aws_secret_access_key=None,
44 is_secure=True, host=None, port=None,
45 proxy=None, proxy_port=None,
46 proxy_user=None, proxy_pass=None, debug=0,
47 https_connection_factory=None, region=None, path='/',
48 api_version=None, security_token=None,
49 validate_certs=True):
50 if not region:
51 region = RegionInfo(self, self.DefaultRegionName,
52 self.DefaultRegionEndpoint)
53 self.region = region
54 AWSQueryConnection.__init__(self, aws_access_key_id,
55 aws_secret_access_key,
56 is_secure, port, proxy, proxy_port,
57 proxy_user, proxy_pass,
58 self.region.endpoint, debug,
59 https_connection_factory, path,
60 security_token,
61 validate_certs=validate_certs)
62
63 def _required_auth_capability(self):
64 return ['sign-v2']
65
66 def get_response(self, doc_path, action, params, path='/',
67 parent=None, verb='GET', list_marker=None):
68 if not parent:
69 parent = self
70 response = self.make_request(action, params, path, verb)
71 body = response.read()
72 boto.log.debug(body)
73 if response.status == 200:
74 e = boto.jsonresponse.Element(
75 list_marker=list_marker if list_marker else 'Set',
76 pythonize_name=True)
77 h = boto.jsonresponse.XmlHandler(e, parent)
78 h.parse(body)
79 inner = e
80 for p in doc_path:
81 inner = inner.get(p)
82 if not inner:
83 return None if list_marker == None else []
84 if isinstance(inner, list):
85 return [dict(**i) for i in inner]
86 else:
87 return dict(**inner)
88 else:
89 raise self.ResponseError(response.status, response.reason, body)
90
91 def create_domain(self, domain_name):
92 """
93 Create a new search domain.
94
95 :type domain_name: string
96 :param domain_name: A string that represents the name of a
97 domain. Domain names must be unique across the domains
98 owned by an account within an AWS region. Domain names
99 must start with a letter or number and can contain the
100 following characters: a-z (lowercase), 0-9, and -
101 (hyphen). Uppercase letters and underscores are not
102 allowed.
103
104 :raises: BaseException, InternalException, LimitExceededException
105 """
106 doc_path = ('create_domain_response',
107 'create_domain_result',
108 'domain_status')
109 params = {'DomainName': domain_name}
110 return self.get_response(doc_path, 'CreateDomain',
111 params, verb='POST')
112
113 def define_index_field(self, domain_name, field_name, field_type,
114 default='', facet=False, result=False,
115 searchable=False, source_attributes=None):
116 """
117 Defines an ``IndexField``, either replacing an existing
118 definition or creating a new one.
119
120 :type domain_name: string
121 :param domain_name: A string that represents the name of a
122 domain. Domain names must be unique across the domains
123 owned by an account within an AWS region. Domain names
124 must start with a letter or number and can contain the
125 following characters: a-z (lowercase), 0-9, and -
126 (hyphen). Uppercase letters and underscores are not
127 allowed.
128
129 :type field_name: string
130 :param field_name: The name of a field in the search index.
131
132 :type field_type: string
133 :param field_type: The type of field. Valid values are
134 uint | literal | text
135
136 :type default: string or int
137 :param default: The default value for the field. If the
138 field is of type ``uint`` this should be an integer value.
139 Otherwise, it's a string.
140
141 :type facet: bool
142 :param facet: A boolean to indicate whether facets
143 are enabled for this field or not. Does not apply to
144 fields of type ``uint``.
145
146 :type results: bool
147 :param results: A boolean to indicate whether values
148 of this field can be returned in search results or
149 used in ranking. Does not apply to fields of type ``uint``.
150
151 :type searchable: bool
152 :param searchable: A boolean to indicate whether search
153 is enabled for this field or not. Applies only to fields
154 of type ``literal``.
155
156 :type source_attributes: list of dicts
157 :param source_attributes: An optional list of dicts that
158 provide information about attributes for this index field.
159 A maximum of 20 source attributes can be configured for
160 each index field.
161
162 Each item in the list is a dict with the following keys:
163
164 * data_copy - The value is a dict with the following keys:
165 * default - Optional default value if the source attribute
166 is not specified in a document.
167 * name - The name of the document source field to add
168 to this ``IndexField``.
169 * data_function - Identifies the transformation to apply
170 when copying data from a source attribute.
171 * data_map - The value is a dict with the following keys:
172 * cases - A dict that translates source field values
173 to custom values.
174 * default - An optional default value to use if the
175 source attribute is not specified in a document.
176 * name - the name of the document source field to add
177 to this ``IndexField``
178 * data_trim_title - Trims common title words from a source
179 document attribute when populating an ``IndexField``.
180 This can be used to create an ``IndexField`` you can
181 use for sorting. The value is a dict with the following
182 fields:
183 * default - An optional default value.
184 * language - an IETF RFC 4646 language code.
185 * separator - The separator that follows the text to trim.
186 * name - The name of the document source field to add.
187
188 :raises: BaseException, InternalException, LimitExceededException,
189 InvalidTypeException, ResourceNotFoundException
190 """
191 doc_path = ('define_index_field_response',
192 'define_index_field_result',
193 'index_field')
194 params = {'DomainName': domain_name,
195 'IndexField.IndexFieldName': field_name,
196 'IndexField.IndexFieldType': field_type}
197 if field_type == 'literal':
198 params['IndexField.LiteralOptions.DefaultValue'] = default
199 params['IndexField.LiteralOptions.FacetEnabled'] = do_bool(facet)
200 params['IndexField.LiteralOptions.ResultEnabled'] = do_bool(result)
201 params['IndexField.LiteralOptions.SearchEnabled'] = do_bool(searchab le)
202 elif field_type == 'uint':
203 params['IndexField.UIntOptions.DefaultValue'] = default
204 elif field_type == 'text':
205 params['IndexField.TextOptions.DefaultValue'] = default
206 params['IndexField.TextOptions.FacetEnabled'] = do_bool(facet)
207 params['IndexField.TextOptions.ResultEnabled'] = do_bool(result)
208
209 return self.get_response(doc_path, 'DefineIndexField',
210 params, verb='POST')
211
212 def define_rank_expression(self, domain_name, rank_name, rank_expression):
213 """
214 Defines a RankExpression, either replacing an existing
215 definition or creating a new one.
216
217 :type domain_name: string
218 :param domain_name: A string that represents the name of a
219 domain. Domain names must be unique across the domains
220 owned by an account within an AWS region. Domain names
221 must start with a letter or number and can contain the
222 following characters: a-z (lowercase), 0-9, and -
223 (hyphen). Uppercase letters and underscores are not
224 allowed.
225
226 :type rank_name: string
227 :param rank_name: The name of an expression computed for ranking
228 while processing a search request.
229
230 :type rank_expression: string
231 :param rank_expression: The expression to evaluate for ranking
232 or thresholding while processing a search request. The
233 RankExpression syntax is based on JavaScript expressions
234 and supports:
235
236 * Integer, floating point, hex and octal literals
237 * Shortcut evaluation of logical operators such that an
238 expression a || b evaluates to the value a if a is
239 true without evaluting b at all
240 * JavaScript order of precedence for operators
241 * Arithmetic operators: + - * / %
242 * Boolean operators (including the ternary operator)
243 * Bitwise operators
244 * Comparison operators
245 * Common mathematic functions: abs ceil erf exp floor
246 lgamma ln log2 log10 max min sqrt pow
247 * Trigonometric library functions: acosh acos asinh asin
248 atanh atan cosh cos sinh sin tanh tan
249 * Random generation of a number between 0 and 1: rand
250 * Current time in epoch: time
251 * The min max functions that operate on a variable argument list
252
253 Intermediate results are calculated as double precision
254 floating point values. The final return value of a
255 RankExpression is automatically converted from floating
256 point to a 32-bit unsigned integer by rounding to the
257 nearest integer, with a natural floor of 0 and a ceiling
258 of max(uint32_t), 4294967295. Mathematical errors such as
259 dividing by 0 will fail during evaluation and return a
260 value of 0.
261
262 The source data for a RankExpression can be the name of an
263 IndexField of type uint, another RankExpression or the
264 reserved name text_relevance. The text_relevance source is
265 defined to return an integer from 0 to 1000 (inclusive) to
266 indicate how relevant a document is to the search request,
267 taking into account repetition of search terms in the
268 document and proximity of search terms to each other in
269 each matching IndexField in the document.
270
271 For more information about using rank expressions to
272 customize ranking, see the Amazon CloudSearch Developer
273 Guide.
274
275 :raises: BaseException, InternalException, LimitExceededException,
276 InvalidTypeException, ResourceNotFoundException
277 """
278 doc_path = ('define_rank_expression_response',
279 'define_rank_expression_result',
280 'rank_expression')
281 params = {'DomainName': domain_name,
282 'RankExpression.RankExpression': rank_expression,
283 'RankExpression.RankName': rank_name}
284 return self.get_response(doc_path, 'DefineRankExpression',
285 params, verb='POST')
286
287 def delete_domain(self, domain_name):
288 """
289 Delete a search domain.
290
291 :type domain_name: string
292 :param domain_name: A string that represents the name of a
293 domain. Domain names must be unique across the domains
294 owned by an account within an AWS region. Domain names
295 must start with a letter or number and can contain the
296 following characters: a-z (lowercase), 0-9, and -
297 (hyphen). Uppercase letters and underscores are not
298 allowed.
299
300 :raises: BaseException, InternalException
301 """
302 doc_path = ('delete_domain_response',
303 'delete_domain_result',
304 'domain_status')
305 params = {'DomainName': domain_name}
306 return self.get_response(doc_path, 'DeleteDomain',
307 params, verb='POST')
308
309 def delete_index_field(self, domain_name, field_name):
310 """
311 Deletes an existing ``IndexField`` from the search domain.
312
313 :type domain_name: string
314 :param domain_name: A string that represents the name of a
315 domain. Domain names must be unique across the domains
316 owned by an account within an AWS region. Domain names
317 must start with a letter or number and can contain the
318 following characters: a-z (lowercase), 0-9, and -
319 (hyphen). Uppercase letters and underscores are not
320 allowed.
321
322 :type field_name: string
323 :param field_name: A string that represents the name of
324 an index field. Field names must begin with a letter and
325 can contain the following characters: a-z (lowercase),
326 0-9, and _ (underscore). Uppercase letters and hyphens are
327 not allowed. The names "body", "docid", and
328 "text_relevance" are reserved and cannot be specified as
329 field or rank expression names.
330
331 :raises: BaseException, InternalException, ResourceNotFoundException
332 """
333 doc_path = ('delete_index_field_response',
334 'delete_index_field_result',
335 'index_field')
336 params = {'DomainName': domain_name,
337 'IndexFieldName': field_name}
338 return self.get_response(doc_path, 'DeleteIndexField',
339 params, verb='POST')
340
341 def delete_rank_expression(self, domain_name, rank_name):
342 """
343 Deletes an existing ``RankExpression`` from the search domain.
344
345 :type domain_name: string
346 :param domain_name: A string that represents the name of a
347 domain. Domain names must be unique across the domains
348 owned by an account within an AWS region. Domain names
349 must start with a letter or number and can contain the
350 following characters: a-z (lowercase), 0-9, and -
351 (hyphen). Uppercase letters and underscores are not
352 allowed.
353
354 :type rank_name: string
355 :param rank_name: Name of the ``RankExpression`` to delete.
356
357 :raises: BaseException, InternalException, ResourceNotFoundException
358 """
359 doc_path = ('delete_rank_expression_response',
360 'delete_rank_expression_result',
361 'rank_expression')
362 params = {'DomainName': domain_name, 'RankName': rank_name}
363 return self.get_response(doc_path, 'DeleteRankExpression',
364 params, verb='POST')
365
366 def describe_default_search_field(self, domain_name):
367 """
368 Describes options defining the default search field used by
369 indexing for the search domain.
370
371 :type domain_name: string
372 :param domain_name: A string that represents the name of a
373 domain. Domain names must be unique across the domains
374 owned by an account within an AWS region. Domain names
375 must start with a letter or number and can contain the
376 following characters: a-z (lowercase), 0-9, and -
377 (hyphen). Uppercase letters and underscores are not
378 allowed.
379
380 :raises: BaseException, InternalException, ResourceNotFoundException
381 """
382 doc_path = ('describe_default_search_field_response',
383 'describe_default_search_field_result',
384 'default_search_field')
385 params = {'DomainName': domain_name}
386 return self.get_response(doc_path, 'DescribeDefaultSearchField',
387 params, verb='POST')
388
389 def describe_domains(self, domain_names=None):
390 """
391 Describes the domains (optionally limited to one or more
392 domains by name) owned by this account.
393
394 :type domain_names: list
395 :param domain_names: Limits the response to the specified domains.
396
397 :raises: BaseException, InternalException
398 """
399 doc_path = ('describe_domains_response',
400 'describe_domains_result',
401 'domain_status_list')
402 params = {}
403 if domain_names:
404 for i, domain_name in enumerate(domain_names, 1):
405 params['DomainNames.member.%d' % i] = domain_name
406 return self.get_response(doc_path, 'DescribeDomains',
407 params, verb='POST',
408 list_marker='DomainStatusList')
409
410 def describe_index_fields(self, domain_name, field_names=None):
411 """
412 Describes index fields in the search domain, optionally
413 limited to a single ``IndexField``.
414
415 :type domain_name: string
416 :param domain_name: A string that represents the name of a
417 domain. Domain names must be unique across the domains
418 owned by an account within an AWS region. Domain names
419 must start with a letter or number and can contain the
420 following characters: a-z (lowercase), 0-9, and -
421 (hyphen). Uppercase letters and underscores are not
422 allowed.
423
424 :type field_names: list
425 :param field_names: Limits the response to the specified fields.
426
427 :raises: BaseException, InternalException, ResourceNotFoundException
428 """
429 doc_path = ('describe_index_fields_response',
430 'describe_index_fields_result',
431 'index_fields')
432 params = {'DomainName': domain_name}
433 if field_names:
434 for i, field_name in enumerate(field_names, 1):
435 params['FieldNames.member.%d' % i] = field_name
436 return self.get_response(doc_path, 'DescribeIndexFields',
437 params, verb='POST',
438 list_marker='IndexFields')
439
440 def describe_rank_expressions(self, domain_name, rank_names=None):
441 """
442 Describes RankExpressions in the search domain, optionally
443 limited to a single expression.
444
445 :type domain_name: string
446 :param domain_name: A string that represents the name of a
447 domain. Domain names must be unique across the domains
448 owned by an account within an AWS region. Domain names
449 must start with a letter or number and can contain the
450 following characters: a-z (lowercase), 0-9, and -
451 (hyphen). Uppercase letters and underscores are not
452 allowed.
453
454 :type rank_names: list
455 :param rank_names: Limit response to the specified rank names.
456
457 :raises: BaseException, InternalException, ResourceNotFoundException
458 """
459 doc_path = ('describe_rank_expressions_response',
460 'describe_rank_expressions_result',
461 'rank_expressions')
462 params = {'DomainName': domain_name}
463 if rank_names:
464 for i, rank_name in enumerate(rank_names, 1):
465 params['RankNames.member.%d' % i] = rank_name
466 return self.get_response(doc_path, 'DescribeRankExpressions',
467 params, verb='POST',
468 list_marker='RankExpressions')
469
470 def describe_service_access_policies(self, domain_name):
471 """
472 Describes the resource-based policies controlling access to
473 the services in this search domain.
474
475 :type domain_name: string
476 :param domain_name: A string that represents the name of a
477 domain. Domain names must be unique across the domains
478 owned by an account within an AWS region. Domain names
479 must start with a letter or number and can contain the
480 following characters: a-z (lowercase), 0-9, and -
481 (hyphen). Uppercase letters and underscores are not
482 allowed.
483
484 :raises: BaseException, InternalException, ResourceNotFoundException
485 """
486 doc_path = ('describe_service_access_policies_response',
487 'describe_service_access_policies_result',
488 'access_policies')
489 params = {'DomainName': domain_name}
490 return self.get_response(doc_path, 'DescribeServiceAccessPolicies',
491 params, verb='POST')
492
493 def describe_stemming_options(self, domain_name):
494 """
495 Describes stemming options used by indexing for the search domain.
496
497 :type domain_name: string
498 :param domain_name: A string that represents the name of a
499 domain. Domain names must be unique across the domains
500 owned by an account within an AWS region. Domain names
501 must start with a letter or number and can contain the
502 following characters: a-z (lowercase), 0-9, and -
503 (hyphen). Uppercase letters and underscores are not
504 allowed.
505
506 :raises: BaseException, InternalException, ResourceNotFoundException
507 """
508 doc_path = ('describe_stemming_options_response',
509 'describe_stemming_options_result',
510 'stems')
511 params = {'DomainName': domain_name}
512 return self.get_response(doc_path, 'DescribeStemmingOptions',
513 params, verb='POST')
514
515 def describe_stopword_options(self, domain_name):
516 """
517 Describes stopword options used by indexing for the search domain.
518
519 :type domain_name: string
520 :param domain_name: A string that represents the name of a
521 domain. Domain names must be unique across the domains
522 owned by an account within an AWS region. Domain names
523 must start with a letter or number and can contain the
524 following characters: a-z (lowercase), 0-9, and -
525 (hyphen). Uppercase letters and underscores are not
526 allowed.
527
528 :raises: BaseException, InternalException, ResourceNotFoundException
529 """
530 doc_path = ('describe_stopword_options_response',
531 'describe_stopword_options_result',
532 'stopwords')
533 params = {'DomainName': domain_name}
534 return self.get_response(doc_path, 'DescribeStopwordOptions',
535 params, verb='POST')
536
537 def describe_synonym_options(self, domain_name):
538 """
539 Describes synonym options used by indexing for the search domain.
540
541 :type domain_name: string
542 :param domain_name: A string that represents the name of a
543 domain. Domain names must be unique across the domains
544 owned by an account within an AWS region. Domain names
545 must start with a letter or number and can contain the
546 following characters: a-z (lowercase), 0-9, and -
547 (hyphen). Uppercase letters and underscores are not
548 allowed.
549
550 :raises: BaseException, InternalException, ResourceNotFoundException
551 """
552 doc_path = ('describe_synonym_options_response',
553 'describe_synonym_options_result',
554 'synonyms')
555 params = {'DomainName': domain_name}
556 return self.get_response(doc_path, 'DescribeSynonymOptions',
557 params, verb='POST')
558
559 def index_documents(self, domain_name):
560 """
561 Tells the search domain to start scanning its documents using
562 the latest text processing options and ``IndexFields``. This
563 operation must be invoked to make visible in searches any
564 options whose <a>OptionStatus</a> has ``OptionState`` of
565 ``RequiresIndexDocuments``.
566
567 :type domain_name: string
568 :param domain_name: A string that represents the name of a
569 domain. Domain names must be unique across the domains
570 owned by an account within an AWS region. Domain names
571 must start with a letter or number and can contain the
572 following characters: a-z (lowercase), 0-9, and -
573 (hyphen). Uppercase letters and underscores are not
574 allowed.
575
576 :raises: BaseException, InternalException, ResourceNotFoundException
577 """
578 doc_path = ('index_documents_response',
579 'index_documents_result',
580 'field_names')
581 params = {'DomainName': domain_name}
582 return self.get_response(doc_path, 'IndexDocuments', params,
583 verb='POST', list_marker='FieldNames')
584
585 def update_default_search_field(self, domain_name, default_search_field):
586 """
587 Updates options defining the default search field used by
588 indexing for the search domain.
589
590 :type domain_name: string
591 :param domain_name: A string that represents the name of a
592 domain. Domain names must be unique across the domains
593 owned by an account within an AWS region. Domain names
594 must start with a letter or number and can contain the
595 following characters: a-z (lowercase), 0-9, and -
596 (hyphen). Uppercase letters and underscores are not
597 allowed.
598
599 :type default_search_field: string
600 :param default_search_field: The IndexField to use for search
601 requests issued with the q parameter. The default is an
602 empty string, which automatically searches all text
603 fields.
604
605 :raises: BaseException, InternalException, InvalidTypeException,
606 ResourceNotFoundException
607 """
608 doc_path = ('update_default_search_field_response',
609 'update_default_search_field_result',
610 'default_search_field')
611 params = {'DomainName': domain_name,
612 'DefaultSearchField': default_search_field}
613 return self.get_response(doc_path, 'UpdateDefaultSearchField',
614 params, verb='POST')
615
616 def update_service_access_policies(self, domain_name, access_policies):
617 """
618 Updates the policies controlling access to the services in
619 this search domain.
620
621 :type domain_name: string
622 :param domain_name: A string that represents the name of a
623 domain. Domain names must be unique across the domains
624 owned by an account within an AWS region. Domain names
625 must start with a letter or number and can contain the
626 following characters: a-z (lowercase), 0-9, and -
627 (hyphen). Uppercase letters and underscores are not
628 allowed.
629
630 :type access_policies: string
631 :param access_policies: An IAM access policy as described in
632 The Access Policy Language in Using AWS Identity and
633 Access Management. The maximum size of an access policy
634 document is 100KB.
635
636 :raises: BaseException, InternalException, LimitExceededException,
637 ResourceNotFoundException, InvalidTypeException
638 """
639 doc_path = ('update_service_access_policies_response',
640 'update_service_access_policies_result',
641 'access_policies')
642 params = {'AccessPolicies': access_policies,
643 'DomainName': domain_name}
644 return self.get_response(doc_path, 'UpdateServiceAccessPolicies',
645 params, verb='POST')
646
647 def update_stemming_options(self, domain_name, stems):
648 """
649 Updates stemming options used by indexing for the search domain.
650
651 :type domain_name: string
652 :param domain_name: A string that represents the name of a
653 domain. Domain names must be unique across the domains
654 owned by an account within an AWS region. Domain names
655 must start with a letter or number and can contain the
656 following characters: a-z (lowercase), 0-9, and -
657 (hyphen). Uppercase letters and underscores are not
658 allowed.
659
660 :type stems: string
661 :param stems: Maps terms to their stems. The JSON object
662 has a single key called "stems" whose value is a
663 dict mapping terms to their stems. The maximum size
664 of a stemming document is 500KB.
665 Example: {"stems":{"people": "person", "walking":"walk"}}
666
667 :raises: BaseException, InternalException, InvalidTypeException,
668 LimitExceededException, ResourceNotFoundException
669 """
670 doc_path = ('update_stemming_options_response',
671 'update_stemming_options_result',
672 'stems')
673 params = {'DomainName': domain_name,
674 'Stems': stems}
675 return self.get_response(doc_path, 'UpdateStemmingOptions',
676 params, verb='POST')
677
678 def update_stopword_options(self, domain_name, stopwords):
679 """
680 Updates stopword options used by indexing for the search domain.
681
682 :type domain_name: string
683 :param domain_name: A string that represents the name of a
684 domain. Domain names must be unique across the domains
685 owned by an account within an AWS region. Domain names
686 must start with a letter or number and can contain the
687 following characters: a-z (lowercase), 0-9, and -
688 (hyphen). Uppercase letters and underscores are not
689 allowed.
690
691 :type stopwords: string
692 :param stopwords: Lists stopwords in a JSON object. The object has a
693 single key called "stopwords" whose value is an array of strings.
694 The maximum size of a stopwords document is 10KB. Example:
695 {"stopwords": ["a", "an", "the", "of"]}
696
697 :raises: BaseException, InternalException, InvalidTypeException,
698 LimitExceededException, ResourceNotFoundException
699 """
700 doc_path = ('update_stopword_options_response',
701 'update_stopword_options_result',
702 'stopwords')
703 params = {'DomainName': domain_name,
704 'Stopwords': stopwords}
705 return self.get_response(doc_path, 'UpdateStopwordOptions',
706 params, verb='POST')
707
708 def update_synonym_options(self, domain_name, synonyms):
709 """
710 Updates synonym options used by indexing for the search domain.
711
712 :type domain_name: string
713 :param domain_name: A string that represents the name of a
714 domain. Domain names must be unique across the domains
715 owned by an account within an AWS region. Domain names
716 must start with a letter or number and can contain the
717 following characters: a-z (lowercase), 0-9, and -
718 (hyphen). Uppercase letters and underscores are not
719 allowed.
720
721 :type synonyms: string
722 :param synonyms: Maps terms to their synonyms. The JSON object
723 has a single key "synonyms" whose value is a dict mapping terms
724 to their synonyms. Each synonym is a simple string or an
725 array of strings. The maximum size of a stopwords document
726 is 100KB. Example:
727 {"synonyms": {"cat": ["feline", "kitten"], "puppy": "dog"}}
728
729 :raises: BaseException, InternalException, InvalidTypeException,
730 LimitExceededException, ResourceNotFoundException
731 """
732 doc_path = ('update_synonym_options_response',
733 'update_synonym_options_result',
734 'synonyms')
735 params = {'DomainName': domain_name,
736 'Synonyms': synonyms}
737 return self.get_response(doc_path, 'UpdateSynonymOptions',
738 params, verb='POST')
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698