google-cloud-discovery_engine-v1 0.6.0 → 0.7.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/google/cloud/discovery_engine/v1/conversational_search_service/client.rb +5 -1
- data/lib/google/cloud/discovery_engine/v1/conversational_search_service/rest/client.rb +5 -1
- data/lib/google/cloud/discovery_engine/v1/data_store_service/paths.rb +49 -0
- data/lib/google/cloud/discovery_engine/v1/document_service/client.rb +49 -21
- data/lib/google/cloud/discovery_engine/v1/document_service/paths.rb +21 -0
- data/lib/google/cloud/discovery_engine/v1/document_service/rest/client.rb +49 -21
- data/lib/google/cloud/discovery_engine/v1/recommendation_service/client.rb +553 -0
- data/lib/google/cloud/discovery_engine/v1/recommendation_service/credentials.rb +47 -0
- data/lib/google/cloud/discovery_engine/v1/recommendation_service/paths.rb +154 -0
- data/lib/google/cloud/discovery_engine/v1/recommendation_service/rest/client.rb +520 -0
- data/lib/google/cloud/discovery_engine/v1/recommendation_service/rest/service_stub.rb +145 -0
- data/lib/google/cloud/discovery_engine/v1/recommendation_service/rest.rb +52 -0
- data/lib/google/cloud/discovery_engine/v1/recommendation_service.rb +55 -0
- data/lib/google/cloud/discovery_engine/v1/rest.rb +1 -0
- data/lib/google/cloud/discovery_engine/v1/search_service/client.rb +12 -6
- data/lib/google/cloud/discovery_engine/v1/search_service/paths.rb +45 -0
- data/lib/google/cloud/discovery_engine/v1/search_service/rest/client.rb +12 -6
- data/lib/google/cloud/discovery_engine/v1/version.rb +1 -1
- data/lib/google/cloud/discovery_engine/v1.rb +1 -0
- data/lib/google/cloud/discoveryengine/v1/common_pb.rb +1 -1
- data/lib/google/cloud/discoveryengine/v1/conversational_search_service_pb.rb +1 -1
- data/lib/google/cloud/discoveryengine/v1/data_store_pb.rb +3 -1
- data/lib/google/cloud/discoveryengine/v1/document_pb.rb +3 -1
- data/lib/google/cloud/discoveryengine/v1/document_service_pb.rb +3 -1
- data/lib/google/cloud/discoveryengine/v1/import_config_pb.rb +13 -1
- data/lib/google/cloud/discoveryengine/v1/purge_config_pb.rb +1 -1
- data/lib/google/cloud/discoveryengine/v1/recommendation_service_pb.rb +55 -0
- data/lib/google/cloud/discoveryengine/v1/recommendation_service_services_pb.rb +45 -0
- data/lib/google/cloud/discoveryengine/v1/search_service_pb.rb +4 -1
- data/proto_docs/google/api/client.rb +4 -0
- data/proto_docs/google/cloud/discoveryengine/v1/common.rb +9 -1
- data/proto_docs/google/cloud/discoveryengine/v1/conversational_search_service.rb +5 -0
- data/proto_docs/google/cloud/discoveryengine/v1/data_store.rb +16 -0
- data/proto_docs/google/cloud/discoveryengine/v1/document.rb +7 -0
- data/proto_docs/google/cloud/discoveryengine/v1/document_service.rb +4 -0
- data/proto_docs/google/cloud/discoveryengine/v1/engine.rb +2 -2
- data/proto_docs/google/cloud/discoveryengine/v1/import_config.rb +311 -22
- data/proto_docs/google/cloud/discoveryengine/v1/purge_config.rb +3 -0
- data/proto_docs/google/cloud/discoveryengine/v1/recommendation_service.rb +228 -0
- data/proto_docs/google/cloud/discoveryengine/v1/search_service.rb +129 -21
- data/proto_docs/google/cloud/discoveryengine/v1/user_event.rb +16 -11
- metadata +12 -2
@@ -48,10 +48,14 @@ module Google
|
|
48
48
|
# @!attribute [rw] page_size
|
49
49
|
# @return [::Integer]
|
50
50
|
# Maximum number of {::Google::Cloud::DiscoveryEngine::V1::Document Document}s to
|
51
|
-
# return.
|
52
|
-
#
|
51
|
+
# return. The maximum allowed value depends on the data type. Values above
|
52
|
+
# the maximum value are coerced to the maximum value.
|
53
53
|
#
|
54
|
-
#
|
54
|
+
# * Websites with basic indexing: Default `10`, Maximum `25`.
|
55
|
+
# * Websites with advanced indexing: Default `25`, Maximum `50`.
|
56
|
+
# * Other: Default `50`, Maximum `100`.
|
57
|
+
#
|
58
|
+
# If this field is negative, an `INVALID_ARGUMENT` is returned.
|
55
59
|
# @!attribute [rw] page_token
|
56
60
|
# @return [::String]
|
57
61
|
# A page token received from a previous
|
@@ -72,6 +76,9 @@ module Google
|
|
72
76
|
# unset.
|
73
77
|
#
|
74
78
|
# If this field is negative, an `INVALID_ARGUMENT` is returned.
|
79
|
+
# @!attribute [rw] data_store_specs
|
80
|
+
# @return [::Array<::Google::Cloud::DiscoveryEngine::V1::SearchRequest::DataStoreSpec>]
|
81
|
+
# A list of data store specs to apply on a search call.
|
75
82
|
# @!attribute [rw] filter
|
76
83
|
# @return [::String]
|
77
84
|
# The filter syntax consists of an expression language for constructing a
|
@@ -212,6 +219,17 @@ module Google
|
|
212
219
|
extend ::Google::Protobuf::MessageExts::ClassMethods
|
213
220
|
end
|
214
221
|
|
222
|
+
# A struct to define data stores to filter on in a search call.
|
223
|
+
# @!attribute [rw] data_store
|
224
|
+
# @return [::String]
|
225
|
+
# Required. Full resource name of
|
226
|
+
# {::Google::Cloud::DiscoveryEngine::V1::DataStore DataStore}, such as
|
227
|
+
# `projects/{project}/locations/{location}/collections/{collection_id}/dataStores/{data_store_id}`.
|
228
|
+
class DataStoreSpec
|
229
|
+
include ::Google::Protobuf::MessageExts
|
230
|
+
extend ::Google::Protobuf::MessageExts::ClassMethods
|
231
|
+
end
|
232
|
+
|
215
233
|
# A facet specification to perform faceted search.
|
216
234
|
# @!attribute [rw] facet_key
|
217
235
|
# @return [::Google::Cloud::DiscoveryEngine::V1::SearchRequest::FacetSpec::FacetKey]
|
@@ -371,28 +389,29 @@ module Google
|
|
371
389
|
# Examples:
|
372
390
|
#
|
373
391
|
# * To boost documents with document ID "doc_1" or "doc_2", and
|
374
|
-
# color
|
375
|
-
#
|
376
|
-
# * (id: ANY("doc_1", "doc_2")) AND (color: ANY("Red","Blue"))
|
392
|
+
# color "Red" or "Blue":
|
393
|
+
# `(document_id: ANY("doc_1", "doc_2")) AND (color: ANY("Red", "Blue"))`
|
377
394
|
# @!attribute [rw] boost
|
378
395
|
# @return [::Float]
|
379
396
|
# Strength of the condition boost, which should be in [-1, 1]. Negative
|
380
397
|
# boost means demotion. Default is 0.0.
|
381
398
|
#
|
382
|
-
# Setting to 1.0 gives the document a big promotion. However, it does
|
383
|
-
# necessarily mean that the boosted document will be the top result
|
384
|
-
# all times, nor that other documents will be excluded. Results
|
385
|
-
# still be shown even when none of them matches the condition.
|
386
|
-
# results that are significantly more relevant to the search query
|
387
|
-
# still trump your heavily favored but irrelevant documents.
|
399
|
+
# Setting to 1.0 gives the document a big promotion. However, it does
|
400
|
+
# not necessarily mean that the boosted document will be the top result
|
401
|
+
# at all times, nor that other documents will be excluded. Results
|
402
|
+
# could still be shown even when none of them matches the condition.
|
403
|
+
# And results that are significantly more relevant to the search query
|
404
|
+
# can still trump your heavily favored but irrelevant documents.
|
388
405
|
#
|
389
406
|
# Setting to -1.0 gives the document a big demotion. However, results
|
390
407
|
# that are deeply relevant might still be shown. The document will have
|
391
|
-
# an upstream battle to get a fairly high ranking, but it is not
|
392
|
-
# out completely.
|
408
|
+
# an upstream battle to get a fairly high ranking, but it is not
|
409
|
+
# blocked out completely.
|
393
410
|
#
|
394
411
|
# Setting to 0.0 means no boost applied. The boosting condition is
|
395
|
-
# ignored.
|
412
|
+
# ignored. Only one of the (condition, boost) combination or the
|
413
|
+
# boost_control_spec below are set. If both are set then the global boost
|
414
|
+
# is ignored and the more fine-grained boost_control_spec is applied.
|
396
415
|
class ConditionBoostSpec
|
397
416
|
include ::Google::Protobuf::MessageExts
|
398
417
|
extend ::Google::Protobuf::MessageExts::ClassMethods
|
@@ -469,6 +488,10 @@ module Google
|
|
469
488
|
# @return [::Google::Cloud::DiscoveryEngine::V1::SearchRequest::ContentSearchSpec::SummarySpec]
|
470
489
|
# If `summarySpec` is not specified, summaries are not included in the
|
471
490
|
# search response.
|
491
|
+
# @!attribute [rw] extractive_content_spec
|
492
|
+
# @return [::Google::Cloud::DiscoveryEngine::V1::SearchRequest::ContentSearchSpec::ExtractiveContentSpec]
|
493
|
+
# If there is no extractive_content_spec provided, there will be no
|
494
|
+
# extractive answer in the search response.
|
472
495
|
class ContentSearchSpec
|
473
496
|
include ::Google::Protobuf::MessageExts
|
474
497
|
extend ::Google::Protobuf::MessageExts::ClassMethods
|
@@ -503,7 +526,10 @@ module Google
|
|
503
526
|
# of results returned is less than `summaryResultCount`, the summary is
|
504
527
|
# generated from all of the results.
|
505
528
|
#
|
506
|
-
# At most
|
529
|
+
# At most 10 results for documents mode, or 50 for chunks mode, can be
|
530
|
+
# used to generate a summary. The chunks mode is used when
|
531
|
+
# [SearchRequest.ContentSearchSpec.search_result_mode][] is set to
|
532
|
+
# [CHUNKS][SearchRequest.ContentSearchSpec.SearchResultMode.CHUNKS].
|
507
533
|
# @!attribute [rw] include_citations
|
508
534
|
# @return [::Boolean]
|
509
535
|
# Specifies whether to include citations in the summary. The default
|
@@ -561,6 +587,14 @@ module Google
|
|
561
587
|
# @return [::Google::Cloud::DiscoveryEngine::V1::SearchRequest::ContentSearchSpec::SummarySpec::ModelSpec]
|
562
588
|
# If specified, the spec will be used to modify the model specification
|
563
589
|
# provided to the LLM.
|
590
|
+
# @!attribute [rw] use_semantic_chunks
|
591
|
+
# @return [::Boolean]
|
592
|
+
# If true, answer will be generated from most relevant chunks from top
|
593
|
+
# search results. This feature will improve summary quality.
|
594
|
+
# Note that with this feature enabled, not all top search results
|
595
|
+
# will be referenced and included in the reference list, so the citation
|
596
|
+
# source index only points to the search results listed in the reference
|
597
|
+
# list.
|
564
598
|
class SummarySpec
|
565
599
|
include ::Google::Protobuf::MessageExts
|
566
600
|
extend ::Google::Protobuf::MessageExts::ClassMethods
|
@@ -583,16 +617,75 @@ module Google
|
|
583
617
|
# Supported values are:
|
584
618
|
#
|
585
619
|
# * `stable`: string. Default value when no value is specified. Uses a
|
586
|
-
#
|
587
|
-
#
|
588
|
-
#
|
589
|
-
#
|
590
|
-
#
|
620
|
+
# generally available, fine-tuned model. For more information, see
|
621
|
+
# [Answer generation model versions and
|
622
|
+
# lifecycle](https://cloud.google.com/generative-ai-app-builder/docs/answer-generation-models).
|
623
|
+
# * `preview`: string. (Public preview) Uses a preview model. For more
|
624
|
+
# information, see
|
625
|
+
# [Answer generation model versions and
|
626
|
+
# lifecycle](https://cloud.google.com/generative-ai-app-builder/docs/answer-generation-models).
|
591
627
|
class ModelSpec
|
592
628
|
include ::Google::Protobuf::MessageExts
|
593
629
|
extend ::Google::Protobuf::MessageExts::ClassMethods
|
594
630
|
end
|
595
631
|
end
|
632
|
+
|
633
|
+
# A specification for configuring the extractive content in a search
|
634
|
+
# response.
|
635
|
+
# @!attribute [rw] max_extractive_answer_count
|
636
|
+
# @return [::Integer]
|
637
|
+
# The maximum number of extractive answers returned in each search
|
638
|
+
# result.
|
639
|
+
#
|
640
|
+
# An extractive answer is a verbatim answer extracted from the original
|
641
|
+
# document, which provides a precise and contextually relevant answer to
|
642
|
+
# the search query.
|
643
|
+
#
|
644
|
+
# If the number of matching answers is less than the
|
645
|
+
# `max_extractive_answer_count`, return all of the answers. Otherwise,
|
646
|
+
# return the `max_extractive_answer_count`.
|
647
|
+
#
|
648
|
+
# At most five answers are returned for each
|
649
|
+
# {::Google::Cloud::DiscoveryEngine::V1::SearchResponse::SearchResult SearchResult}.
|
650
|
+
# @!attribute [rw] max_extractive_segment_count
|
651
|
+
# @return [::Integer]
|
652
|
+
# The max number of extractive segments returned in each search result.
|
653
|
+
# Only applied if the
|
654
|
+
# {::Google::Cloud::DiscoveryEngine::V1::DataStore DataStore} is set to
|
655
|
+
# {::Google::Cloud::DiscoveryEngine::V1::DataStore::ContentConfig::CONTENT_REQUIRED DataStore.ContentConfig.CONTENT_REQUIRED}
|
656
|
+
# or
|
657
|
+
# {::Google::Cloud::DiscoveryEngine::V1::DataStore#solution_types DataStore.solution_types}
|
658
|
+
# is
|
659
|
+
# {::Google::Cloud::DiscoveryEngine::V1::SolutionType::SOLUTION_TYPE_CHAT SOLUTION_TYPE_CHAT}.
|
660
|
+
#
|
661
|
+
# An extractive segment is a text segment extracted from the original
|
662
|
+
# document that is relevant to the search query, and, in general, more
|
663
|
+
# verbose than an extractive answer. The segment could then be used as
|
664
|
+
# input for LLMs to generate summaries and answers.
|
665
|
+
#
|
666
|
+
# If the number of matching segments is less than
|
667
|
+
# `max_extractive_segment_count`, return all of the segments. Otherwise,
|
668
|
+
# return the `max_extractive_segment_count`.
|
669
|
+
# @!attribute [rw] return_extractive_segment_score
|
670
|
+
# @return [::Boolean]
|
671
|
+
# Specifies whether to return the confidence score from the extractive
|
672
|
+
# segments in each search result. This feature is available only for new
|
673
|
+
# or allowlisted data stores. To allowlist your data store,
|
674
|
+
# contact your Customer Engineer. The default value is `false`.
|
675
|
+
# @!attribute [rw] num_previous_segments
|
676
|
+
# @return [::Integer]
|
677
|
+
# Specifies whether to also include the adjacent from each selected
|
678
|
+
# segments.
|
679
|
+
# Return at most `num_previous_segments` segments before each selected
|
680
|
+
# segments.
|
681
|
+
# @!attribute [rw] num_next_segments
|
682
|
+
# @return [::Integer]
|
683
|
+
# Return at most `num_next_segments` segments after each selected
|
684
|
+
# segments.
|
685
|
+
class ExtractiveContentSpec
|
686
|
+
include ::Google::Protobuf::MessageExts
|
687
|
+
extend ::Google::Protobuf::MessageExts::ClassMethods
|
688
|
+
end
|
596
689
|
end
|
597
690
|
|
598
691
|
# @!attribute [rw] key
|
@@ -796,9 +889,24 @@ module Google
|
|
796
889
|
# @!attribute [rw] uri
|
797
890
|
# @return [::String]
|
798
891
|
# Cloud Storage or HTTP uri for the document.
|
892
|
+
# @!attribute [rw] chunk_contents
|
893
|
+
# @return [::Array<::Google::Cloud::DiscoveryEngine::V1::SearchResponse::Summary::Reference::ChunkContent>]
|
894
|
+
# List of cited chunk contents derived from document content.
|
799
895
|
class Reference
|
800
896
|
include ::Google::Protobuf::MessageExts
|
801
897
|
extend ::Google::Protobuf::MessageExts::ClassMethods
|
898
|
+
|
899
|
+
# Chunk content.
|
900
|
+
# @!attribute [rw] content
|
901
|
+
# @return [::String]
|
902
|
+
# Chunk textual content.
|
903
|
+
# @!attribute [rw] page_identifier
|
904
|
+
# @return [::String]
|
905
|
+
# Page identifier.
|
906
|
+
class ChunkContent
|
907
|
+
include ::Google::Protobuf::MessageExts
|
908
|
+
extend ::Google::Protobuf::MessageExts::ClassMethods
|
909
|
+
end
|
802
910
|
end
|
803
911
|
|
804
912
|
# Summary with metadata information.
|
@@ -105,22 +105,26 @@ module Google
|
|
105
105
|
# Token to attribute an API response to user action(s) to trigger the event.
|
106
106
|
#
|
107
107
|
# Highly recommended for user events that are the result of
|
108
|
-
#
|
109
|
-
# attribution of recommendation model
|
108
|
+
# {::Google::Cloud::DiscoveryEngine::V1::RecommendationService::Client#recommend RecommendationService.Recommend}.
|
109
|
+
# This field enables accurate attribution of recommendation model
|
110
|
+
# performance.
|
110
111
|
#
|
111
112
|
# The value must be one of:
|
112
113
|
#
|
113
|
-
# *
|
114
|
-
#
|
114
|
+
# * {::Google::Cloud::DiscoveryEngine::V1::RecommendResponse#attribution_token RecommendResponse.attribution_token} for events that are the result of
|
115
|
+
# {::Google::Cloud::DiscoveryEngine::V1::RecommendationService::Client#recommend RecommendationService.Recommend}.
|
115
116
|
# * {::Google::Cloud::DiscoveryEngine::V1::SearchResponse#attribution_token SearchResponse.attribution_token} for events that are the result of
|
116
117
|
# {::Google::Cloud::DiscoveryEngine::V1::SearchService::Client#search SearchService.Search}.
|
117
118
|
#
|
118
119
|
# This token enables us to accurately attribute page view or conversion
|
119
120
|
# completion back to the event and the particular predict response containing
|
120
121
|
# this clicked/purchased product. If user clicks on product K in the
|
121
|
-
# recommendation results, pass
|
122
|
-
#
|
123
|
-
#
|
122
|
+
# recommendation results, pass
|
123
|
+
# {::Google::Cloud::DiscoveryEngine::V1::RecommendResponse#attribution_token RecommendResponse.attribution_token}
|
124
|
+
# as a URL parameter to product K's page. When recording events on product
|
125
|
+
# K's page, log the
|
126
|
+
# {::Google::Cloud::DiscoveryEngine::V1::RecommendResponse#attribution_token RecommendResponse.attribution_token}
|
127
|
+
# to this field.
|
124
128
|
# @!attribute [rw] filter
|
125
129
|
# @return [::String]
|
126
130
|
# The filter syntax consists of an expression language for constructing a
|
@@ -133,9 +137,10 @@ module Google
|
|
133
137
|
# conforming to https://google.aip.dev/160#filtering.
|
134
138
|
#
|
135
139
|
# Similarly, for `view-item-list` events that are generated from a
|
136
|
-
#
|
137
|
-
#
|
138
|
-
#
|
140
|
+
# {::Google::Cloud::DiscoveryEngine::V1::RecommendRequest RecommendRequest}, this
|
141
|
+
# field may be populated directly from
|
142
|
+
# {::Google::Cloud::DiscoveryEngine::V1::RecommendRequest#filter RecommendRequest.filter}
|
143
|
+
# conforming to https://google.aip.dev/160#filtering.
|
139
144
|
#
|
140
145
|
# The value must be a UTF-8 encoded string with a length limit of 1,000
|
141
146
|
# characters. Otherwise, an `INVALID_ARGUMENT` error is returned.
|
@@ -250,7 +255,7 @@ module Google
|
|
250
255
|
# The most specific category associated with a category page.
|
251
256
|
#
|
252
257
|
# To represent full path of category, use '>' sign to separate different
|
253
|
-
# hierarchies. If '>' is part of the category name,
|
258
|
+
# hierarchies. If '>' is part of the category name, replace it with
|
254
259
|
# other character(s).
|
255
260
|
#
|
256
261
|
# Category pages include special pages such as sales or promotions. For
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: google-cloud-discovery_engine-v1
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Google LLC
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-04-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: gapic-common
|
@@ -121,6 +121,13 @@ files:
|
|
121
121
|
- lib/google/cloud/discovery_engine/v1/engine_service/rest/client.rb
|
122
122
|
- lib/google/cloud/discovery_engine/v1/engine_service/rest/operations.rb
|
123
123
|
- lib/google/cloud/discovery_engine/v1/engine_service/rest/service_stub.rb
|
124
|
+
- lib/google/cloud/discovery_engine/v1/recommendation_service.rb
|
125
|
+
- lib/google/cloud/discovery_engine/v1/recommendation_service/client.rb
|
126
|
+
- lib/google/cloud/discovery_engine/v1/recommendation_service/credentials.rb
|
127
|
+
- lib/google/cloud/discovery_engine/v1/recommendation_service/paths.rb
|
128
|
+
- lib/google/cloud/discovery_engine/v1/recommendation_service/rest.rb
|
129
|
+
- lib/google/cloud/discovery_engine/v1/recommendation_service/rest/client.rb
|
130
|
+
- lib/google/cloud/discovery_engine/v1/recommendation_service/rest/service_stub.rb
|
124
131
|
- lib/google/cloud/discovery_engine/v1/rest.rb
|
125
132
|
- lib/google/cloud/discovery_engine/v1/schema_service.rb
|
126
133
|
- lib/google/cloud/discovery_engine/v1/schema_service/client.rb
|
@@ -175,6 +182,8 @@ files:
|
|
175
182
|
- lib/google/cloud/discoveryengine/v1/engine_service_services_pb.rb
|
176
183
|
- lib/google/cloud/discoveryengine/v1/import_config_pb.rb
|
177
184
|
- lib/google/cloud/discoveryengine/v1/purge_config_pb.rb
|
185
|
+
- lib/google/cloud/discoveryengine/v1/recommendation_service_pb.rb
|
186
|
+
- lib/google/cloud/discoveryengine/v1/recommendation_service_services_pb.rb
|
178
187
|
- lib/google/cloud/discoveryengine/v1/schema_pb.rb
|
179
188
|
- lib/google/cloud/discoveryengine/v1/schema_service_pb.rb
|
180
189
|
- lib/google/cloud/discoveryengine/v1/schema_service_services_pb.rb
|
@@ -205,6 +214,7 @@ files:
|
|
205
214
|
- proto_docs/google/cloud/discoveryengine/v1/engine_service.rb
|
206
215
|
- proto_docs/google/cloud/discoveryengine/v1/import_config.rb
|
207
216
|
- proto_docs/google/cloud/discoveryengine/v1/purge_config.rb
|
217
|
+
- proto_docs/google/cloud/discoveryengine/v1/recommendation_service.rb
|
208
218
|
- proto_docs/google/cloud/discoveryengine/v1/schema.rb
|
209
219
|
- proto_docs/google/cloud/discoveryengine/v1/schema_service.rb
|
210
220
|
- proto_docs/google/cloud/discoveryengine/v1/search_service.rb
|