Чем больше людей будет искать, тем точнее мы сможем предложить результаты. Из предыдущего примера мы можем предположить, что следующий человек, который задает запрос «индейка», также может быть заинтересован в «рецептах из индейки». Информация, извлеченная из предыдущего журнала запросов, показала свою эффективность для понимания поискового намерения пользователя. Контекст поиска, такой как смежные запросы в одном сеансе поиска и нажатые пины после отправки поискового запроса, может помочь нам улучшить процесс обнаружения для будущих поисков.

Чтобы собрать информацию о поисковом запросе и сделать ее доступной для обработки, получения сигналов и создания функций для других приложений, мы разработали сбор данных под названием QueryJoin, который содержит следующие данные:

  • Поисковый запрос, который также является идентификатором QueryJoin.
  • Демографические данные, такие как пол, страна или язык.
  • Смежные запросы, в которых мы храним запросы, появившиеся в одном сеансе, чтобы узнать, как пользователи уточняли свои поисковые запросы, чтобы найти то, что они искали.
  • Пины, поскольку мы храним набор Пинов, возвращаемых по поисковому запросу. Для каждого пина мы собрали данные из PinJoin (сбор данных кластера пинов с одинаковой подписью изображения и информацию об этих пинах), а также некоторую статистику взаимодействия, такую ​​как количество кликов, репинов и лайков.

Конвейер данных для QueryJoin

Мы ежедневно извлекаем действия по поиску из журналов сеансов. Для каждого поискового действия мы извлекаем информацию, необходимую для создания QueryJoins, и сохраняем их с указанием даты.

Каждую неделю мы создаем частичный QueryJoin, объединяя ежедневные поисковые операции вместе. Что касается контактов в QueryJoin, мы соединяем их с помощью PinJoins с помощью подписей изображений. Для каждого запроса мы находим набор пинов, связанных с запросом, а затем вычисляем наиболее релевантные пины и классифицируем запросы по категориям. Мы также присоединяемся к QueryJoin и UserJoin (сбор информации о пользователях, такой как их доски объявлений и пины) по идентификаторам и вычисляем статистику по полу и стране.

В конце концов, мы объединили частичные QueryJoins, недавно встроенные в единый QueryJoin, в качестве нашей платформы знаний для поиска и других функций обнаружения.

Внедрение платформы знаний в действие

В качестве платформы данных в настоящее время мы используем данные из QueryJoin для многих функций.

  • Автозаполнение поиска: QueryJoin - один из основных источников данных для нашей функции автозаполнения поиска. Мы извлекаем популярные запросы на основе вертикальной статистики QueryJoin и индексируем эти запросы в нашем индексе автозаполнения.
  • Управляемый поиск: Queryjoin - важный источник для создания руководств по поиску и улучшения результатов поиска в Pinterest.
  • Релевантность поиска. Мы прогнозируем категорию поискового запроса на основе релевантных пинов в QueryJoin, а затем используем категорию для лучшей настройки релевантности поиска.

Еще не все

Это непростая задача - не только точно понять интересы Пиннера, но и помочь им открыть для себя то, что им нравится, и вдохновить их на действия в реальном мире. Мы только начинаем создавать новые открытия. У нас есть много возможностей улучшить качество данных, лучше понять запросы пользователей и улучшить взаимодействие с пользователями.

Благодарности: этот проект был совместным усилием всей команды Discovery в Pinterest. Если вы заинтересованы в этом, присоединяйтесь к нашей команде!

Донг Ван, инженер-программист в Pinterest.

Для получения технических новостей и обновлений Pinterest следите за нашими техническими новостями Pinterest, Facebook и Twitter. Заинтересованы в присоединении к команде? Посетите наш Сайт вакансий.