Get personalized browse results

Browsing is a navigational search that has no query. Browsing uses navigational methods to display search results that match the end user's selected categories or filters. When used in collaboration with user engagement, you can offer your users personalized browsing. Personalized browsing provides real-time, user-specific feeds based on user interaction history and content features. It aims to optimize search results for defined KPIs while adhering to your strategic controls. For example, a real-estate website can get different homepages for its users in London, UK, and in Sydney, Australia; a shopping website can cater tailor-made results depending upon the user profile.

This page describes how to get browse results for custom search data stores and some best practices to set up your search app.

About personalized browse

The Agent Search personalized browse uses neural networks to rank documents based on predicted user engagement and conversion. For example, with personalized browsing, you can serve ranked entries in a hotel catalog or articles in a website and return them to the users based on predicted likelihood of clicks or inquiry.

At its core, personalized browse is a sophisticated model that learns the intricate relationships between user navigation patterns, the contents and features of your documents, and user conversion events. Some important features are as follows:

The following table presents the differences between searching and browsing.

Feature Search Browse
Purpose Find specific information Explore and discover content
Example Searching for "best Korean restaurants in Vancouver" on Google Search Browsing for a restaurant based on the categories where it might belong, such as "Restaurants > Korean > Vancouver > 4 star and above"
User Intent Typically goal-oriented Exploratory
Starting point A query or keyword typically in a search bar A specific website or platform typically using a menu, breadcrumbs, links, or other navigation methods like facets
Method Entering keywords or phrases and applying search and serving configuration Searching with an empty query, applying search and serving configuration
Results A list of relevant results All the documents in the data store that match the filters

Workflow and best practices

Personalized browse is a Google-managed service and Google handles the underlying deep learning models and data pipelines. To get the best out of this service, when you develop your search app, your primary technical responsibilities include the following:

In an Agent Search search app, to browse is to search with no query or an empty query. To get browse results, in a custom search data store, you can call the search method leaving the query empty.

Broadly, these are the steps to get the best results for personalized browse:

  1. Have correct and consistent data:

  2. Prepare and ingest your documents:

  3. Prepare and ingest user events:

    For more information, see userEvents.

  4. Enable model training and model pipeline:

    After preparing your data and gathering the user events, contact your Google Customer Engineer (CE). The CE can review your data and activate the personalization model for your app.

  5. Get personalized browse results

    Add more fields to your search request like filters and ranking adjustments, such as boost or custom ranking.

  6. Maintain and keep your data fresh:

    Over time, keep your the documents in your data store up-to-date and keep uploading fresh user events. This ensures the model can access the latest documents and user interactions for personalized results.

Get browse results for an app with website data

To use the API to get browse results for an app with website data, do the following:

  • Find your app ID. If you already have your app ID, skip to the next step.

    1. In the Google Cloud console, go to the AI Applications page.

      Go to Apps

    2. On the Apps page, find the name of your app and get the app's ID from the ID column.

  • Call the engines.servingConfigs.search method with an empty query or no query as follows:

    REST

    curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/servingConfigs/default_search:search" \
    -d '{
    "servingConfig": "projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/servingConfigs/default_search",
    "orderBy": "ORDER_BY",
    "params": {
         "searchType": "0"
     },
    "filter": "FILTER",
    "boostSpec": "BOOST_SPEC",
    }'
    

    Replace the following:

    • PROJECT_ID: the ID of your Google Cloud project.
    • APP_ID: the ID of the Agent Search app that you want to query.
    • ORDER_BY: optional. The order in which the results are arranged. The attribute to sort on must have a numerical interpretation—for example, date. For more information, see Order web search results.
    • FILTER: optional but recommended. A text field for filtering your search using a filter expression. The default value is an empty string. For more information about using the filter field, see Filter website search.
    • BOOST_SPEC: optional. A specification to boost or bury documents. Values:
      • BOOST: a floating point number in the range [-1,1]. When the value is negative, results are demoted (they appear lower down in the results). When the value is positive, results are promoted (they appear higher up in the results).
      • CONDITION: a text filter expression to select the documents to which boost is applied. The filter must evaluate to a boolean value. For examples of filter expressions, see Filter expression syntax and Syntax for advanced indexing. To learn about boost for structured search, see Boost search results.

    You should receive a JSON response similar to the following truncated response. The response contains itemized search results listed in the order that's determined by the fields set in the search request.