Sugerencias de búsqueda

Cómo obtener búsquedas sugeridas

Para obtener sugerencias de búsqueda, llama al método getSearchSuggestions en el ContextualSearchRuntime. Este método toma un solo GetSearchSuggestionsOptions en el que puedes especificar el texto que se usará para obtener sugerencias de búsqueda.

El objeto SearchSuggestions que se muestra no contiene ninguna propiedad accesible. Contiene toda la información necesaria para renderizar sugerencias de búsqueda, pero, por lo demás, es opaco.

Swift usa el estilo de concurrencia de Swift, y Objective-C usa una función de devolución de llamada.

Swift

getSearchSuggestions(withOptions:)

Task {
    let suggestions = try await searchRuntime.getSearchSuggestions(
            withOptions: GetSearchSuggestionsOptions(withTextContext:['Sample Query', 'Another query string']))
}

Objective-C

getSearchSuggestionsWithOptions

  [searchRuntime
      getSearchSuggestionsWithOptions:
            [[GetSearchSuggestionsOptions alloc] initWithTextContext: @[@'Sample Query', @'Another query string' ]]
                             completionHandler:^(SearchSuggestions *_Nullable suggestions,
                                                 NSError *_Nullable error) {
                              // error will be not null if there is an error.
                              // On success, suggestions will be non null.
                            }];

Cómo obtener búsquedas sugeridas basadas en la ubicación

La solicitud getSearchSuggestions también admite sugerencias de búsquedabasadas en la ubicación. Compila un objeto GetSearchSuggestionsOptions con un LocationSuggestionsContext.

Sigue estos pasos para compilar la clase LocationSuggestionsContext:

  1. (Obligatorio) Establece latitude, longitude y radiusMeters para que coincidan con el área solicitada.
  2. (Opcional) Configura startTime para que coincida con la hora solicitada en la que se deben aplicar las sugerencias de búsqueda.
  3. Establece la lista geoTypes con los tipos de ubicación geográfica solicitados (opcional). Los tipos proporcionados se usan para ajustar la clasificación y el filtrado de los resultados que muestra el servicio. Los valores admitidos se documentan en LocationSuggestionsContext.

Swift

getSearchSuggestions(withOptions:)

Task {
    let locationContext: LocationSuggestionsContext = {
      let context = LocationSuggestionsContext()
      context.latitude = 40.748595
      context.longitude = -73.992365
      context.radiusMeters = 2500
      context.startTime = try?
        Date.ISO8601FormatStyle.iso8601.parse("2024-03-14T19:20:30.000+02:00")
      context.geoTypes = ["restaurant", "cafe"]
      return context
    }()
    let suggestions = try await searchRuntime.getSearchSuggestions(
            withOptions: GetSearchSuggestionsOptions(locationContext: [
              locationContext
            ]))
}

Objective-C

getSearchSuggestionsWithOptions


  LocationSuggestionsContext *locationContext;
  locationContext = [[LocationSuggestionsContext alloc] init];
  locationContext.latitude = 40.748595;
  locationContext.longitude = -73.992365;
  locationContext.radiusMeters = @2500;
  [searchRuntime
      getSearchSuggestionsWithOptions:
            [[GetSearchSuggestionsOptions alloc] initWithLocationContext: locationContext]
                             completionHandler:^(SearchSuggestions *_Nullable suggestions,
                                                 NSError *_Nullable error) {
                              // error will be not null if there is an error.
                              // On success, suggestions will be non null.
                            }];

Display

Para mostrar chips de sugerencias de búsqueda, usa los siguientes métodos (el estilo varía si usas UIKit en lugar de SwiftUI).

UIKit de Swift

Muestra chips de sugerencias de búsqueda con SearchSuggestionsViewController.

// Create the SearchSuggestionsViewController with specified display options.
var searchSuggestionsController = SearchSuggestionsViewController(options: viewOptions)
...
// Add the view controller to the existing view hierarchy
searchSuggestionsController.addToViewContoller(self)
view.addSubview(searchSuggestionsController.view)
...
// Assign a specific set of search suggestions to this view controller.
searchSuggestionsController.searchSuggestions = suggestions

Objective-C

Muestra chips de sugerencias de búsqueda con SearchSuggestionsViewController.

// Create the SearchSuggestionsController with specified display options.
SearchSuggestionsViewController *_searchSuggestionsController =
      [[SearchSuggestionsViewController alloc] initWithOptions:_customizationOptions];
...
// Add the view controller to the existing view hierarchy
[_searchSuggestionsController addToViewController:self];
[self.view addSubview:_searchSuggestionsController.view];
...
// Assign a specific set of search suggestions to this view controller.
_searchSuggestionsController.searchSuggestions = suggestions

SwiftUI

Las sugerencias de búsqueda se pueden mostrar con un elemento SearchSuggestionsView.

SearchSuggestionsView(suggestions: suggestions, options: options)

Siguiente: Cómo mostrar los resultados de la búsqueda