KR20210091125A - 사용자 참여를 사용하는 엔티티 기반 검색 시스템 - Google Patents

사용자 참여를 사용하는 엔티티 기반 검색 시스템 Download PDF

Info

Publication number
KR20210091125A
KR20210091125A KR1020217010228A KR20217010228A KR20210091125A KR 20210091125 A KR20210091125 A KR 20210091125A KR 1020217010228 A KR1020217010228 A KR 1020217010228A KR 20217010228 A KR20217010228 A KR 20217010228A KR 20210091125 A KR20210091125 A KR 20210091125A
Authority
KR
South Korea
Prior art keywords
application
entity
data
search
event
Prior art date
Application number
KR1020217010228A
Other languages
English (en)
Inventor
지샤 커림브호이
알렉산더 오스틴
에릭 제이. 글로버
죠트스나 자야라만
죠나스 프레드릭 바우어
칸 유
챨스 쿠린 길리엄
리쉬 카이탄
Original Assignee
브랜치 메트릭스 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 브랜치 메트릭스 인코포레이티드 filed Critical 브랜치 메트릭스 인코포레이티드
Publication of KR20210091125A publication Critical patent/KR20210091125A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/953Querying, e.g. by the use of web search engines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/953Querying, e.g. by the use of web search engines
    • G06F16/9538Presentation of query results
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2457Query processing with adaptation to user needs
    • G06F16/24578Query processing with adaptation to user needs using ranking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/953Querying, e.g. by the use of web search engines
    • G06F16/9536Search customisation based on social or collaborative filtering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/955Retrieval from the web using information identifiers, e.g. uniform resource locators [URL]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q30/00Commerce
    • G06Q30/02Marketing; Price estimation or determination; Fundraising
    • G06Q30/0201Market modelling; Market analysis; Collecting market data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q30/00Commerce
    • G06Q30/02Marketing; Price estimation or determination; Fundraising
    • G06Q30/0241Advertisements
    • G06Q30/0251Targeted advertisements

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Accounting & Taxation (AREA)
  • Development Economics (AREA)
  • Finance (AREA)
  • Strategic Management (AREA)
  • Data Mining & Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • Entrepreneurship & Innovation (AREA)
  • General Business, Economics & Management (AREA)
  • Marketing (AREA)
  • Economics (AREA)
  • Game Theory and Decision Science (AREA)
  • Computational Linguistics (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

방법은 엔티티를 설명하는 엔티티 정보 및 엔티티와 연관된 애플리케이션 상태에 액세스하는 애플리케이션 링크를 포함하는 엔티티 레코드들을 저장하는 것을 포함한다. 이 방법은 각 애플리케이션 상태가 사용자 디바이스들에 의해 액세스된 횟수를 나타내는 사용자 디바이스들로부터 이벤트 데이터를 수신하는 것을 포함한다. 방법은 수신된 이벤트 데이터에 기초하여 각 엔티티 레코드에 대한 인기도 점수를 결정하는 단계를 포함하며, 인기도 점수는 다른 애플리케이션 상태들이 액세스된 횟수에 비해 엔티티 레코드에 대한 애플리케이션 상태가 액세스된 횟수를 나타낸다. 이 방법은 검색 요청에 기초하여 예비 결과 엔티티 레코드들의 세트를 식별하는 단계, 인기도 점수들에 기초하여 예비 결과 엔티티 레코드들 각각에 대한 결과 점수들을 생성하는 단계, 상기 예비 결과 엔티티 레코드들로부터 애플리케이션 링크들을 포함하는 검색 결과들을 생성하는 단계를 포함한다.

Description

사용자 참여를 사용하는 엔티티 기반 검색 시스템
관련 출원에 대한 상호 참조
본 출원은 2019년 9월 5일에 출원된 미국 출원 일련 번호 16/561,848의 이익을 청구하고, 상기 미국 출원 16/561,848은 2018년 9월 6일에 출원된 미국 가출원 번호 62/727,725, 2018년 9월 14일에 출원된 미국 가출원 번호 62/731,177, 2018년 11월 19일에 출원된 미국 가출원 번호 62/769,096 및 2019년 2월 7일에 출원된 미국 가출원 번호 62/802,256의 이익을 청구한다. 상기 출원의 개시 내용은 그 전체가 본원에 참고로 포함된다.
기술분야
본 발명은 애플리케이션들에 대한 검색 결과들을 제공하는 것에 관한 것이다.
소프트웨어 개발자는 다양한 컴퓨팅 디바이스들 및 운영 체제들과 같은 다양한 플랫폼들에서 사용자들이 액세스하는 광범위한 애플리케이션들을 개발한다. 예시적인 애플리케이션들에는 전자 상거래 애플리케이션들, 미디어 스트리밍 애플리케이션들, 비즈니스 리뷰 애플리케이션들, 소셜 미디어 애플리케이션들 및 뉴스 애플리케이션들이 포함될 수 있다. 이러한 애플리케이션들은 소비자 제품 엔티티들 및 디지털 미디어 엔티티들(예를 들어, 영화/노래)과 같은 다양한 엔티티들에 대해 사용자들에게 상이한 기능들을 제공할 수 있다. 예를 들어, 전자 상거래 애플리케이션은 사용자들에게 판매할 소비자 제품들을 제공할 수 있다. 다른 예로, 미디어 스트리밍 애플리케이션은 사용자를 위해 영화나 노래를 재생할 수 있다.
일례에서, 방법은 서버에서 복수의 엔티티 레코드들을 저장하는 단계를 포함한다. 각 엔티티 레코드에는 엔티티 및 엔티티와 연관된 애플리케이션 상태에 액세스하도록 구성된 애플리케이션 링크를 설명하는 엔티티 정보가 포함된다. 방법은 복수의 사용자 디바이스들에 의해 생성된 이벤트 데이터를 수신하는 단계를 포함한다. 이벤트 데이터는 사용자 디바이스들에 의해 각 애플리케이션 상태들에 액세스한 횟수를 나타낸다. 방법은 수신된 이벤트 데이터에 기초하여 각 엔티티 레코드에 대한 인기도 점수를 결정하는 단계를 더 포함한다. 상기 인기도 점수는 하나 이상의 다른 애플리케이션 상태가 액세스 된 횟수와 관련하여 엔티티 레코드에 대한 애플리케이션 상태가 액세스 된 횟수를 나타낸다. 방법은 원격 요청 디바이스로부터 검색 요청을 수신하는 단계 및 검색 요청과 예비 결과 엔티티 레코드들에 포함된 엔티티 정보 간의 일치들을 기반으로 한 예비 결과 엔티티 레코드들의 세트를 식별하는 단계를 더 포함한다. 방법은 예비 결과 개체 레코드들과 연관된 인기도 점수들에 기초하여 예비 결과 엔티티 레코드들 각각에 대한 결과 점수를 생성하는 단계 및 예비 결과 엔티티 레코드들로부터 애플리케이션 링크들을 포함하는 검색 결과들을 생성하는 단계를 더 포함한다. 검색 결과들의 애플리케이션 링크들은 애플리케이션 링크들과 연관된 결과 점수들에 따라 순위가 정해진다. 추가로, 방법은 서버로부터 요청 디바이스로 검색 결과들을 전송하는 단계를 포함한다.
시스템은 하나 이상의 저장 디바이스와 하나 이상의 처리 유닛을 포함한다. 하나 이상의 저장 디바이스는 복수의 엔티티 레코드들을 저장하도록 구성된다. 각 엔티티 레코드에는 엔티티 및 엔티티와 연관된 애플리케이션 상태에 액세스하도록 구성된 애플리케이션 링크를 설명하는 엔티티 정보가 포함된다. 각 엔티티 레코드에는 엔티티 및 엔티티와 연관된 애플리케이션 상태에 액세스하도록 구성된 애플리케이션 링크를 설명하는 엔티티 정보가 포함된다. 하나 이상의 처리 유닛은, 하나 이상의 처리 유닛으로 하여금 복수의 사용자 디바이스들에 의해 생성된 이벤트 데이터를 수신하도록 하는 컴퓨터 판독가능 명령어들을 실행하도록 구성된다. 이벤트 데이터는 사용자 디바이스들에 의해 각 애플리케이션 상태에 액세스한 횟수를 나타낸다. 하나 이상의 처리 유닛은 수신된 이벤트 데이터에 기초하여 각 엔티티 레코드에 대한 인기도 점수를 결정하도록 구성된다. 인기도 점수는 하나 이상의 다른 애플리케이션 상태에 액세스한 횟수에 대하여 엔티티 레코드의 애플리케이션 상태에 액세스한 횟수를 나타낸다. 하나 이상의 처리 유닛은 원격 요청 디바이스로부터 검색 요청을 수신하고, 검색 요청과 예비 결과 엔티티 레코드들에 포함된 엔티티 정보 간의 일치들을 기반으로 예비 결과 엔티티 레코드들의 세트를 식별하고, 그리고 예비 결과 엔티티 레코드들과 연관된 인기도 점수들을 기반으로 각 예비 결과 엔티티 레코드에 대한 결과 점수들을 생성하도록 구성된다. 하나 이상의 처리 유닛은 예비 결과 엔티티 레코드들로부터 애플리케이션 링크들을 포함하는 검색 결과들을 생성하도록 구성된다. 검색 결과들의 애플리케이션 링크들은 애플리케이션 링크들과 연관된 결과 점수들에 따라 순위가 지정된다. 추가로, 하나 이상의 처리 유닛은 검색 결과들을 요청 디바이스로 전송하도록 구성된다.
본 발명 내용은 상세한 설명 및 첨부 도면으로부터 보다 완전히 이해될 것이다.
도 1은 본 발명의 검색 시스템 및 이벤트 시스템을 포함하는 환경을 도시한다.
도 2는 검색 시스템 및 이벤트 시스템의 동작을 서술하는 예시적인 방법이다.
도 3a는 이벤트 시스템의 기능 블록도이다.
도 3b는 예시적인 사용자 데이터 객체를 도시한다.
도 4는 예시적인 검색 시스템의 기능 블록도이다.
도 5a는 예시적인 애플리케이션 특정 엔티티 레코드를 예시한다.
도 5b는 예시적인 병합된 엔티티 레코드를 도시한다.
도 6a는 이벤트 데이터에 기초하여 인기도 점수들을 계산하는 예시적인 방법이다.
도 6b는 애플리케이션-특정 데이터에 기초하여 인기도 점수들을 계산하는 예시적인 방법이다.
도 7a는 다른 예시적인 검색 시스템의 기능 블록도이다.
도 7b는 도 7a의 검색 시스템의 동작을 서술하는 예시적인 방법이다.
도 8a는 검색 결과들이 결과 점수에 의해 순위가 매겨진 예시적인 검색 결과 페이지를 도시한다.
도 8b는 검색 결과들이 애플리케이션에 의해 구성되는 예시적인 검색 결과 페이지를 도시한다.
도 8c는 검색 결과들이 버티컬으로 구성된 예시적인 검색 결과 페이지를 도시한다.
도 9는 다른 예시적인 검색 시스템의 기능 블록도이다.
도 10은 도 9의 검색 시스템의 동작을 서술하는 예시적인 방법이다.
도면들에서, 참조 번호들은 유사 및/또는 동일한 요소를 식별하기 위해 재사용될 수 있다.
본 발명의 검색 시스템은 사용자 디바이스로부터 검색 요청을 수신하고, 검색 결과들을 생성하고, 검색 결과들을 사용자 디바이스로 전송한다(예를 들어, 도 7a 참조). 검색 결과들에는 애플리케이션들 및 웹사이트들의 엔티티들에 대한 콘텐츠에 액세스하는 사용자 선택 가능한 링크들이 포함될 수 있다. 예를 들어, 사용자 선택가능한 링크들은 비즈니스 엔티티들, 영화 엔티티들, 음악 엔티티들 및 기타 유형들의 엔티티들에 대한 콘텐츠(예를 들어, 페이지들)에 액세스할 수 있다.
본 발명의 이벤트 시스템은 사용자들이 애플리케이션들 및 웹 사이트들에 참여하는 방법을 나타내는 이벤트 데이터를 획득한다(예를 들어, 도 3a 참조). 예를 들어, 이벤트 시스템은 사용자 디바이스들로부터 이벤트 데이터를 보고하는 애플리케이션/웹 모듈들로부터 이벤트 데이터를 수신할 수 있다. 애플리케이션 이벤트 데이터에는 애플리케이션 열기, 애플리케이션 상태(예를 들어, 페이지) 액세스, 애플리케이션에서 구매와 같은 애플리케이션 이벤트들이 포함될 수 있다. 웹 이벤트 데이터에는 웹 페이지들 액세스 및 웹 사이트들에서 아이템들 구매와 같은 웹 이벤트들이 포함될 수 있다.
검색 시스템은 복수의 사용자들에 대해 집계된 이벤트 데이터에 기초하여 검색 결과들을 생성할 수 있다. 집계된 이벤트 데이터는 본 명세서에서 "집계 이벤트 데이터/값들"로 지칭될 수 있다. 예시적인 집계 이벤트 데이터에는 일일/월간 활성 사용자 수와 같은 활성 사용자 수가 포함될 수 있다. 검색 시스템은 또한 사용자 디바이스와 관련된 이벤트 데이터(본 명세서에서는 "사용자 특정 이벤트 데이터" 또는 "사용자 데이터"라고 함)에 기초하여 사용자 디바이스에 대한 개인화된 검색 결과들을 생성할 수 있다. 사용자 특정 이벤트 데이터의 예에는 특정 애플리케이션들이 사용자 디바이스에 설치되었는지를 나타내는 설치 데이터가 포함될 수 있다. 사용자 특정 이벤트 데이터는, 사용자가 특정 애플리케이션들/웹 사이트들에 얼마나 자주 참여했는지를 나타낼 수도 있다.
일부 구현들에서, 검색 시스템은 다른 사용자 디바이스들을 사용하는 동안 애플리케이션들 및 웹 사이트들에 대한 사용자의 참여를 기반으로 사용자 디바이스에 대한 개인화된 검색 결과들을 생성할 수 있다. 이러한 구현들에서, 검색 시스템은 다수의 디바이스들에 걸쳐 동일한 사용자에 대한 사용자 특정 이벤트 데이터를 기반으로 검색 결과들을 생성할 수 있다. 사용자 특정 이벤트들은 (예를 들어, 사용자 식별 데이터에 의해) 서로 연결될 수 있다.
검색 시스템은 검색 시스템이 검색에 사용하는 엔티티 레코드들(예를 들어, 도 5a 내지 5b 참조)을 저장할 수 있다. 엔티티 레코드들에는 엔티티 이름 및 엔티티 설명과 같은 엔티티와 관련된 데이터가 포함될 수 있다. 예시 엔티티에는 특정 레스토랑들, 영화들, 도시들, 배우들 등과 같은 사람들, 장소들 또는 사물들이 포함될 수 있다. 엔티티 레코드에는 URL(Uniform Resource Locator) 링크들과 같은 애플리케이션들/웹 사이트들의 엔티티들에 대한 링크들도 포함될 수 있다.
엔티티 레코드들에는 애플리케이션 특정 엔티티 레코드들 및/또는 병합된 엔티티 레코드들이 포함될 수 있다. 애플리케이션 특정 엔티티 레코드들("앱 특정 엔티티 레코드들")은 특정 애플리케이션 내의 엔티티에 대한 링크(예를 들어, URL)와 함께 특정 애플리케이션의 엔티티와 관련된 데이터를 포함할 수 있다. 예를 들어, 애플리케이션의 레스토랑에 대한 앱 특정 엔티티 레코드는 애플리케이션의 레스토랑에 대한 링크와 함께 레스토랑과 관련된 데이터를 포함할 수 있다. 병합된 엔티티 레코드에는 다수의 애플리케이션들의 엔티티에 대한 링크들과 함께 다수의 애플리케이션들의 엔티티에 대한 데이터가 포함될 수 있다.
일부 구현들에서, 검색 시스템은 엔티티들과 연관된 총 이벤트 데이터에 기초하여 엔티티들에 대한 인기도 점수들을 결정할 수 있다. 인기도 점수는 다른 엔티티들에 대한 엔티티의 인기도를 나타낼 수 있다. 검색 시스템은 다른 엔티티들과의 참여 횟수에 대한 엔티티와의 참여 횟수에 기초하여 엔티티에 대한 인기도 점수를 결정할 수 있다. 검색 시스템은 엔티티들과 관련된 인기도 점수들에 기초하여 검색 결과들을 점수화/필터링할 수 있다. 검색 시스템에서 사용하는 개인화, 집계 이벤트 데이터 및 인기 점수들은, 검색 결과들이 사용자와 관련된 인기있는 엔티티들을 제공하도록 보장할 수 있다.
일부 구현들에서, 검색 시스템은 순위 지정 및/또는 디스플레이를 위해 검색 결과들을 그룹화할 수 있다. 예를 들어, 검색 시스템은 검색 결과들과 연관된 애플리케이션에 의해 검색 결과들을 함께 그룹화할 수 있다(예를 들어, 도 8b 참조). 이 예에서, 검색 시스템은 애플리케이션들에 대한 사용자의 이전 참여들 및/또는 애플리케이션과의 통합 참여를 기반으로 애플리케이션 결과 그룹들의 순위를 매길 수 있다.
일부 구현들에서, 검색 시스템은 검색 결과들과 연관된 버티컬(vertical)(예를 들어, 카테고리)에 의해 검색 결과들을 함께 그룹화할 수 있다(예를 들어, 도 8c 참조).예를 들어, 검색 시스템은 비즈니스 유형(예를 들어, 레스토랑, 호텔 등)별로 검색 결과들을 그룹화할 수 있다. 다른 예로서, 검색 시스템은 미디어 유형(예를 들어, 비디오, 오디오)별로 검색 결과들을 그룹화할 수 있다. 검색 시스템은 결정된 수직적 의도에 기초하여 수직적 결과 그룹들의 순위를 매길 수 있다. 애플리케이션 및/또는 사용자의 수직적 의도에 따른 순위는, 사용자 이력 및 제출된 검색 질의로 표시되는 사용자의 애플리케이션 선호들과 관련이 있고 개인화된 검색 결과들을 사용자에게 제공하는데 도움이 될 수 있다.
도 1 내지 도 10은 본 발명의 예시적인 검색 시스템 및 이벤트 시스템의 동작을 도시한다. 도 1 내지 도 2는 검색 시스템 및 이벤트 시스템을 포함하는 환경의 동작을 도시한다. 도 3a 내지 도 3b는 예시적인 이벤트 시스템의 동작을 도시한다. 도 4는 예시적인 검색 시스템을 도시한다. 도 5a 내지 도 5b는 예시적인 엔티티 레코드들을 도시한다. 도 6a 내지 도 6b는 인기도 점수들을 계산하기 위한 예시적인 방법들을 도시한다. 도 7a 내지 도 7b는 예시적인 검색 시스템의 동작을 도시한다. 도 8a 내지 도 8c는 검색 결과들의 예시적인 그룹화들을 도시한다. 도 9 내지 도 10은 검색 시스템의 다른 예시적인 구현의 동작을 도시한다.
도 1은, 네트워크(108)를 통해 통신하는 복수의 사용자 디바이스들(100), 복수의 파트너 시스템들(102), 검색 시스템(104)(예를 들어, 서버 컴퓨팅 디바이스) 및 이벤트 시스템(106)(예를 들어, 서버 컴퓨팅 디바이스)을 포함한다. 네트워크 (108)는 근거리 통신망(LAN), 광역 통신망(WAN) 및/또는 인터넷과 같은 다양한 유형의 컴퓨터 네트워크를 포함할 수 있다. 검색 시스템(104)은 사용자 디바이스들(100) 및 파트너 시스템들(102)(예를 들어, 검색 시스템(104) 및/또는 이벤트 시스템(106)의 파트너들)으로부터 검색 질의들을 포함하는 검색 요청들을 수신할 수 있다. 검색 시스템(104)은 검색 질의들을 처리하고, 하나 이상의 검색들을 수행하고, 애플리케이션 상태들 및/또는 웹 사이트들에 대한 링크들을 포함하는 검색 결과들을 출력한다. 애플리케이션 상태들(예를 들어, 설치된 애플리케이션들의 경우) 및/또는 웹 사이트들은 사용자의 검색 질의를 해결하는 엔티티들 및 액션들과 연관될 수 있다.
환경은 하나 이상의 디지털 배포 플랫폼(110)을 포함한다. 디지털 배포 플랫폼(110)은 애플리케이션들을 사용자 디바이스들(100)에 배포하도록 구성된 컴퓨팅 시스템을 나타낼 수 있다. 디지털 배포 플랫폼의 예에는 구글, 인코포레이티드의 구글 플레이® 디지털 배포 플랫폼 및 애플, 인코포레이티드의 앱 스토어® 디지털 배포 플랫폼이 포함되며 이에 국한되지 않는다. 디지털 배포 플랫폼(110)은 하나 이상의 파트너 애플리케이션(112)(예를 들어, 검색 시스템(104) 및/또는 이벤트 시스템(106)의 파트너들)을 포함할 수 있고, 이들 각각은 앱 모듈(114) 및/또는 시스템 링크들(116)(예를 들어, 이벤트 시스템 콘텐츠에 대한 링크들)을 포함할 수 있다. 디지털 배포 플랫폼들(110)은 또한 파트너들 이외의 당사자에 의해 개발된 복수의 애플리케이션들(118)을 포함할 수 있다. 사용자들은 디지털 배포 플랫폼들(110)로부터 애플리케이션들을 다운로드하고 사용자 디바이스들(100)에 애플리케이션들을 설치할 수 있다.
환경은 복수의 서버들(120)(예를 들어, 웹 서버들)을 포함한다. 서버들(120)은 웹 사이트들(또는 웹 애플리케이션들)을 사용자 디바이스들(100)에 제공할 수 있다. 일부 구현들에서, 서버들(120)은 파트너 웹 사이트들(122)을 사용자 디바이스들(100)에 제공할 수 있다. 파트너 웹 사이트(122)는 하나 이상의 시스템 링크 (116)와 함께 파트너에 의해 구성된 웹 모듈(124)을 포함할 수 있다. 서버들(120)은 또한 다른 웹 사이트들(126)(예를 들어, 파트너들에 의해 운영되는 웹 사이트 이외의 것)를 제공할 수 있다. 일부 경우들에서, 다른 웹 사이트들(126)은 시스템 링크들(116)을 포함할 수 있다.
사용자 디바이스(100)는 운영 체제(128) 및 복수의 애플리케이션들, 예를 들어, 웹 브라우저 애플리케이션(130) 및 추가 애플리케이션들(112, 118)을 포함한다. 추가 애플리케이션의 예로는, 전자 상거래 애플리케이션들, 소셜 미디어 애플리케이션들, 비즈니스 리뷰 애플리케이션들, 뱅킹 애플리케이션들, 게임 애플리케이션들 및 일기 예보 애플리케이션들이 포함될 수 있지만 이에 국한되지는 않는다. 웹 브라우저(130)를 사용하여, 사용자 디바이스(100)는 네트워크(108)를 통해 서버들(120)상의 다양한 웹 사이트들에 액세스할 수 있다. 사용자 디바이스(100)는 또한 네트워크(108)를 통해 디지털 배포 플랫폼들(110)으로부터 애플리케이션을 다운로드하고 애플리케이션을 설치할 수 있다.
파트너 애플리케이션들(112), 파트너 웹 사이트들(122) 및 파트너 시스템들(102)은 검색 시스템 및/또는 이벤트 시스템 소유자/운영자의 파트너일 수 있다. 다양한 유형의 파트너들은 파트너 시스템들(102)을 운영하고 파트너 애플리케이션들(112) 및 파트너 웹 사이트들(122)을 개발할 수 있다. 파트너 애플리케이션들(112) 및 웹 사이트들(122)의 개발자들은 파트너 시스템들(102)을 소유/운영하는 사람들과 상이한 당사자들일 수 있다. 파트너들(예를 들어, 파트너 시스템(102)들)은 애플리케이션 프로그래밍 인터페이스(API)를 사용하여 검색 시스템에 액세스할 수 있다. 일부 구현들에서, 파트너들은 검색 시스템(104)과 직접 및/또는 파트너 시스템(102)을 통해(예를 들어, API를 통해) 통신하는 파트너 애플리케이션들(112) (예를 들어, 독립형 애플리케이션들, 런처 애플리케이션들 또는 기타 애플리케이션들)을 제공할 수 있다.
사용자 디바이스(100)는 검색 애플리케이션(132)을 포함한다. 검색 애플리케이션(132)은 검색 결과들을 수신하기 위해 검색 시스템(104) 및/또는 파트너 시스템들(102)과 통신할 수 있다. 예를 들어, 검색 애플리케이션(132)은 사용자의 검색 질의를 수신하고 검색 시스템(104) 및/또는 파트너 시스템들(102)에 검색 요청을 할 수 있다. 검색 애플리케이션(132)은 검색 시스템(104) 및/또는 파트너 시스템들(102)로부터 수신된 검색 결과들을 수신하고 디스플레이할 수 있다.
검색 애플리케이션(132)에 의해 수신된 검색 결과들은 그래픽 사용자 인터페이스(GUI)에서 검색 결과들을 렌더링하기 위한 디스플레이 데이터를 포함할 수 있다. 디스플레이 데이터는, 1) 애플리케이션 이름, 2) 검색 결과의 제목(예를 들어, 레스토랑 이름), 3) 검색 결과와 관련된 상태에 대한 설명(예를 들어, 레스토랑에 대한 설명), 4) 애플리케이션 상태와 관련된 하나 이상의 이미지, 및 5) 검색 결과와 관련된 하나 이상의 액션들을 포함할 수 있지만, 이에 국한되지는 않는다. 검색 결과들에는 검색 결과들과 관련된 애플리케이션 상태들에 액세스하기 위한 데이터도 포함될 수 있다. 애플리케이션 상태는 일반적으로 애플리케이션의 페이지/스크린을 참조할 수 있다. 일부 경우들에서, 검색 결과들은 사용자 디바이스(100)에서 애플리케이션 상태들을 시작하는 애플리케이션 URL들을 포함할 수 있다. 다른 경우들에는, 검색 결과들에 애플리케이션이 애플리케이션 상태에 액세스하는 데 사용할 수 있는 애플리케이션 메타 데이터가 포함될 수 있다.
사용자는 GUI에서 검색 결과들 중 하나를 선택할 수 있다. 사용자 디바이스 (100)는 수신된 검색 결과에 포함된 데이터를 이용하여 검색 결과와 관련된 애플리케이션 상태를 열 수 있다. 이후, 사용자는 액세스된 애플리케이션 상태와 상호 작용할 수 있다. 특정 예에서, 옐프, 인코포레이티드에서 개발한 옐프® 비즈니스 디렉토리 애플리케이션과 관련하여, 라운드 테이블 피자 레스토랑에 대한 옐프® 애플리케이션 검색 결과를 선택하면 옐프® 애플리케이션의 라운드 테이블 피자 애플리케이션 상태에 액세스할 수 있다.
사용자 디바이스(100)는 디지털 배포 플랫폼(110)으로부터 파트너 애플리케이션들(112)을 다운로드하고 설치한다. 검색 애플리케이션(132)은 다양한 방식들로 사용자 디바이스(100)에서 구현될 수 있다. 일부 구현들에서, 사용자는 (예를 들어, 디지털 배포 플랫폼(110)으로부터) 검색 애플리케이션(132)을 다운로드하고 검색 애플리케이션(132)을 사용자 디바이스(100)에 설치할 수 있다. 다른 구현들에서, 검색 애플리케이션(132)은, 사용자가 (예를 들어, 사전로딩된 애플리케이션으로서) 사용자 디바이스(100)를 구매하기 전에 사용자 디바이스(100)에 설치될 수 있다. 일부 경우들에서, 검색 애플리케이션(132)은 "네이티브 애플리케이션" 또는 "위젯"으로 지칭될 수 있다. 일부 구현들에서, 여기에 검색 애플리케이션(132)에 귀속되는 기능은, 런처 애플리케이션과 같은 다른 애플리케이션들 또는 스마트 스피커 디바이스(예를 들어, 아마존.컴 인코포레이티드의 에코 스마트 스피커, 구글, 인코포레이티드의 구글 홈 스마트 스피커, 또는 애플 인코포레이티드의 애플 홈팟 스마트 스피커)와 같은 스마트 어시스턴트 디바이스의 일부로서 포함될 수 있다. 일부 구현들에서, 검색 애플리케이션(132)은 파트너 시스템들(102)을 통해 검색 시스템(104)과 통신할 수 있다. 일부 구현들에서, 여기서 검색 애플리케이션(132)에 귀속되는 기능은 사용자 디바이스(100)에서 웹 브라우저(130)를 사용하여 액세스되는 웹 기반 검색으로서 구현될 수 있다.
사용자는 검색 애플리케이션(132)에 검색 질의를 입력할 수 있다(예를 들어, 도 8a 내지 도 8c 참조). 검색 애플리케이션(132)은 검색 질의 및 기타 데이터를 포함하는 검색 요청을 생성한다. 일부 구현들에서, 검색 애플리케이션(132)은 검색 요청에 포함할 컨텍스트 데이터를 획득할 수 있다. 컨텍스트 데이터는, 사용자 ID, 운영 체제 정보, 디바이스 유형 정보, 지리적 위치 데이터, 시간, 질의 이력 데이터(예를 들어, 검색 애플리케이션에서 하나 이상의 사전 질의), 애플리케이션 사용 데이터, 사용자 동작 상태 데이터(예를 들어, 걷기, 자전거 타기, 운전), 사용자-이력 컨텍스트(예를 들어, 위의 모든 것), 및/또는 질의의 카테고리(예를 들어, GUI에서 선택됨)와 같은 다양한 유형의 데이터를 포함할 수 있다.
일부 구현들에서, 검색 애플리케이션(132)은 검색 애플리케이션과 연관된 사용자 선호도들 및/또는 사용자 이력 데이터와 같은 검색 요청에 사용자 특정 데이터를 포함할 수 있다. 사용자 특정 데이터의 예는, 사용자 인구 통계 데이터, 사용자 지리적 위치 선호도들, 과거 질의들 및 요리 선호도들 또는 호텔 선호도들과 같은 버티컬/카테고리 선호도를 포함할 수 있지만 이에 국한되지는 않는다. 검색 애플리케이션(132)은 검색 애플리케이션과 연관된 사용자 특정 데이터를 저장할 수 있다.
본 발명의 이벤트 시스템(106)은 사용자 디바이스들(100)(예를 들어, 모바일 컴퓨팅 디바이스들)에 의해 생성된 이벤트 데이터를 수신한다. 사용자 디바이스들(100)은 사용자가 웹 사이트들을 탐색하는 동안 및/또는 사용자 디바이스(100)에 설치된 애플리케이션(예를 들어, 네이티브 애플리케이션)을 사용하는 동안 이벤트 데이터를 생성할 수 있다. 예를 들어, 이벤트 데이터는, 사용자가 애플리케이션을 열거나 투여하고, 웹 페이지를 보거나, 그리고/또는 애플리케이션 또는 웹 페이지에서 링크들(예를 들어, 하이퍼 링크들)을 선택할 때 생성될 수 있다.
이벤트 시스템(106)은 시간이 지남에 따라 사용자 디바이스들(100)에서 발생하는 이벤트들을 추적하고 일부 이벤트들의 발생을 이전 이벤트들에 귀속시킬 수 있다. 예를 들어, 이벤트 시스템(106)은 웹 페이지 상의 하이퍼 링크 또는 배너 광고와 같은 링크의 이전 사용자 선택에 애플리케이션의 설치를 귀속시킬 수 있다. 다른 예로서, 이벤트 시스템(106)은 웹 사이트 및/또는 애플리케이션 상의 아이템의 구매를 이전에 선택된 링크에 귀속시킬 수 있다. 이벤트 시스템(106)에 의해 제공되는 속성 기능은 애플리케이션들/웹 사이트들의 성능을 모니터링하고자 할 수 있는 회사, 광고주들 및 애플리케이션 개발자들과 같은 다양한 당사자들에게 유용할 수 있다. 추가적으로, 이벤트 시스템(106)에 의해 제공되는 속성 기능은 또한 웹 링크의 사용자 선택에 응답하여 사용자 디바이스를 애플리케이션 상태로 라우팅하는 것과 같은 다양한 기능을 사용자 디바이스들(100)에 제공하는 데 사용될 수 있다.
이벤트 시스템(106)은 복수의 사용자들에 대한 이벤트 데이터에 기초하여 집계 이벤트 데이터를 생성할 수 있다. 집계 이벤트 데이터에는 활성 사용자 수와 같은 애플리케이션 참여를 나타내는 집계 데이터가 포함될 수 있다. 집계 이벤트 데이터는 일정 기간 동안 엔티티들에 대한 여러 이벤트들을 나타낼 수도 있다. 일부 구현들에서, 집계 이벤트들은 이벤트 유형에 따라 분류될 수 있다. 집계 이벤트 데이터는 다양한 지리적 위치들, 언어들, 장치 유형들 및 기타 파라미터들에 대해 계산될 수 있다.
파트너는 다양한 방식들로 이벤트 시스템(106)과 통합될 수 있다. 예를 들어, 파트너는, 파트너가 수정하고 자신의 애플리케이션(들) 및 웹 사이트에 포함할 수 있는 애플리케이션 및 웹 모듈 컴포넌트들을 검색할 수 있다. 애플리케이션 모듈 컴포넌트들은 파트너의 애플리케이션(112)에 포함될 수 있는 소프트웨어 라이브러리들 및 기능들/방법들을 포함할 수 있다. 기능들/방법들은, 시스템 링크들(116)을 요청하고, 시스템 링크들(116)의 선택을 처리하고, 이벤트 데이터를 이벤트 시스템(106)(예를 들어, 애플리케이션 오픈 이벤트들)로 전송하고, 이벤트 시스템(106)으로부터 수신된 데이터를 처리하기 위해 애플리케이션에 의해 호출될 수 있다. 웹 모듈 컴포넌트는 파트너의 웹 사이트(122)에 포함될 수 있는 소프트웨어 라이브러리들 및 기능들/방법들을 포함할 수 있다. 기능들/방법들(예를 들어, 자바스크립트)은 이벤트 시스템(106)과 관련하여 여기에 서술된 다양한 기능들을 웹 사이트에 제공하기 위해 호출될 수 있다. 예를 들어, 기능들/방법들은 시스템 링크들 (116)을 요청하고, 시스템 링크들(116)의 선택을 처리하고, 이벤트 데이터를 이벤트 시스템(106)(예를 들어, 웹페이지 뷰 이벤트들)로 전송하고, 이벤트 시스템(106)으로부터 수신된 데이터를 처리하기 위해 호출될 수 있다. 애플리케이션 및 웹 모듈 컴포넌트는 이벤트 시스템(106)과 통신하기 위한 기능들을 제공하는 컴퓨터 코드를 포함할 수 있다. 파트너들은 또한 그들의 애플리케이션들/웹 사이트들 및/또는 다른 애플리케이션들/웹 사이트들에 포함하기 위한 시스템 링크들(116)을 생성할 수 있다.
환경은 하나 이상의 데이터 제공자(134)를 포함한다. 데이터 제공자(134)는 이벤트 데이터("외부 이벤트 데이터")를 이벤트 시스템(106)에 제공하는 컴퓨팅 시스템들을 나타낼 수 있다. 데이터 제공자(134)는 이벤트 시스템(106)의 파트너들 및 운영자들 이외의 당사자들일 수 있다. 일부 구현들에서, 데이터 제공자(134)는 데이터 관리 및 분석 서비스들을 (예를 들어, 파트너들, 이벤트 시스템(106) 및 다른 당사자에게) 제공하는 사업체일 수 있다. 데이터 제공자(134)는 사용자가 파트너의 애플리케이션들 및 웹 사이트들을 어떻게 사용하고 있는지에 관한 추가 데이터(예를 들어, 이벤트 시스템(106)에 추가하여)를 수집할 수 있다. 일부 경우들에서, 파트너들은 이벤트 데이터를 저장하고 그리고/또는 분석을 제공하기 위해 데이터 제공자들(134)을 사용할 수 있다. 데이터 관리 제공자들의 예로는 뉴욕주, 뉴욕의 엠파티클 인코포레이티드 및 캘리포니아주, 샌프란시스코의 세그먼트 인코포레이티드가 있다.
외부 이벤트 데이터에는 파트너의 웹 사이트들 및/또는 애플리케이션들과 관련하여 발생하는 이벤트들과 관련된 데이터가 포함될 수 있다. 추가로 또는 대안으로, 외부 이벤트 데이터는 파트너가 운영하지 않는 웹 사이트들 및 애플리케이션들에서 발생하는 이벤트들과 관련된 데이터일 수 있다. 일부 경우들에서, 외부 이벤트 데이터는 (예를 들어, 앱/웹 모듈들(114, 124)을 통해) 이벤트 시스템(106)에 의해 획득되지 않은 이벤트 데이터를 포함할 수 있다. 예를 들어, 데이터 제공자(134)는 다른 당사자들(예를 들어, 데이터 제공자들 자체)에 의해 파트너의 웹 사이트들/애플리케이션들에 통합된 모듈들을 통해 추가 이벤트 데이터를 수신할 수 있다. 이벤트 시스템(106)은 사용자 디바이스들(106)로부터 수신된 이벤트 데이터와 유사한 방식으로 데이터 제공자들로부터 수신된 외부 이벤트 데이터를 처리할 수 있다.
도 2는 도 1의 환경의 동작을 설명하는 예시적인 방법을 도시한다. 블록 200에서, 이벤트 시스템(106)은 파트너 애플리케이션들(112) 및 웹 사이트들(122)에 포함되도록 파트너들에게 앱/웹 모듈 컴포넌트들을 제공한다. 블록 202에서, 이벤트 시스템(106)은 복수의 사용자 디바이스들(100)로부터 이벤트 데이터를 수신한다. 추가적으로 또는 대안적으로, 이벤트 시스템(106)은 파트너 시스템들(102) 및/또는 데이터 제공자들(134)과 같은 다른 소스들로부터 이벤트 데이터를 수신할 수 있다. 블록 204에서, 이벤트 시스템(106)은 수신된 이벤트 데이터에 기초하여 사용자 데이터 객체들을 생성한다. 사용자 데이터 객체들은 단일 사용자 디바이스에 대한 이벤트 데이터를 포함할 수 있다. 사용자 데이터 객체는 단일 사용자 디바이스에 대한 이벤트 데이터를 포함할 수 있다. 일부 구현들에서, 사용자 데이터 객체는 동일한 사용자에 의해 운영되는 복수의 사용자 디바이스들에 대한 이벤트 데이터를 포함할 수 있다. 블록 206에서, 이벤트 시스템(106)은 사용자 데이터 객체들에 기초하여 집합 이벤트 데이터를 생성한다.
블록 208에서, 검색 시스템(104)은 웹 사이트들(122, 126), 애플리케이션들(112, 118), 파트너 시스템들(102) 및/또는 데이터 제공자들(134)로부터 획득된 데이터와 같은 획득된 엔티티 데이터에 기초하여 엔티티 레코드들을 생성하고 업데이트한다. 블록 210에서, 검색 시스템(104)은 집계 이벤트 데이터에 기초하여 인기도 점수들을 생성한다. 검색 시스템(104)은 엔티티 레코드들에 인기도 점수들을 포함할 수 있다.
블록 212에서, 검색 시스템(104)은 사용자 디바이스로부터 검색 요청을 수신한다. 검색 요청은 추가 데이터(예를 들어, 사용자 디바이스의 지리적 위치)와 함께 검색 질의를 포함할 수 있다. 블록 214에서, 검색 시스템(104)은 애플리케이션 상태들에 대한 링크들을 포함하는 검색 결과들을 생성한다. 검색 시스템(104)은 집계 이벤트 값들, 사용자 디바이스에 대한 사용자 이벤트 데이터 및/또는 검색 결과들과 연관된 인기도 점수들에 기초하여 검색 결과들을 생성할 수 있다. 검색 결과들은 애플리케이션 상태들 및/또는 웹 사이트들에 액세스하는 애플리케이션/웹 링크들을 포함할 수 있다. 검색 결과들은 또한 사용자 디바이스가 검색 결과들을 렌더링하는 데 사용할 수 있는 데이터를 디스플레이할 수 있다.
블록 216에서, 검색 시스템(106)은 검색 요청을 생성한 사용자 디바이스로 검색 결과들을 전송한다. 블록 218에서, 사용자 디바이스(예를 들어, 검색 애플리케이션)는 검색 결과들을 사용자 선택 가능한 링크들로 렌더링할 수 있다. 일부 구현들에서, 검색 결과들은 애플리케이션별로 그룹화될 수 있다. 다른 구현들에서는 검색 결과들을 버티컬으로 그룹화할 수 있다. 사용자는, 사용자 디바이스로 하여금 링크와 관련된 애플리케이션 상태에 액세스하도록 하는 애플리케이션 링크를 선택(예를 들어, 터치/클릭)할 수 있다. 검색 시스템(104)이 애플리케이션 링크들을 제공할 수 있지만, 일부 구현들에서, 검색 시스템(104)은 웹 사이트 링크들을 제공할 수 있다. 이러한 구현들에서, 사용자는 사용자 디바이스(예를 들어, 웹 브라우저)로 하여금 웹 사이트 링크와 연관된 웹 사이트에 액세스하도록 하는 웹 사이트 링크를 선택할 수 있다.
도 3a는 예시적인 이벤트 시스템(106)을 도시한다. 이벤트 시스템(106)은 복수의 소스들로부터 이벤트 데이터를 획득하는 이벤트 데이터 획득 및 처리 모듈(300)(이하 "이벤트 처리 모듈 (300)")을 포함한다. 예시적인 이벤트 데이터는 앱 이벤트 데이터, 웹 이벤트 데이터 및 시스템 링크 데이터를 포함할 수 있다. 이벤트 처리 모듈(300)은 획득된 이벤트 데이터에 기초하여 사용자 데이터 객체들(302)(예를 들어, 도 3b의 예시적인 사용자 데이터 객체(302) 참조)을 생성할 수 있다. 이벤트 처리 모듈(300)은 또한 수신된 이벤트 데이터 및 사용자 데이터 객체들에 기초하여 집계 이벤트 데이터(304)를 생성할 수 있다. 집계 이벤트 데이터는 복수의 사용자들이 파트너 애플리케이션들(112) 및 웹 사이트들(122)과 어떻게 참여하고 있는지를 나타낼 수 있다. 이벤트 처리 모듈(300)은 사용자 데이터 객체들(302)을 업데이트하고 (예를 들어, 새로 수신된 이벤트 데이터에 응답하여) 시간에 따라 이벤트 데이터(304)를 집계할 수 있다. 이벤트 시스템(106)은 사용자 데이터 객체들(302) 및 집계 이벤트 데이터(304)를 포함하는 수신된 이벤트 데이터를 저장할 수 있는 이벤트 데이터 저장소(306)를 포함한다.
이벤트 시스템(106)에 의해 수신된 이벤트 데이터는 이벤트 데이터를 생성한 사용자 디바이스를 식별하는 디바이스 식별자들("디바이스 ID들")(308)을 포함할 수 있다. 이벤트 시스템은 이벤트들(예를 들어, 애플리케이션 설치들, 애플리케이션 열기들 및 링크 선택들)을 추적하고 이벤트들을 이전 이벤트들에 귀속시키기 위해 다양한 디바이스 ID들을 사용할 수 있다. 일부 디바이스 ID들은 사용자 디바이스의 웹 브라우저와 연관될 수 있다(예를 들어, 웹 브라우저로 설정될 수 있다). 웹 브라우저와 관련된 디바이스 ID들은 여기에서 "웹 ID들"로 지칭될 수 있다. 예시적인 웹 ID들에는 웹 쿠키들, 인터넷 쿠키들 또는 HTTP(Hypertext Transfer Protocol) 쿠키들이라고도 하는 브라우저 쿠키 ID들이 포함될 수 있다. 일부 디바이스 ID들은 웹 브라우저가 아닌 사용자 디바이스에 설치된 애플리케이션들과 연관 수 있다. 일부 경우들에서, 디바이스 ID들은 설치된 애플리케이션들이 액세스할 수 있는 운영 체제 생성 ID들일 수 있다. 추가적인 예시 디바이스 ID들은 광고 ID들이 포함될 수 있으며, 이는 사용자 디바이스의 운영 체제(OS)에 따라 달라질 수 있다.
이벤트 시스템은 개별 사용자들을 위한 이벤트 데이터를 (예를 들어, 사용자 데이터 객체들(302)에) 저장할 수 있다. 각각의 사용자 데이터 객체(302)는 사람이 시간에 따라 하나 이상의 사용자 디바이스를 사용하는 방법을 나타내는 데이터 (310)(예를 들어, 이벤트들의 리스트)를 포함할 수 있다. 예를 들어, 단일 사용자 데이터 객체는 개인이 단일 사용자 디바이스(예를 들어, 스마트 폰)에서 웹 브라우저 및 다수의 애플리케이션들을 사용하는 방법을 나타내는 데이터를 포함할 수 있다. 보다 구체적인 예에서, 단일 사용자 데이터 객체는 개인이 파트너의 웹 사이트 및 애플리케이션과 상호 작용하는 방식을 나타내는 데이터를 포함할 수 있다. 이벤트 시스템(106)은 이벤트 데이터가 수신되는 각각의 사용자 디바이스에 대한 하나 이상의 사용자 데이터 객체(302)를 저장할 수 있다. 이벤트 시스템(106)은 기존 사용자 데이터 객체들에 포함된 디바이스 ID들과 동일한 디바이스 ID들과 관련된 이벤트 데이터를 수신하는 것에 응답하여 기존 사용자 데이터 객체들을 업데이트할 수 있다. 이벤트 시스템(106)은 새로운 디바이스 ID와 연관된 각각의 이벤트에 대한 새로운 사용자 데이터 객체를 생성할 수 있다. 단일 사용자 디바이스가 다수의 디바이스 ID들(예를 들어, 웹 ID들 및/또는 광고 ID들)을 생성할 수 있기 때문에, 이벤트 시스템(106)은 단일 디바이스에 대한 다수의 사용자 데이터 객체들을 저장할 수 있다. 이벤트 시스템(106)은 동일한 사용자 디바이스에 속하는 상이한 사용자 데이터 객체들을 식별하는 매칭 기능을 포함할 수 있다. 예를 들어, 이벤트 시스템(106)은 사용자 디바이스들의 인터넷 프로토콜(IP) 주소들, OS 이름들, OS 버전들, 장치 유형들, 화면 해상도들 및 사용자 식별 데이터(예를 들어, 사용자 이름)(이에 국한되지 않음)를 포함하는 데이터에 기초하여 2개의 사용자 데이터 객체들을 매칭할 수 있다. 일부 예들에서, 이벤트 시스템(106)은 매칭하는 사용자 데이터 객체들을 결합할 수 있다(예를 들어, 이벤트 데이터를 결합할 수 있다).
일부 경우들에서, 이벤트 시스템(106)(예를 들어, 이벤트 응답 모듈(312))은 다음 예에 의해 예시된 바와 같이 사용자 디바이스에 의해 생성된 과거 이벤트들에 기초하여 사용자 디바이스에 응답을 제공하기 위해 사용자 데이터 객체들을 활용할수 있다. 사용자가 사용자 디바이스에 설치되지 않은 애플리케이션의 콘텐츠에 액세스하기 위한 링크를 선택하면, 이벤트 시스템(106)(예를 들어, 이벤트 응답 모듈 (312))은 링크의 선택을 기록할 수 있고, 사용자가 애플리케이션을 다운로드/설치하도록 다시지시할 수 있다. 새로 설치된 애플리케이션을 열 때, 애플리케이션은 이벤트를 이벤트 시스템(106)으로 전송할 수 있다. 이벤트 시스템(106)(예를 들어, 이벤트 응답 모듈(312))은 2개의 사용자 데이터 객체들을 매칭할 수 있고, 매칭에 기초하여, 이벤트 시스템(106)은 열린 애플리케이션을 이전에 선택된 링크에 의해 링크된 콘텐츠로 지시할 수 있다. 이 예에서, 애플리케이션의 열기 및 애플리케이션의 설치는 링크 선택에 기인할 수 있다.
일부 구현들에서, 이벤트 시스템(106)은 광고 링크들 및/또는 공유 콘텐츠에 대한 링크와 같은 사용자 선택 가능한 링크들에서 사용하기 위한 데이터를 생성하고 저장할 수 있다. 예를 들어, 이벤트 시스템(106)은 시스템 균일 자원 식별자 (이하 "시스템 URI") 및 데이터를 포함하는 시스템 링크 데이터 객체를 생성하고 저장할 수 있다. 시스템 링크 데이터 객체들은 시스템 링크 데이터 저장소(314)에 저장될 수 있다. 시스템 URI는 (예를 들어, 도메인/경로를 사용하여) 시스템 링크 데이터 객체의 네트워크 위치를 나타낼 수 있다. 시스템 URI는 애플리케이션 또는 웹 사이트의 사용자 선택가능한 링크(이하 "시스템 링크"라고 함)에 포함될 수 있다. 사용자 선택가능한 링크들의 예에는 하이퍼 링크들, GUI 버튼들, 그래픽 배너들 또는 그래픽 오버레이들가 포함될 수 있다. 시스템 링크의 선택에 응답하여, 사용자 디바이스는 사용자 디바이스에 응답을 제공할 수 있는 이벤트 시스템(106)(예를 들어, 이벤트 응답 모듈(312))에 액세스할 수 있다. 예를 들어, 사용자 디바이스에서 시스템 URI를 수신에 응답하여, 이벤트 응답 모듈(314)은 수신된 시스템 URI에 대응하는 데이터를 검색할 수 있고 검색된 데이터에 기초하여 다양한 기능들을 수행할 수 있다. 일 예에서, 이벤트 응답 모듈(314)은 데이터에 기초하여 사용자 디바이스를 (예를 들어, 애플리케이션을 다운로드하거나 기본 위치로) 다시 지시할 수 있다. 다른 예에서, 이벤트 응답 모듈(314)은, 사용자 디바이스가 데이터에 기초하여 행동할 수 있도록 데이터(예를 들어, 할인 코드, 사용자 추천 이름 등)를 사용자 디바이스에 전달할 수 있다. 이벤트 시스템(106)은, 시스템 링크들의 선택을 기록하고 시스템 링크 선택을 동일한 사용자 데이터 객체들 또는 상이한 사용자 데이터 객체들에 포함된 다른 이벤트들과 일치 시키려고 시도할 수 있다.
이벤트 시스템(106)은 이벤트들을 처리하고 사용자 디바이스들에 응답할 수 있다. 일 예에서, 이벤트 시스템(106)이 인입하는 이벤트를 이전 이벤트에 귀속 시켰다면, 이벤트 시스템(106)은 이전 이벤트에 의존하는 방식으로 인입하는 이벤트를 처리할 수 있다. 애플리케이션 설치가 시스템 링크의 이전 사용자 선택에 기인하는 예에서, 이벤트 시스템(106)은 이전에 선택된 시스템 링크의 시스템 URI에 따라 새로 설치된 애플리케이션을 라우팅할 수 있다. 일부 경우들에서, 이벤트 시스템(106)이 시스템 URI(예를 들어, 시스템 링크의 클릭을 나타내는 이벤트 데이터)를 수신하면, 이벤트 시스템(106)은 시스템 링크와 관련된 데이터를 검색할 수 있다. 이후, 이벤트 시스템(106)은 데이터에 따라 사용자 디바이스에 응답할 수 있다. 예를 들어, 이벤트 시스템(106)은 데이터에 따라 사용자 디바이스를 라우팅(예를 들어, 웹 브라우저를 리디렉션)할 수 있다. 이벤트 시스템(106)에 의해 사용자 디바이스에 제공되는 응답은 다양한 요인들에 따라 달라질 수 있다. 일부 경우들에서, 이벤트 시스템(106)은 수신된 이벤트에 응답하여 사용자 디바이스(예를 들어, 웹 브라우저 및/또는 애플리케이션)를 라우팅할 수 있다. 일부 경우들에서, 이벤트 시스템(106)은 수신된 이벤트에 응답하여 데이터를 사용자 디바이스로 전송할 수 있다.
일부 구현들에서, 이벤트 데이터는 사용자를 식별하는 사용자 식별 데이터 (316)(예를 들어, 사용자 ID)를 포함할 수 있다. 사용자 식별 데이터에는 사용자이름/로그인이 포함될 수 있다. 경우에 따라, 사용자 이름에 이메일 주소가 포함될 수 있다. 사용자 식별 데이터는 웹 사이트/애플리케이션과 관련하여 사용자를 식별할 수 있다. 하나의 특정 예에서, 사용자 이름 및 앱 ID 쌍은 앱 이름/ID와 연관된 애플리케이션/웹 사이트와 관련하여 사용자를 고유하게 식별할 수 있다. 일부 구현들에서, 사용자 ID는 다른 식별자(예를 들어, 개발자 제공 식별자)로 대체될 수 있다. 예를 들어, 사용자 ID는 사용자 ID의 해시 또는 내부 앱 제공 업체 데이터베이스 ID인 개발자가 할당한 ID로 대체될 수 있다.
일부 구현들에서, 이벤트 데이터는 이벤트의 소스를 나타내는 소스 데이터를 포함할 수 있다. 본 명세서에 서술된 바와 같이, 이벤트 데이터는 링크, 웹 페이지 또는 애플리케이션 상태와 상호 작용하는 사용자와 같은 사용자 액션에 응답하여 생성될 수 있다. 예를 들어, 사용자가 웹 페이지 또는 애플리케이션 상태를 볼 때 또는 사용자가 웹 페이지 또는 애플리케이션 상태에 포함된 시스템 링크들 또는 기타 GUI 요소와 상호 작용할 때 이벤트 데이터가 생성될 수 있다. 소스 데이터(예를 들어, 이벤트 별 기준)는 네트워크 위치 및/또는 이벤트 데이터 생성과 관련된 상황들(예를 들어, 링크를 보거나 선택한 위치)을 서술할 수 있다.
사용자 디바이스에 의해 생성된 이벤트 데이터는 애플리케이션 이벤트 데이터("앱 이벤트 데이터") 또는 웹 이벤트 데이터로 특성화될 수 있다. 이벤트들의 특성화는 이벤트 데이터가 웹 브라우저 또는 다른 애플리케이션들과의 사용자 상호 작용들을 통해 생성되는지 여부에 따라 달라질 수 있다. 웹 이벤트들은 일반적으로 웹 브라우저(130)로부터 발생할 수 있고 웹 ID(예를 들어, 쿠키 ID)와 연관될 수 있다. 예를 들어, 웹 이벤트들은 파트너의 웹 사이트(122)의 웹 모듈(124)에 의해 생성된 이벤트들을 지칭할 수 있다. 앱 이벤트들은 일반적으로 웹 브라우저가 아닌 다른 애플리케이션에서 발생할 수 있으며, 디바이스 ID(예를 들어, 광고 ID와 같은 웹 ID가 아닌 디바이스 ID)와 연관될 수 있다. 예를 들어, 앱 이벤트들은 파트너의 애플리케이션(112)의 앱 모듈(114)에 의해 생성된 이벤트들을 지칭할 수 있다. 여기에 서술된 다른 유형의 이벤트는 링크 데이터를 생성하는 링크 선택 이벤트이다. 링크 선택 이벤트는 파트너의 웹 사이트/애플리케이션 또는 다른 웹 사이트/애플리케이션에서 시스템 링크를 선택하여 생성될 수 있다. 링크 선택 이벤트는 사용자 디바이스가 링크 선택을 처리하는 방법에 따라 앱 이벤트 또는 웹 이벤트로 특성화될 수 있다. 이벤트 데이터는 경우에 따라 HTTP 요청들 또는 HTTP 보안(HTTPS) 요청들로 수신될 수 있다. 이벤트 시스템(106)은, 시스템 링크의 선택을 처리하도록 사용자 장치를 구성하는 방법 등과 같은, 여기에 서술된 다양한 인자들에 기초하여 (예를 들어, 응답을 전송함으로써) 링크 이벤트들을 처리할 수 있다.
웹 이벤트들은 앱 이벤트들과 상이한 유형들의 디바이스 ID들과 연관될 수 있다. 예를 들어, 웹 이벤트 데이터는 웹 ID(예를 들어, 쿠키 ID)를 포함할 수 있는 반면, 앱 이벤트 데이터는 상이한 유형의 디바이스 ID(예를 들어, 광고 ID)를 포함할 수 있다.
사용자 디바이스는 다양한 상이한 사용자 액션들에 응답하여(예를 들어, 앱 모듈(114)에 따라) 앱 이벤트 데이터를 전송할 수 있다. 예를 들어, 사용자 디바이스는, 1) 애플리케이션이 열리는 것("앱 열기 이벤트"라고 함), 2) 사용자가 애플리케이션을 종료("앱 닫기 이벤트"라고 함), 3) 사용자가 장바구니에 아이템을 추가하거나 사용자가 아이템을 구매(일반적으로 "애플리케이션 상거래 이벤트들"이라고 함), 4) 사용자가 설치후 애플리케이션을 여는 경우("앱 설치 이벤트"라고 함), 5) 사용자가 재설치 후 애플리케이션을 여는 경우("앱 재설치 이벤트"라고 함), 6) 시스템 URI가 이벤트 시스템(106)에 의해 생성되고 사용자 디바이스로 다시 전송되도록 사용자가 요청하는 경우(예를 들어, 콘텐츠를 공유하기 위해), 7) 사용자가 애플리케이션의 상태(예를 들어, 앱 페이지)에 액세스하는 경우, 8) 이벤트 시스템 (106)의 운영자가 보고하도록 앱 모듈(112)이 구성된 액션을 사용자가 수행하는 경우, 및 9) 앱 모듈(112)이 이벤트 시스템(106)에 보고하도록 파트너에 의해 구성된 임의의 다른 액션(즉, 파트너에 의해 정의된 맞춤 이벤트)을 사용자가 수행하는 경우에 대한 응답으로 앱 이벤트 데이터를 전송할 수 있다. 예를 들어, 파트너는 특정 애플리케이션 상태(예를 들어, 애플리케이션 페이지) 또는 특정 콘텐츠가 보거나 공유됨을 나타내는 사용자 맞춤 이벤트를 정의할 수 있다.
이벤트 시스템(106)에 의해 수신된 앱 이벤트 데이터는, 1) 디바이스 ID(예를 들어, 광고 ID, 하드웨어 ID 등), 2) 앱 이벤트 데이터가 연관된 애플리케이션을 나타내는 애플리케이션 이름/ID 등), 3) 앱 사용자를 식별하는 사용자 식별 데이터(예를 들어, 사용자 이름), 4) 이벤트 데이터의 소스를 나타내는 소스 데이터, 5) IP 주소, OS 식별 데이터(예를 들어, OS 이름, OS 버전), 디바이스 유형 및 스크린 해상도등과 같은 디바이스 메타 데이터(예를 들어, 사용자 에이전트 데이터)를 포함할 수 있다. 앱 이벤트 데이터에는 이벤트 유형을 나타내는 이벤트 식별자도 포함될 수 있다. 예를 들어, 이벤트 식별자는, 앱 이벤트가 앱 열기 이벤트, 앱 용량 이벤트, 앱 설치 이벤트, 앱 재설치 이벤트, 상거래 이벤트 또는 앱 모듈에서 개발자가 정의할 수있는 사용자 지정 이벤트인지 여부를 나타낼 수 있다. 앱 이벤트가 사용자가 선택한 링크(예를 들어, 시스템 링크)로 인해 발생한 앱 열기 이벤트인 경우, 추가 앱 이벤트 데이터는 사용자 디바이스가 애플리케이션을 열도록 한 URI(예를 들어, 시스템 URI)와 같은 사용자 디바이스에 의해 전송될 수 있다. 일부 경우들에서, 앱 이벤트 데이터는 URI와 연관된 웹 ID(예를 들어, 시스템 URI에 추가됨)를 포함할 수도 있다. 일부 경우들에서, 앱 이벤트 데이터는 엔티티 정보(예를 들어, 애플리케이션의 비즈니스 ID 번호)와 같은 앱 특정 메타 데이터를 포함 할 수도 있다.
이벤트 시스템(106)은 이벤트 데이터 수신에 응답하여 다양한 상이한 동작들을 수행할 수 있다. 예를 들어, 이벤트 시스템은, 1) 수신된 앱 이벤트 데이터의 타임 스탬프(또는 수신된 타임 스탬프 사용)할 수 있고, 2) 앱 이벤트의 소스를 결정할 수 있고, 3) 이벤트 데이터를 기록(예를 들어, 사용자 참여 데이터베이스 업데이트)할 수 있고, 4) 앱 이벤트가 이전 이벤트로 귀속될 일 수 있는지 결정할 수 있고, 그리고/또는 5) 앱 열기 이벤트가 설치 이벤트인지 재설치 이벤트인지 확인할 수 있다. 이벤트 시스템(106)이 시스템 URI를 수신하는 경우, 이벤트 시스템은 시스템 URI와 연관된 데이터를 획득할 수 있다. 이벤트 시스템(106)이 링크 생성 요청을 수신하는 경우, 이벤트 시스템(106)은 링크 데이터 객체를 생성하고 시스템 URI를 다시 사용자 디바이스로 전송할 수 있다.
사용자 디바이스는 다양한 상이한 사용자 액션들에 응답하여(예를 들어, 웹 모듈(124)에 따라) 웹 이벤트 데이터를 전송할 수 있다. 예를 들어, 사용자 디바이스는 웹 페이지에 접속한 사용자에 대한 응답으로 웹 이벤트 데이터("웹 페이지 뷰 이벤트"라 함)를 전송할 수 있다. 웹 페이지에 액세스하는 것은 웹 세션의 시작 (예를 들어, 사이트 상의 제1 웹 페이지 액세스) 또는 후속 페이지 뷰일 수 있다. 사용자 디바이스는, 또한, 사용자가 아이템을 쇼핑 카트에 추가하거나 사용자가 아이템을 구매하는 것(일반적으로 "웹 상거래 이벤트"라고 함), 이벤트 시스템에 의해 시스템 URI가 생성되어 사용자 디바이스로 다시 전송되도록 사용자가 요청하는 것(예를 들어, 콘텐츠 공유를 위해), 웹 모듈(124)이 보고하도록 이벤트 시스템의 운영자에 의해 구성된 액션을 사용자가 수행하는 것, 및 웹 모듈(124)이 이벤트 시스템(106)에 보고하도록 파트너에 의해 구성된 임의의 다른 액션(즉, 파트너에 의해 정의된 맞춤 웹 이벤트)을 사용자가 수행하는 것에 응답하여 웹 이벤트 데이터를 전송할 수 있다. 예를 들어, 파트너는 특정 웹 페이지 또는 특정 콘텐츠를 보거나 공유함을 나타내는 사용자 맞춤 이벤트를 정의할 수 있다.
이벤트 시스템에서 수신한 웹 이벤트 데이터는, 1) 웹 ID, 2) 이벤트 시스템(106)의 앱 이름/ID 또는 앱 ID에 대응할 수있는 웹 사이트 이름/ID, 및 3) IP 주소, OS 식별 데이터(예를 들어, OS 이름, OS 버전), 디바이스 유형 및 스크린 해상도와 같은 디바이스/브라우저 메타 데이터(예를 들어, 사용자 에이전트 데이터)를 포함할 수 있지만, 이에 국한되지 않는다. 디바이스/브라우저 메타 데이터는 웹 브라우저가 전송한 사용자 에이전트에서 추출될 수 있다. 웹 이벤트 데이터는 또한 웹 사이트의 사용자를 식별하는 사용자 식별 데이터(예를 들어, 사용자 이름), 웹 이벤트 데이터의 소스를 나타내는 소스 데이터, 및 이벤트 유형을 나타내는 이벤트 식별자를 포함할 수 있다. 예를 들어, 이벤트 식별자는 웹 이벤트가 웹페이지 뷰 이벤트, 상거래 이벤트, 링크 생성 이벤트, 공유 이벤트 또는 웹 모듈(124)에서 개발자가 정의한 맞춤 이벤트인지 여부를 나타낼 수 있다. 웹 이벤트 데이터에는 현재 페이지의 URI/URL과 참조 URI/URL도 포함될 수 있다.
이벤트 시스템(106)은 웹 이벤트 데이터 수신에 응답하여 다양한 상이한 동작들을 수행할 수 있다. 예를 들어, 이벤트 시스템 (106)은, 1) 수신된 웹 이벤트 데이터를 타임스탬프(또는 수신된 타임스탬프를 사용)할 수 있고, 2) 웹 이벤트의 소스를 결정할 수 있고, 3) 웹 이벤트 데이터 기록할 수 있고, 그리고/또는 4) 웹 이벤트가 이전 이벤트에 귀속될 수 있는지 결정할 수 있다. 이벤트 시스템(106)이 링크 생성 요청을 수신하는 경우, 이벤트 시스템(106)은 시스템 링크 데이터 객체를 생성하고 시스템 URI를 다시 사용자 디바이스로 전송할 수 있다. 이벤트 시스템(106)은 웹 브라우저가 웹 ID를 포함하지 않는 경우 사용자 디바이스에 웹 ID를 설정할 수도 있다.
시스템 링크의 사용자 선택은, 사용자 디바이스가 구성되는 방식에 따라 다양한 방식들로 사용자 디바이스에 의해 처리될 수 있다. 일부 경우들에서, 시스템 링크의 선택은 애플리케이션이 열리도록 할 수 있으며, 이 경우 시스템 링크(예를 들어, 시스템 URI)의 선택은 앱 열기 이벤트에서 이벤트 시스템(106)으로 전달된다. 다른 경우들에서, 시스템 링크의 선택은 시스템 링크와 연관된 시스템 URI를 사용하여 이벤트 시스템(106)에 액세스하는 웹 브라우저에 의해 처리된다. 웹 브라우저가 시스템 링크의 사용자 선택에 응답하여 이벤트 시스템(106)에 액세스하는 구현들에서, 링크 이벤트 데이터는 웹 ID 및 디바이스/브라우저 메타 데이터를 포함할 수 있다. 디바이스/브라우저 메타 데이터(예를 들어, 사용자 에이전트 데이터)에는 IP 주소, OS 식별 데이터(예를 들어, OS 이름, OS 버전), 디바이스 유형 및 스크린 해상도가 포함될 수 있다.
이벤트 시스템(106)은, 1) 수신된 링크 이벤트 데이터에 타임스탬핑하는 것(또는 수신된 타임스탬프 사용하는 것), 2) 링크 이벤트 데이터의 소스를 결정하는 것, 3) 링크 이벤트 데이터 로그하는 것, 4) 수신된 시스템 URI에 대한 데이터 검색하는 것, 5) 검색된 데이터를 기반으로 사용자 디바이스를 위치(예를 들어, 애플리케이션 다운로드를 위한 디지털 배포 플랫폼, 기본 사이트 또는 기타 사이트)로 라우팅하는 것, 및 6) 웹 브라우저에 웹 ID를 포함하지 않는 경우 웹 ID를 설정하는 것을 포함하는(하지만 이에 국한되지는 않음) 링크 이벤트 데이터를 수신하는 것에 응답하여 다양한 상이한 동작들을 수행할 수 있다.
파트너 또는 사용자 디바이스(예를 들어, 앱/웹 모듈(114, 124))는 이벤트 시스템(106)으로부터 시스템 URI들을 요청할 수 있다. 요청에서 파트너(또는 사용자 디바이스)는 시스템 URI와 연관된 동작들 및 데이터를 지정할 수 있다. 시스템 URI에는 도메인 이름(예를 들어, example.com 또는 www.example.com)과 경로(예를 들어, example.com/path_segment1/path_segment2/)가 포함될 수 있다. 도메인 이름과 경로는 네트워크를 통해 시스템 URI와 연관된 데이터 개체에 액세스하기 위해 사용될 수 있다. 일부 경우들에서, 시스템 URI에 대한 체계는 http를 사용하는 웹 URL(Uniform Resource Locator)이거나 ftp와 같은 다른 체계일 수 있다.
사용자 데이터 객체들(302)은 또한 앱/웹 사이트에 대한 이벤트들의 리스트로부터 유도될 수 있는 데이터를 포함할 수 있다. 추가 데이터는, a) 앱/웹 사이트의 가장 최근 사용을 나타내는 타임스탬프, b) 모바일 디바이스에서 앱/웹 사이트에 마지막으로 액세스한 시간을 나타내는 타임스탬프, c) 데스크톱 디바이스에서 앱/웹 사이트에 마지막으로 액세스한 시간을 나타내는 타임스탬프, d) 일정기간 동안 앱/웹 사이트가 사용된 빈도와시기를 나타내는 활동 데이터(예를 들어, 앱/웹 사이트가 사전에 정해진 일수 동안 사용된 날짜), e) 모바일 디바이스에서 앱/웹 사이트가 사용된 빈도를 나타내는 활동 데이터, f) 데스크톱 디바이스에서 앱/웹 사이트가 사용된 빈도를 나타내는 활동 데이터, 및 g) 사용자가 앱/웹 사이트를 처음 사용한 시간을 나타내는 타임 스탬프(예를 들어, 이벤트 리스트에서 가장 빠른 이벤트)를 포함할 수 있지만, 이에 국한되지 않는다.
이벤트 시스템(106)(예를 들어, 이벤트 처리 모듈(300))은 앱 이벤트 데이터, 웹 이벤트 데이터 및 시스템 링크 데이터에 기초하여 집계 이벤트 데이터를 생성할 수 있다. 집계 앱 이벤트 데이터에는 시간 경과에 따른 애플리케이션 사용자들의 수를 나타내는 집계 앱 사용 데이터가 포함될 수 있다. 집계 앱 사용 데이터의 예에는 애플리케이션의 일일 활성 사용자들(DAU) 수와 애플리케이션의 월간 활성 사용자들(MAU) 수가 포함될 수 있지만 이에 국한되지는 않는다. 집계 앱 사용 데이터는 또한 복수의 사용자들에 대한 시간 경과에 따른 앱 이벤트들의 수를 포함할 수 있다. 예를 들어, 집계 앱 사용 데이터에는 시간 경과에 따른 애플리케이션 열기들의 수, 시간에 따라 액세스한 다수의 상이한 애플리케이션 상태들의 수, 시간 경과에 따른 구매 이벤트들의 수가 포함될 수 있다. 일부 구현들에서, 집계 앱 이벤트 데이터는, 시스템 링크들이 애플리케이션들에 대해 생성되고, 애플리케이션들에 액세스하는데 사용되거나, 그리고/또는 애플리케이션 상태 내에서 선택된 횟수를 나타낼 수 있다.
집계 앱 이벤트 데이터는 도시, 주 및/또는 국가와 같은 상이한 지리적 위치들에 대해 계산될 수 있다. 예를 들어, 집계 앱 사용 데이터는 상이한 국가들의 DAU를 나타낼 수 있다. 집계 앱 이벤트 데이터는 상이한 언어들, 상이한 디바이스 유형들(예를 들어, 스마트폰 유형, 노트북, 데스크톱), 상이한 운영 체제들, 상이한 시간대들 및 요일에 대해 계산될 수도 있다. 집계 앱 이벤트 데이터는 여기에 서술된 파라미터들의 임의의 조합에 따라 계산될 수 있다. 예를 들어, 집계 앱 이벤트 데이터에는 특정 국가의 특정 디바이스 세트에 대한 DAU 수가 포함될 수 있다.
일부 집계 이벤트 데이터는 엔티티들과 연관될 수 있다. 이러한 집계 이벤트 데이터는 "집계 엔티티 이벤트 데이터"라고 할 수 있다. 집계 엔티티 이벤트 데이터는 각 엔티티 레코드들에 저장될 수 있다. 예시적인 집계 엔티티 이벤트 데이터에는 일별 이벤트 수 또는 월간 이벤트 수와 같이 일정 기간 동안 엔티티에 대한 다수의 이벤트들이 포함될 수 있다. 일부 구현들에서, 집계 이벤트들은 이벤트 유형에 따라 분류될 수 있다. 예를 들어, 집계 데이터는 일정 기간 동안 애플리케이션 상태에 액세스한 횟수를 나타낼 수 있다. 다른 예로서, 집계 데이터는 시간이 지남에 따라 엔티티와 연관된 구매 횟수를 나타낼 수 있다. 집계 엔티티 이벤트 데이터는 상이한 지리적 위치들(예를 들어, 도시, 주, 국가), 언어들, 디바이스 유형들, 운영 체제들, 시간 및 요일에 대해 계산할 수 있다. 또한, 집계 엔티티 이벤트 데이터는 파라미터들의 조합에 따라 계산될 수 있다. 집계 엔티티 이벤트 데이터는 검색 중에 엔티티 레코드들의 점수를 매기거나 필터링하는 데 사용할 수 있다.
일부 구현들에서, 이벤트 시스템(106)(예를 들어, 이벤트 처리 모듈(300))은 도메인/페이지가 액세스된 횟수들과 같은 일정 기간 동안의 웹 이벤트들의 수를 나타내는 집계 웹 이벤트 데이터를 생성할 수 있다. 집계 웹 이벤트 데이터는 상이한 지리적 위치들, 국가들, 언어들, 디바이스 유형들, 운영 체제들, 시간 및 요일에 대해 계산할 수 있다. 집계 웹 이벤트 데이터는 여기에 서술된 파라미터들의 임의의 조합에 따라 계산될 수 있다. 일부 구현들에서, 집계 웹 이벤트 데이터는 시스템 링크들이 생성 및/또는 액세스된 횟수를 나타낼 수 있다. 일부 구현들에서, 집계 이벤트 데이터는 정규화될 수 있다.
도 4는 예시적인 검색 시스템(104)을 도시한다. 검색 시스템(104)은 데이터 획득 모듈(400) 및 이벤트 데이터 및 엔티티 데이터를 획득하고 처리하는 데이터 처리 모듈(402)을 포함한다. 개별 사용자에 대한 이벤트 데이터는 사용자 데이터 데이터 저장소(404)에 사용자 데이터 객체들로서 저장된다. 엔티티 데이터는 엔티티 데이터 저장소(408)에 저장된 엔티티 레코드들(406)에 포함된다. 엔티티 레코드(406)는 또한 엔티티들에 대한 집계 이벤트 데이터를 포함할 수 있다. 검색 시스템(104)은 검색 중에 사용되는 추가 데이터와 함께 획득/처리된 데이터를 저장하는 일반 데이터 저장소(410)를 포함할 수 있다.
데이터 획득 모듈(400)은 데이터 소스들로부터 엔티티 데이터를 획득할 수 있다. 엔티티 데이터를 제공할 수 있는 예시적인 데이터 소스들에는 애플리케이션들, 웹 사이트들 및 기타 데이터 공급자들이 포함된다. 데이터 획득 모듈(400)은 웹 사이트들(예를 들어, 사이트맵들 및/또는 웹 사이트 콘텐츠), 네이티브 애플리케이션들 및/또는 API 크롤링으로부터 엔티티 데이터를 획득하는 크롤링/스크래핑 모듈을 포함할 수 있다. 검색 시스템(104)은 또한 하나 이상의 데이터 제공자로부터 구조화된 엔티티 데이터를 수신할 수 있다.
검색 시스템(104)은 검색 질의들을 포함하는 검색 요청들을 수신하는 질의 처리 모듈(412)을 포함한다. 검색 질의들은 하나 이상의 단어, 숫자 및/또는 구두점을 포함할 수 있다. 질의 처리 모듈(412)은 수신된 검색 질의들을 처리할 수 있다. 예를 들어, 질의 처리 모듈(412)은 (예를 들어, 차트 파싱을 사용하여) 검색 질의를 파싱하고, 검색 질의에 대한 문법 일치를 수행하고, 나중에 검색에서 사용하기 위해 검색 질의에 추가 데이터를 추가할 수 있다. 질의 용어들에 추가될 수 있는 예시적인 추가 데이터는, 용어 유형들(예를 들어, 용어 카테고리), 문자열에 대한 추가 세부 정보들(예를 들어, 지명에 대한 지리 좌표들 및 인구), 및 검색 용어들과 관련된 추가 문자열들(예를 들어, 상이한 스펠링들, 동의어들, 구문들, 구두점들 및 복수/단수 버전들)을 포함할 수 있다. 일부 구현들에서, 질의 처리 모듈 (412)은 문자열/유형 데이터 저장소(414)에 포함된 데이터에 기초하여 검색 질의를 처리할 수 있다. 예를 들어, 문자열/유형 데이터 저장소(414)는 문자열들과 용어 유형들 또는 다른 데이터 간의 연관을 포함할 수 있다. 질의 처리 모듈(412)의 출력은 하나 이상의 용어 유형들 또는 다른 추가 데이터에 각각 맵핑되는 검색 질의 용어들의 세트를 포함할 수 있다.
검색 시스템(104)은 처리된 검색 요청에 기초하여 엔티티 레코드들을 식별하는 검색 모듈(416)을 포함한다. 예를 들어, 검색 모듈(416)은 검색 질의의 용어들(예를 들어, 처리된 검색 질의)과 엔티티 이름 및/또는 엔티티를 서술하는 용어들과 같은 엔티티 레코드들의 용어들 간의 일치에 기반하여 엔티티 레코드들을 식별할 수 있다. 식별된 엔티티 레코드들은 일련의 예비 결과들을 형성할 수 있다.
검색 모듈(416)은 예비 결과들에서 식별된 엔티티 레코드들을 스코어링할 수 있다. 예비 결과들과 관련된 점수들을 "예비 점수들"이라고 할 수 있다. 일부 예들에서, 검색 모듈(416)은 검색 질의의 용어들이 엔티티 레코드의 용어들과 얼마나 잘 일치하는지에 기초하여 예비 점수들을 생성할 수 있다. 검색 모듈(416)은 또한 예비 결과들의 추가 스코어링을 수행할 수 있다. 예를 들어, 검색 모듈(416)은 예비 결과들을 추가로 스코어링하는 추가 스코어링 기능들 및/또는 기계 학습 모델들을 구현할 수 있다.
결과 생성 모듈(418)은 스코어링/필터링된 예비 결과들을 수신한다. 일부 구현들에서, 결과 생성 모듈(418)은 예비 결과들을 개인화할 수 있다. 예를 들어, 결과 생성 모듈(418)은, 사용자를 위한 애플리케이션들의 설치 상태 및/또는 사용자를 위한 앱 사용 빈도와 같은 사용자에 대한 사용자 데이터 객체에 포함된 데이터를 기반으로 예비 결과들을 다시 스코어링/필터링할 수 있다.
결과 생성 모듈(418)은 애플리케이션 링크들, 디스플레이 데이터 및 결과 점수들(예를 들어, 다시 스코어링된 예비 결과들)을 포함하는 검색 결과들을 생성할 수 있다. 검색 결과들은 결과 점수들에 따라 순위가 지정되고 그룹화될 수 있다. 일부 구현들에서, 링크 데이터 저장소(420)는 엔티티 ID에 의해 인덱싱된 디스플레이 데이터 및 애플리케이션 링크들을 포함할 수 있다. 일부 구현들에서, 결과 생성 모듈(418)은 링크 데이터 저장소의 애플리케이션 링크 템플릿에 기초하여 애플리케이션 링크들을 생성할 수 있다. 예를 들어, 결과 생성 모듈(418)은 애플리케이션 링크 템플릿에 엔티티 ID, 애플리케이션 ID, 액션 ID 중 적어도 하나를 삽입하여 애플리케이션 링크를 생성할 수 있다.
본 명세서에 기재된 예비 점수들 및 결과 점수들은 검색 중에 생성되는 다양한 결과들(예를 들어, 예비 결과들 및 검색 결과들)과 함께 연관된 수치 값들을 의미할 수 있다. 일반적으로, 예비 결과들 및 검색 결과들에 대한 점수들은 검색 시스템(104)에 의해 결정된 바와 같이 검색 요청에 대한 결과의 관련성을 나타낼 수 있다. 일부 구현들에서, 점수들은 0.00에서 1.00까지의 10진수 값일 수 있으며, 1.00에 가까운 점수는 결과가 더 관련성이 있음을 나타낼 수 있다.
여기에 서술된 데이터 구조들(예를 들어, 엔티티 레코드들 및 사용자 데이터 객체들) 및 데이터 저장소들은 단지 예시적인 데이터 구조들 및 데이터 저장소들 일뿐이다. 이와 같이, 검색 시스템은 추가/대체 데이터 구조들 및 데이터 저장소들을 사용하여 본 발명의 기술들을 구현할 수 있다.
검색 시스템(104)(예를 들어, 데이터 획득 및 처리 모듈들(400, 402))은 앱 특정 엔티티 레코드들 및 병합된 엔티티 레코드들을 생성할 수 있다. 엔티티 데이터 저장소(408)는 복수의 앱 특정 엔티티 레코드들 및/또는 병합된 엔티티 레코드들을 저장할 수 있다. 도 5a는 예시적인 앱-특정 엔티티 레코드(500)를 도시한다. 도 5b는 예시적인 병합된 엔티티 레코드(502)를 도시한다. 앱-특정 엔티티 레코드(500)는 특정 애플리케이션 내의 엔티티에 대한 애플리케이션 링크(예를 들어, URL)와 함께 특정 애플리케이션의 엔티티와 관련된 데이터를 포함한다. 예를 들어, 음악 스트리밍 애플리케이션의 노래 엔티티에 대한 앱 특정 엔티티 레코드는, 음악 스트리밍 애플리케이션에서 노래를 스트리밍하는 애플리케이션 링크와 함께, 노래와 관련된 데이터(예를 들어, 아티스트, 길이, 출시일, 장르)를 포함할 수 있다. 도 5a 내지 도 5b의 엔티티 레코드들(500, 502)은 예시적인 데이터 필드들을 포함하는 예시적인 엔티티 레코드들일 뿐이다. 다른 엔티티 레코드들은 추가/대체 데이터 필드들을 포함할 수 있다. 엔티티 레코드들(500, 502)에 예시된 데이터는 여기에 서술된 하나 이상의 데이터 저장소에 임의의 적절한 데이터 구조로서 저장될 수 있다.
앱 특정 엔티티 레코드(500)는 엔티티를 식별하는 (예를 들어, 엔티티를 고유하게 식별하는) 앱 특정 엔티티 이름 및/또는 식별자(ID)(504)를 포함할 수 있다. 예를 들어, 엔티티 레코드는 복수의 가능한 대체 이름들(예를 들어, 이름 변형들 및/또는 대체 철자들)과 함께 공식 이름을 포함할 수 있다. 엔티티 레코드 (500) 내의 엔티티 이름의 변화들은 검색 동안 검색 질의의 용어와 엔티티 레코드 간의 보다 강력한 일치를 허용할 수 있다.
앱 특정 엔티티 레코드(500)는 엔티티와 연관된 버티컬(506)(예를 들어, 카테고리)을 포함할 수 있다. 예시적인 카테고리들은 관심 장소(예를 들어, 레스토랑, 비즈니스, 명소, 박물관), 음악(예를 들어, 뮤직 비디오, 노래 및 아티스트 페이지), 비즈니스 유형들(예를 들어, 호텔), 소셜(소셜 미디어 콘텐츠), 그리고 뉴스를 포함할 수 있지만, 이에 국한되지는 않는다. 일부 예들에서, 카테고리들은 하위 버티컬들(즉, 하위 카테고리들)을 가질 수 있다. 일부 경우들에서, 검색 시스템 운영자가 엔티티들에 적용되는 카테고리들을 정의할 수 있다. 각 애플리케이션은 하나 이상의 카테고리로 분류될 수 있다. 예를 들어 옐프® 애플리케이션에는 호텔 및 레스토랑에 대한 카테고리가 있을 수 있다. 이 예에서, 각 엔티티는 카테고리와 관련될 수 있다(예를 들어, 엔티티 당 하나의 카테고리). 예를 들어, 옐프® 애플리케이션의 호텔(예를 들어, 호텔에 대한 링크)은 호텔 카테고리와 관련될 수 있다. 마찬가지로, 옐프® 애플리케이션의 레스토랑(예를 들어, 레스토랑에 대한 링크)은 레스토랑 카테고리로 관련될 수 있다.
여기에 서술된 앱 특정 엔티티 레코드는 단일 버티컬을 포함할 수 있지만, 일부 구현들에서, 앱 특정 엔티티 레코드는 복수의 버티컬들 및/또는 하나 이상의 하위 버티컬들(예를 들어, 하위 카테고리들)을 포함할 수 있다. 일부 구현들에서, 검색 시스템(104)은 버티컬로 검색 결과들을 그룹화/순위화할 수 있다(예를 들어, 도 8c 참조).
앱 특정 엔티티 레코드(500)는 엔티티에 대한 우편 주소 및/또는 엔티티의 지리적 위치(예를 들어, 위도/경도)와 같은 엔티티 정보(508)를 포함할 수 있다. 앱 특정 엔티티 레코드는 엔티티에 대한 대체 이름들 및 애플리케이션 상태 및/또는 엔티티에 대한 웹 페이지에서 획득한 데이터와 같은 추가 엔티티 설명을 포함할 수도 있다. 애플리케이션 상태 및/또는 웹 페이지의 예시 데이터는 엔티티, 사용자 리뷰들, 평가 번호들 및 업무 시간들에 대한 간략한 설명을 포함할 수 있지만 이에 국한되지는 않는다. 일부 구현들에서, 엔티티 정보는 애플리케이션 상태들 및/또는 엔티티와 관련된 웹 페이지들에서 획득되었을 수 있다.
상이한 엔티티 레코드들은 상이한 엔티티 정보 필드들(예를 들어, 버티컬 종속 데이터 필드)가 있을 수 있다. 예를 들어, 스트리밍 애플리케이션의 영화 엔티티는 영화 이름, 배우 이름, 영화 장르 및 개봉 날짜를 포함할 수 있다. 또 다른 예로서, 레스토랑 리뷰 애플리케이션의 레스토랑 엔티티는 요리 이름들, 레스토랑 리뷰들 및 등급들을 포함할 수 있다.
앱 특정 엔티티 레코드(500)는 여기에 서술된 집계 엔티티 이벤트 데이터 (510)를 포함할 수 있다. 예를 들어, 앱 특정 엔티티 레코드(500)는 일정 기간(예를 들어, 매일/월간)에 걸쳐 엔티티에 대한 다수의 이벤트들을 나타낼 수 있다. 엔티티 레코드는 이벤트 유형에 따라 이벤트를 분류할 수도 있다. 집계 이벤트 데이터(510)는 상이한 지리적 위치들(예를 들어, 도시, 주, 국가), 언어들, 디바이스 유형들, 운영 체제들, 시간, 요일 및 기타 매개 변수들의 조합에 대한 집계 값들을 포함할 수 있다.
앱 특정 엔티티 레코드(500)는 엔티티에 액세스하기 위한 하나 이상의 링크(예를 들어, URL)를 포함할 수 있다. 예를 들어, 앱 특정 엔티티 레코드(500)는 애플리케이션의 엔티티에 액세스하기 위한 애플리케이션 링크(512)를 포함할 수 있다. 추가로, 일부 구현들에서, 앱 특정 엔티티 레코드(500)는 애플리케이션이 사용자 디바이스에 설치되지 않은 경우 애플리케이션을 다운로드하기 위한 웹 링크(예를 들어, 웹 URL) 및/또는 다운로드 링크를 포함할 수 있다. 애플리케이션 링크 및 기타 링크들은 검색 결과들에 포함될 수 있다.
앱 특정 엔티티 레코드(500)는 디스플레이 데이터(514)를 포함할 수 있다. 디스플레이 데이터(514)는 사용자 디바이스에서 검색 결과를 렌더링하기 위한 텍스트 및/또는 이미지를 포함할 수 있다. 검색 시스템(104)(예를 들어, 결과 생성 모듈(418))은 검색 결과들에 디스플레이 데이터를 포함할 수 있다. 애플리케이션 링크 및 디스플레이 데이터는 사용자 선택 가능한 검색 결과 링크들을 생성하는데 사용될 수 있다. 이와 같이, 애플리케이션 링크 및 디스플레이 데이터는 링크 생성 데이터(516)로 지칭될 수 있다. 링크 생성 데이터(516)가 앱 특정 엔티티 레코드 (500)에 포함된 것으로 예시되어 있지만, 링크 생성 데이터(516)는 도 4의 링크 데이터 저장소(420)와 같이 여기에 예시된 다른 데이터 저장소들에 저장될 수 있다.
앱 특정 엔티티 레코드(500)는 앱 특정 엔티티에 대한 인기도 점수(518)를 포함할 수 있다. 검색 시스템(예를 들어, 데이터 처리 모듈(402))은 여기에서 서술된 바와 같이 앱 특정 엔티티(예를 들어, 도 6a 내지 도 6b 참조)에 대한 인기도 점수를 계산할 수 있다. 일부 구현들에서, 앱 특정 엔티티 레코드는 엔티티에 대한 복수의 인기도 점수들(예를 들어, 다른 국가들, 언어들 등에 대한 인기도 점수들)을 포함할 수 있다.
여기에 서술된 바와 같이, 데이터 획득 모듈(400)은 앱 특정 엔티티 레코드들을 생성하기 위한 엔티티 데이터를 획득할 수 있다. 추가적으로, 데이터 처리 모듈(402)은 엔티티 데이터를 처리하고 엔티티 레코드들을 생성할 수 있다. 일부 구현들에서, 단일 앱 특정 엔티티 레코드에 포함된 엔티티 데이터 및 이벤트 데이터는 복수의 서로 상이한 URL들로부터 획득될 수 있다. 예를 들어, 단일 애플리케이션 상태(예를 들어, 리뷰 애플리케이션의 레스토랑 페이지)는 복수의 URL들을 사용하여 액세스될 수 있다. 다수의 URL들이 단일 앱 특정 엔티티로 연결되는 경우, 데이터 획득 모듈(400) 및 데이터 처리 모듈(402)은 단일 앱 특정 엔티티 레코드를 생성하기 위해 엔티티 데이터 및 이벤트 데이터를 정규화할 수 있다. 정규화는 엔티티 이름/ID를 생성하고 엔티티 데이터 및 이벤트 데이터를 앱 특정 엔티티 레코드에 맵핑하는 것을 포함할 수 있다.
도 5b는 예시적인 병합된 엔티티 레코드(502)를 도시한다. 병합된 엔티티 레코드(502)는 상이한 애플리케이션들에서 동일한 엔티티에 대한 복수의 애플리케이션 링크들(520)을 포함할 수 있다. 애플리케이션 링크들(520) 각각은 상이한 애플리케이션에 대한 엔티티와 연관된 애플리케이션 상태에 액세스할 수 있다. 예를 들어, 여러 애플리케이션들에 동일한 특정 레스토랑 엔티티에 대한 페이지들이 포함될 수 있다. 특정 예에서, 옐프® 애플리케이션과 트립어드바이저® 애플리케이션 (트립어드바이저, 인코포레이티드에서 개발)은 각각 캘리포니아, 욘트빌에 있는 더 프렌치 라운드리 레스토랑에 대한 리뷰 페이지를 가질 수 있다. 또 다른 예로서, 여러 애플리케이션들에 동일한 스트리밍 영화에 대한 페이지들이 포함될 수 있다.
병합된 엔티티 레코드(502)는 또한 각각의 애플리케이션 링크(520)에 대한 디스플레이 데이터(522)를 포함할 수 있다. 애플리케이션 링크들 및 디스플레이 데이터는 링크 생성 데이터(524)로 지칭될 수 있다. 링크 생성 데이터(524)가 병합된 엔티티 레코드(502)에 포함된 것으로 예시되어 있지만, 링크 생성 데이터(524)는 도 4의 링크 데이터 저장소(420)와 같이 여기에 예시된 다른 데이터 저장소에 저장될 수 있다.
검색 시스템(104)(예를 들어, 데이터 처리 모듈(402))은 앱 특정 엔티티 레코드들을 포함하는 획득된 엔티티 데이터를 사용하여 병합된 엔티티 레코드들을 생성할 수 있다. 데이터 처리 모듈(402)은 유사한 데이터 필드들 및 데이터에 기초하여 앱 특정 엔티티 데이터를 병합된 엔티티 레코드로 병합할 수 있다. 예를 들어, 데이터 처리 모듈(402)은 앱 특정 엔티티들의 유사한 지리적 위치들/주소들, 앱 특정 엔티티들의 유사한 이름들 및 기타 유사한 데이터에 기초하여 앱 특정 엔티티 레코드들을 병합할 수 있다. 병합할 데이터를 일치시키려면, 일부 데이터는 정확히 일치해야하는 반면 다른 데이터는 대강의 일치가 허용될 수 있다. 일부 구현들에서, 특정 수의 필드들이 (예를 들어, 정확한 및/또는 대강의) 특정에 필요할 수도 있다. 병합은 효율적인 스케일링을 위해 분산 프로세스(예를 들어, 맵리듀스)로 구현될 수 있다.
병합된 엔티티 레코드(502)는 병합된 엔티티 레코드(502)를 식별하는 병합된 엔티티 이름/ID(526)를 포함할 수 있다. 병합된 엔티티 레코드(502)는 또한 버티컬(527)을 포함할 수 있다. 병합된 엔티티 레코드(502)는 병합된 엔티티 레코드(502)를 생성하는데 사용되는 앱-특정 ID들/이름들(528)을 포함할 수도 있다. 일부 구현들에서, 엔티티 데이터 저장소(408)는 병합된 엔티티 레코드(502) 및 앱 특정 엔티티 레코드들(500)을 포함할 수 있다. 이러한 구현들에서, 앱 특정 ID들/이름들(528)은 병합된 엔티티 레코드들을 생성하는데 사용되는 앱 특정 엔티티 레코드들을 가리킬 수 있다. 일부 구현들에서, 엔티티 데이터 저장소(408)는 앱-특정 엔티티 레코드들로부터 속성의 값들을 직접 나타내는 병합된 엔티티 레코드들을 포함할 수 있다. 일부 구현들에서, 엔티티 데이터 저장소(408)는 심볼 링크들 및/또는 관련 값들을 포함하는 다른 앱 특정 엔티티 레코드들에 대한 참조들을 포함하는 병합된 엔티티 레코드들을 포함할 수 있다.
데이터 처리 모듈(402)은 하나의 병합된 엔티티 레코드에서 다수의 상이한 앱 특정 엔티티들에 대한 데이터를 포함할 수 있다. 병합된 엔티티 레코드(502)는 동일한 엔티티에 대한 앱 특정 엔티티 데이터가 애플리케이션에 따라 달라질 수 있기 때문에 앱 특정 엔티티 레코드보다 더 많은 엔티티 정보(530)를 포함할 수 있다. 예를 들어, 병합된 엔티티 레코드는, 추가 엔티티 이름들(예를 들어, 대체 이름들), 추가 엔티티 설명과 같은 추가 엔티티 데이터, 및 우편 주소, 전화 번호, 상이한 평가 및 상이한 리뷰들과 같은 추가 데이터 필드들을 포함할 수 있다. 병합된 엔티티 레코드에 포함된 추가 데이터는 엔티티에 대한 보다 완전한 이해를 제공할 수 있다. 병합된 데이터(예를 들어, 추가 키워드들)는 검색 중에 엔티티들을 검색하는 향상된 기능을 제공할 수도 있다. 일부 구현들에서, 병합된 엔티티 레코드는 상이한 애플리케이션들에서 수집된 속성에 대한 다중 가능한 값들(예를 들어, 다중 가능한 엔티티 이름들)을 나타내는 데이터를 포함할 수 있다. 일부 구현들에서, 병합된 엔티티 레코드는 다중 앱 특정 엔티티 레코드들 중 하나에서 선택된 특정 속성에 대한 단일 최상의 값만 포함할 수 있다.
특정 예에서, 제1 앱 특정 엔티티 레코드는 샌프란시스코 현대 미술관 용이고 제2 앱 특정 엔티티 레코드는 SOMA(박물관의 약어) 용일 수 있다. 이러한 특정 예에서, 병합된 엔티티 레코드는 SOMA 및 샌프란시스코 현대 미술관 이름들로 포함할 수 있다. 또 다른 예에서, 앱 특정 엔티티 레코드들은 상이한 앱 특정 데이터를 포함할 수 있다. 예를 들어, 영화 리뷰 애플리케이션은 특정 영화에 대한 리뷰들을 포함할 수 있고, 스트리밍 애플리케이션은 특정 영화에 대한 조회수를 포함할 수 있다.
병합된 엔티티 레코드들은 추가 이벤트 데이터(532)와 연관될 수도 있다. 예를 들어, 이벤트 데이터(532)는 애플리케이션 링크들(520)(예를 들어, 앱 특정 엔티티 레코드들)과 연관된 이벤트 데이터의 조합을 포함할 수 있다. 추가 이벤트 데이터는 애플리케이션들에 걸쳐 엔티티 인기도에 대한 보다 완전한 뷰를 제공하는 인기도 점수들(534)의 향상된 계산들을 제공할 수 있다.
병합된 엔티티 레코드들은 추가 엔티티 정보, 추가 이벤트 데이터(예를 들어, 집계 이벤트 데이터), 추가 앱 특정 데이터 및 검색 중에 사용할 수 있는 인기도 점수들을 포함할 수 있다. 일부 구현들에서, 병합된 엔티티 레코드들은 검색 중에 사용될 수도 있는 앱 특정 레코드들의 데이터를 보유할 수 있다. 검색 중 병합된 엔티티 레코드를 식별하면 앱 특정 엔티티 레코드들의 링크들과 유사한 방식으로 점수를 매길 수 있는 하나 이상의 애플리케이션 링크가 표시될 수 있다.
일부 구현들에서, 엔티티 레코드들(500, 502)은 엔티티와 연관된 하나 이상의 액션(예를 들어, 액션 ID들)을 또한 포함할 수 있다. 예시적인 액션들은 배달, 운전 경로들, 정보, 예비 및 예약을 포함할 수 있지만 이에 국한되지는 않는다. 엔티티 레코드들에 나열된 액션들은 검색 질의의 용어들과 일치할 수 있다. 일부 구현들에서, 검색 모듈(416)은 엔티티 레코드들과 액션들 간의 일치들에 기초하여 결과들을 스코어링/필터링할 수 있다.
일부 구현들에서, 엔티티 레코드들(500, 502)은 엔티티와 연관된 하나 이상의 애플리케이션 이름/ID를 또한 포함할 수 있다. 엔티티 레코드에 나열된 애플리케이션 이름/ID는 검색 질의의 용어들과 일치할 수 있다. 일부 구현들에서, 검색 모듈(416)은 엔티티 레코드들과 앱 이름들 간의 일치들에 기초하여 결과들을 스코어링/필터링할 수 있다. 일부 구현에서, 결과 생성 모듈(418)은 애플리케이션 이름/ID 및/또는 액션에 기초하여 애플리케이션 링크들을 생성할 수 있다.
엔티티 레코드들(500, 502)은 또한 엔티티 레코드들(500, 502)을 생성하는데 사용되는 데이터 소스들(예를 들어, URL들)을 나타내는 필드들을 포함할 수 있다. 일부 예들에서, 엔티티 레코드에 대한 엔티티 데이터는 단일 애플리케이션 상태 또는 웹 페이지에서 획득될 수 있다. 다른 예들에서, 엔티티 레코드에 대한 엔티티 데이터는 여러 애플리케이션 상태들 또는 웹 페이지들에서 획득될 수 있다.
검색 시스템(104)(예를 들어, 데이터 처리 모듈(402))은 각 엔티티 레코드에 대한 인기도 점수를 생성할 수 있다. 엔티티 레코드에 대한 인기도 점수는 엔티티의 인기도를 나타낼 수 있다. 앱 특정 엔티티 레코드의 경우, 인기도 점수는 애플리케이션에서 엔티티에 대한 인기도를 나타낼 수 있다. 병합된 엔티티 레코드에서, 인기도 점수는 여러 애플리케이션들에서 엔티티의 인기도를 나타낼 수 있다. 검색 시스템(104)은 검색 동안 엔티티 레코드들에 대한 스코어링/필터링 특징들로서 하나 이상의 인기도 점수를 사용할 수 있다.
검색 시스템(104)은 엔티티와의 참여 정도에 기초하여 엔티티에 대한 인기도 점수를 생성할 수 있다. 예를 들어, 검색 시스템(104)은 다른 엔티티들과의 참여에 대한 엔티티와의 참여에 기초하여 인기도 점수를 결정할 수 있다. 앱 특정 엔티티 레코드에 대한 인기도 점수는 여기에서 "앱 특정 인기도 점수"로 지칭될 수 있다. 병합된 엔티티 레코드에 대한 인기도 점수는 여기서 "병합된 인기도 점수" 또는 "글로벌 인기도 점수"로 지칭될 수 있다.
검색 시스템(104)은 엔티티(예를 들어, 애플리케이션 링크)가 액세스된 횟수를 나타내는 집계 이벤트 데이터와 같은 집계 이벤트 데이터를 사용하여 인기도 점수를 결정할 수 있다. 예를 들어, 검색 시스템(104)은 애플리케이션 링크와 관련된 이벤트들의 수에 기초하여 엔티티 레코드에 대한 인기도 점수를 결정할 수 있다. 일부 구현들에서, 인기도 점수는 0.00 내지 1.00의 10진수 값일 수 있다. 인기도 점수가 높을수록(예를 들어, 1.00에 가까울수록) 인기도 점수가 낮은 엔티티(예를 들어, 0.00에 가까움)보다 엔티티가 더 인기가 있음을 나타낼 수 있다. 일반적으로 액세스 횟수가 더 많은 엔티티들은 인기도 점수가 더 높을 수 있다(예를 들어, 1.00에 가까움). 인기도 점수들은 앱 특정 엔티티들 및 병합된 엔티티들에 대해 다양한 방식들로 계산될 수 있다.
앱-특정 엔티티 레코드에 대해, 검색 시스템(104)은 엔티티와 연관된 이벤트들의 수 및 다른 엔티티들과 연관된 이벤트들의 수에 기초하여 앱-특정 인기도 점수를 생성할 수 있다. 예를 들어, 검색 시스템(104)은 가장 많은 이벤트들을 갖는 엔티티와 연관된 이벤트의 수(예를 들어, 최대 카운트 값)로 앱-특정 엔티티와 관련된 이벤트들의 수를 나눌 수 있다. 이 예에서, 가장 많은 이벤트들과 관련된 엔티티의 인기도 점수는 1.00이다. 또한, 이 예에서 더 적은 이벤트들로 분류된 엔티티들은 0.00에 가까운 인기도 점수를 가질 것이다.
일부 구현들에서, 검색 시스템(104)은 분자 및 분모에 대한 로그 함수를 사용하여 앱 특정 엔티티 레코드에 대한 인기도 점수를 생성할 수 있다. 예를 들어, 앱-특정 인기도 점수는 log(이벤트들+1)/log(최대_이벤트들+1)로 계산될 수 있다. 일부 구현들에서는 함수가 거듭 제곱될 수 있다. 로그 함수 계산은, 참여도가 엔티티의 인기도에 비례하지 않을 때 엔티티들의 인기도를 더 잘 나타낼 수 있다(예를 들어, 참여의 절반이 인기도의 절반을 의미하지 않음). 일부 구현들에서, 검색 시스템(104)은 "인공 최대" 카운트 값(예를 들어, 기능 및/또는 검색 시스템 운영자에 의해 설정됨)을 사용할 수 있다. 예를 들어, 하나 이상의 최대 이벤트 수가 특이치이고 그리고/또는 인기도 점수 계산에서 고려되지 않는 애플리케이션과 관련되는 경우 인공 최대 값이 사용될 수 있다.
일부 구현들에서, 검색 시스템(104)은 인기도 점수 계산에서 엔티티에 대한 상이한 유형들의 이벤트들을 상이하게 취급할 수 있다. 예를 들어, 시스템은 상이한 유형들의 참여에 상이한 가중치들을 적용하는 기금을 사용하여 인기도 점수를 계산할 수 있다. 특정 예에서, 엔티티는 100개의 열기 이벤트들 및 200개의 페이지 뷰 이벤트들을 가질 수 있다. 이 예에서, 인기도를 계산하는데 사용되는 총 참여 수는 열기에 2를 곱하고 페이지 뷰를 더한 값(예를 들어, 2*100 + 200 = 400)일 수 있다. 인기도 점수에 가중치 기능을 사용하면, 인기도 점수는 엔티티에 대한 가중된 함수 값을 엔티티에 대한 가장 큰 가중된 함수 값으로 나눔으로써 계산될 수 있다. 일부 구현들에서, 검색 시스템(104)은 다수 유형들의 이벤트들에 기초하여 인기도 점수를 계산하기 위한 기계 학습 모델을 생성할 수 있다.
일부 구현들에서, 검색 시스템(104)은 이벤트 데이터 이외의 데이터를 사용하여 인기도 점수를 결정할 수 있다. 예를 들어, 검색 시스템(104)은 엔티티에 대해 충분한 양의 이벤트 데이터가 이용 가능하지 않을 때 다른 데이터를 사용하여 인기도 점수를 결정할 수 있다. 다른 데이터는 설치된 애플리케이션에서 엔티티와의 개별 참여 수(예를 들어, 수)와 같이 애플리케이션에서 엔티티와의 참여 정도를 나타낼 수 있다. 검색 시스템(104)은 예를 들어 데이터 제공자들(134), 파트너들 및/또는 애플리케이션/웹 사이트 크롤링으로부터 다른 데이터를 획득할 수 있다. 일부 구현들에서, 다른 데이터는 애플리케이션에 특정한 데이터일 수 있다. 이 경우 다른 데이터는 앱 특정 카운트 데이터라고 할 수 있다. 앱 특정 카운터 데이터의 예들은, 애플리케이션의 도서 엔티티에 대한 여러 리뷰들, 스트리밍 비디오 애플리케이션에서 영화에 대한 여러 뷰들, 음악 재생 애플리케이션에서의 노래에 대한 청취의 수, 및 요리 애플리케이션에서 레시피를 사용한 사용자들의 수를 포함할 수 있지만, 이에 국한되지 않는다.
하나 이상의 다른 데이터 유형들을 수집한 후, 검색 시스템(104)은 스코어링 기능, 로그 스코어링 기능 및/또는 가중치 기능와 관련하여 전술한 것과 유사한 방식으로 인기도 점수를 결정할 수 있다. 예를 들어, 영화의 조회수를 결정한 후, 검색 시스템(104)은 영화에 대한 조회수를 임의의 영화에 대한 최대 조회수로 나눔으로써 영화의 인기도를 계산할 수 있다. 일부 구현들에서, 검색 시스템(104)은 최대 수가 결정되지 않은 경우 다른 데이터에 대한 인공 최대 수를 선택할 수 있다.
일부 구현들에서, 검색 시스템(104)은 하나 이상의 유형들의 이벤트 데이터 및/또는 하나 이상의 유형들의 다른 데이터(예를 들어, 앱 특정 카운트 데이터)에 기초하여 인기도 점수를 결정할 수 있다. 이러한 구현들에서, 검색 시스템(104)은 인기도 점수를 결정하기 위해 가중치 기능 및/또는 기계 학습 모델을 사용할 수 있다. 예를 들어, 기계 학습 모델은 이벤트 유형들의 값 및 기타 데이터 개수들과 같은 여러 특징들을 수신하고 인기도 점수를 출력할 수 있다. 기계 학습 모델은 타겟 기능(예를 들어, 훈련 데이터에 점수들을 할당하여 생성된 기능)을 사용하여 생성될 수 있다.
검색 시스템(104)은 일, 주 또는 월과 같은 특정 시간 윈도우에 대한 데이터를 사용하여 인기도 점수들을 계산할 수 있다. 이벤트 데이터와 관련하여, 검색 시스템(104)은 이벤트가 발생한 시간들에 기초하여(예를 들어, 타임스탬프들에 기초하여) 이벤트 데이터를 선택할 수 있다. 검색 시스템(104)은 다른 데이터가 수집되는 방법에 따라 다양한 방식들로 다른 데이터 수들에 사용할 값들을 식별할 수 있다. 일부 구현들에서, 다른 데이터 수들(예를 들어, 비디오 조회수들)은 모든 시간에 대한 누계를 나타낼 수 있다. 이러한 구현들에서, 검색 시스템(104)은 시간에 따라(예를 들어, 매일) 다른 데이터의 값들을 획득하고, 지정된 시간 윈도우에 걸쳐 적절한 값들을 결정하기 위해 감산을 사용할 수 있다. 일부 경우들에서, 일일/월간 총 동영상 조회수들과 같은 적절한 기간동안 제공되는 경우 다른 데이터가 직접 사용될 수 있다.
일부 구현들에서, 앱 특정 엔티티 레코드는 단일 인기도 점수를 포함할 수 있다. 일부 구현들에서, 앱 특정 엔티티 레코드는 다양한 유형의 인기도 점수들을 포함할 수 있다. 예를 들어, 앱-특정 엔티티 레코드에는 서로 상이한 지리적 위치들/국가들, 언어들 및 장치 유형들에 대한 인기도 점수들이 포함될 수 있다. 일부 구현들에서, 검색 시스템(104)은 엔티티 버티컬에 의해 앱-특정 인기도 점수들을 생성할 수 있다. 상이한 인기도 점수들은 상이한 데이터 세트들(예를 들어, 국가, 언어, 장치 유형 등에 의한 이벤트 데이터)을 사용하여 여기에 서술된 바와 같이 계산될 수 있다.
병합된 엔티티 레코드(502)는 하나 이상의 인기도 점수(534)를 포함할 수 있다. 예를 들어, 병합된 엔티티 레코드(502)는 앱-특정 엔티티 레코드들에 대한 인기도 점수들을 포함할 수 있다. 병합된 엔티티 레코드(502)는 또한 글로벌 인기도 점수를 포함할 수 있다.
검색 시스템(104)은 다양한 방식들로 글로벌 인기도 점수를 생성할 수 있다. 일부 구현들에서, 검색 시스템(104)은 앱-특정 인기도 점수들의 조합에 기초하여 글로벌 인기도 점수를 생성할 수 있다. 예를 들어, 검색 시스템(104)은 앱-특정 인기도 점수를 평균함으로써 글로벌 인기도 점수를 계산할 수 있다. 다른 예로서, 검색 시스템(104)은 인기도 점수들과 연관된 애플리케이션에 기초하여 상이한 앱 특정 인기도 점수에 가중치들을 부여하는 기능을 사용할 수 있다. 특정 예에서, 더 인기있는 애플리케이션들은 인기도 점수들과 관련된 더 큰 가중치를 가질 수 있다. 일부 구현들에서, 글로벌 인기도 점수는 애플리케이션 특정 인기도 점수들의 가중된 평균으로부터 계산될 수 있다. 일부 구현들에서, 검색 시스템(104)은 최대 앱-특정 인기도 점수를 글로벌 인기도 점수로 설정함으로써 글로벌 인기도 점수를 생성할 수 있다. 다른 구현들에서, 검색 시스템(104)은 가장 신뢰받는 애플리케이션의 인기도 점수를 글로벌 인기도 점수로서 할당할 수 있다.
일부 구현들에서, 검색 시스템(104)은 개별 애플리케이션들과 연관된 이벤트들에 기초하여 글로벌 인기도 점수를 계산할 수 있다. 예를 들어, 검색 시스템(104)은 (예를 들어, 애플리케이션 인기도에 기초하여) 이벤트들로 분류된 애플리케이션에 기초하여 상이한 앱-특정 이벤트에 가중치들을 부여하는 기능을 사용할 수 있다. 이 예에서, 검색 시스템(104)은 더 대중적인 애플리케이션들로부터의 이벤트들에 더 큰 가중치를 줄 수 있다. 검색 시스템(104)은 스코어링 함수, 로그 스코어링 함수, 가중치 함수 및 기계 학습 모델과 관련하여 여기에 서술된 것과 유사한 방식으로 이러한 인기도 점수들을 결정할 수 있다.
일부 구현들에서, 검색 시스템(104)은 기계 학습 모델을 사용하여 글로벌 인기도 점수들을 결정할 수 있다. 예를 들어, 기계 학습 모델은 이벤트 유형들에 대한 값들, 앱-특정 인기도 값들 및 기타 데이터와 같은 다수의 특성들을 수신한 다음 인기도 점수를 출력할 수 있다. 기계 학습 모델은 목표 기능(예를 들어, 학습 데이터에 점수들을 할당하여 생성된 기능)을 사용하여 생성될 수 있다. 기계 학습 모델은 누락들, 예를 들어, 엔티티들/애플리케이션들 누락의 경우 및 병합된 엔티티들에 상이한 적용된 애플리케이션들이 있는 경우를 처리할 수도 있다. 예를 들어, 하나의 레스토랑 엔티티는 제1 애플리케이션 및 제2 애플리케이션의 이벤트 데이터를 가질 수 있는 반면, 다른 엔티티는 제1 애플리케이션 및 제3 애플리케이션의 데이터를 가질 수 있지만 제2 애플리케이션은 가질 수 없다.
일부 구현들에서, 병합된 엔티티 레코드는 단일 글로벌 인기도 점수를 포함할 수 있다. 일부 구현들에서, 병합된 엔티티 레코드는 상이한 유형들의 글로벌 인기도 점수들을 포함할 수 있다. 예를 들어, 병합된 엔티티 레코드에는 상이한 지리적 위치들/국가들, 언어들 및 디바이스 유형들에 대한 인기도 점수들이 포함될 수 있다. 일부 구현들에서, 검색 시스템(104)은 엔티티 버티컬에 의해 글로벌 인기도 점수를 생성할 수 있다. 상이한 인기도 점수들은 상이한 데이터 세트들(예를 들어, 국가, 언어, 디바이스 유형 등에 의한 이벤트 데이터)를 사용하여 여기에 서술된 바와 같이 계산될 수 있다.
도 6a 내지 도 6b는 인기도 점수들을 계산하기 위한 예시적인 방법들을 도시한다. 도 6a는 집계 이벤트 데이터에 기초하여 인기도 점수들을 계산하는 예시적인 방법을 도시한다. 블록 600에서, 검색 시스템(104)은 집계 이벤트 데이터에 기초하여 엔티티들(예를 들어, 엔티티 레코드들)에 대한 이벤트 수들을 결정한다. 블록 602에서, 검색 시스템(104)은 엔티티 레코드들과 연관된 이벤트 수들에 기초하여 엔티티들에 대한 인기도 점수들을 결정한다. 예를 들어, 검색 시스템(104)은 다른 엔티티 레코드들과 연관된 이벤트들의 수에 대한 엔티티 레코드와 연관된 이벤트들의 수에 기초하여 엔티티 레코드에 대한 인기도 점수들을 결정할 수 있다. 여기에서는 특정 및 병합된 엔티티 레코드들에 대한 추가/대체 계산에 대해 서술된다. 블록 604에서, 검색 시스템(104)은 생성된 인기도 점수를 각각의 엔티티 레코드들에 저장한다. 블록들 606 내지 608에서, 검색 시스템(104)은 검색 요청을 수신하고 엔티티 레코드들과 연관된 인기도 점수에 기초하여 검색 결과들을 생성할 수 있다. 예를 들어, 검색 시스템(104)은 검색 동안 스코어링/필터링 특징들로서 인기도 점수들을 사용할 수 있다.
도 6b는 앱-특정 데이터에 기초하여 인기도 점수들을 계산하는 예시적인 방법을 도시한다. 블록 610에서, 검색 시스템(104)은 각 엔티티에 대한 앱-특정 카운트 데이터를 생성하고, 여기서 앱-특정 카운트 데이터는 각 애플리케이션에서 엔티티와의 참여 횟수를 나타낸다. 검색 시스템(104)은 데이터 제공자들(134), 파트너들 및/또는 애플리케이션/웹 사이트 크롤링으로부터의 데이터에 기초하여 앱-특정 카운트 데이터를 생성할 수 있다. 블록 612에서, 검색 시스템(104)은 엔티티 레코드들과 연관된 앱-특정 카운트 데이터에 기초하여 엔티티들에 대한 인기도 점수들을 결정한다. 예를 들어, 검색 시스템(104)은 다른 엔티티 레코드들과 연관된 앱- 특정 카운트들의 수에 대한 엔티티 레코드와 연관된 앱-특정 카운트들의 수에 기초하여 엔티티 레코드에 대한 인기도 점수들을 결정할 수 있다. 앱-특정 및 병합된 엔티티 레코드들에 대한 앱-특정 카운트들에 기초한 추가/대체 계산들이 여기에 서술된다. 블록 614에서, 검색 시스템(104)은 생성된 인기도 점수들을 각각의 엔티티 레코드들에 저장한다. 블록들 616 내지 618에서, 검색 시스템(104)은 검색 요청들을 수신하고 엔티티 레코드들과 연관된 인기도 점수들에 기초하여 검색 결과들을 생성할 수 있다.
도 7a는 사용자 디바이스로부터 검색 요청의 수신에 응답하여 검색을 수행하는 예시적인 검색 시스템(104)을 도시한다. 도 7b는 예시적인 검색 방법을 도시한다. 도 7b의 방법은 도 7a의 기능 블록도에 대해 서술된다.
블록 700에서, 질의 처리 모듈(412)은 사용자 디바이스로부터 검색 요청을 수신한다. 검색 요청에는 검색 질의, 지리적 위치 데이터 및 기타 데이터가 포함될 수 있다. 블록 702에서, 질의 처리 모듈(412)은 수신된 검색 요청을 처리한다.
블록 704에서, 검색 모듈(416)은 검색 요청, 인기도 점수들 및 기타 특징들에 기초하여 예비 결과들을 생성한다. 예비 결과들에는 엔티티 레코드들의 집합과 해당 예비 점수들이 포함될 수 있다. 검색 모듈(416)은 처리된 검색 질의에 기초하여 엔티티 데이터 저장소(408)(예를 들어, 엔티티 검색 인덱스)에서 엔티티 레코드들을 식별한다. 예를 들어, 검색 모듈(416)은 검색 질의 용어들과 엔티티 레코드들에 포함된 텍스트 간의 일치들에 기초하여 엔티티 레코드들을 식별할 수 있다. 검색 모듈(416)은 또한 사용자의 현재 또는 질의 지정 지리적 위치와 엔티티 레코드들 내의 엔티티들의 지리적 위치 간의 일치들에 기초하여 엔티티 레코드들을 식별할 수 있다. 엔티티 레코드들의 식별에는 키워드들, 앱 이름들, 버티컬들, 액션들, 사용자 지리적 위치 및 기타 파라미터들을 포함할 수 있는 하나 이상의 데이터베이스 질의들이 포함될 수 있다.
일부 구현들에서, 검색 모듈(416)은 식별된 엔티티 레코드들의 추가 스코어링을 구현할 수 있다. 예를 들어, 검색 모듈(416)은 검색 질의의 특징(예를 들어, 질의 인기도), 엔티티 레코드들의 특징들(예를 들어, 엔티티 인기도 점수), 및/또는 검색 질의와 엔티티 레코드 간의 교차점에 기초한 특징들에 기초하여 엔티티 레코드들을 스코어링할 수 있다. 추가 스코어링(예를 들어, 2차 스코어링)은 하나 이상의 스코어링 기능, 하나 이상의 기계 학습 모델 및/또는 비즈니스 규칙들을 사용할 수 있다.
일부 구현들에서, 추가 스코어링은 여기에 서술된 집계 이벤트 데이터와 같은 엔티티 레코드에 포함된 이벤트 데이터에 기초할 수 있다. 예를 들어, 집계 이벤트 데이터는 스코어링 기능으로 사용될 수 있다. 일부 구현들에서, 추가 스코어링은 엔티티 레코드들과 연관된 인기도 점수들에 기초할 수 있다. 예를 들어, 인기도 점수들은 스코어링 특징들로 사용될 수 있다.
블록 706에서, 결과 생성 모듈(418)은 검색 요청을 전송한 사용자 디바이스 또는 사용자와 관련된 사용자 데이터에 기초하여 예비 결과들을 스코어링/필터링할 수 있다. 사용자 데이터는 특정 사용자에 대한 사용자 데이터 객체로부터 획득될 수 있다(예를 들어, 수신된 디바이스 ID 또는 사용자 ID에 의해 표시됨). 사용자 데이터를 기반으로 예비 결과들을 스코어링하면 사용자에게 더 관련성이 높은 개인화된 검색 결과들을 얻을 수 있다.
일부 구현들에서, 결과 생성 모듈(418)은 예비 결과들과 연관된 애플리케이션들의 설치 상태에 기초하여 예비 결과들을 스코어링/필터링할 수 있다. 예를 들어, 결과 생성 모듈(418)은 설치되지 않은 애플리케이션들에 대한 링크들을 필터링(예를 들어, 제거)하거나 페널티를 줄 수 있다. 다른 예로서, 결과 생성 모듈(418)은 설치된 애플리케이션들에 대한 예비 결과들을 높일 수 있다. 일부 구현들에서, 결과 생성 모듈(418)은 사용자의 애플리케이션 사용(예를 들어, 하나 이상의 애플리케이션 사용 값)에 기초하여 예비 결과들을 스코어링/필터링할 수 있다. 예를 들어, 결과 생성 모듈(418)은 사용 빈도 또는 총 사용과 같은 애플리케이션이 사용되는 양에 기초하여 스코어링/필터링할 수 있다. 이 예에서는, 더 높은 애플리케이션 사용과 관련된 예비 결과들이 향상될 수 있다. 일부 구현들에서, 결과 생성 모듈(418)은 애플리케이션 사용의 최신성에 기초하여 결과를 스코어링/필터링할 수 있다. 예를 들어, 최근에 사용한 애플리케이션의 결과들이 더 높은 점수를 받을 수 있다. 이 예에서는, 일정 기간 동안 사용되지 않은 애플리케이션과 관련된 결과들이 필터링될 수 있다.
추가 개인화는 애플리케이션이 사용되는 요일 및/또는 애플리케이션이 사용되는 시간과 같은 개인화된 사용 패턴들을 기반으로 할 수 있다. 이 예에서, 결과 생성 모듈(418)은 사용자가 현재 시간 또는 요일에 사용하는 애플리케이션과 관련된 결과를 부스트할 수 있다. 추가 개인화는 애플리케이션 설치 상태 및 디바이스 유형(예를 들어, 노트북, 스마트폰 등) 별 사용량을 기반으로 할 수 있다. 예를 들어, 결과 생성 모듈(418)은 디바이스에 의한 사용자 이력 애플리케이션 사용에 기초하여 결과를 스코어링/필터링할 수 있다. 개인화는 여기에서 결과 생성 모듈(418)에 기인하지만, 개인화는 또한 초기 데이터베이스 질의 동안 및/또는 추가 스코어링 동안(예를 들어, 기계 학습 모델을 사용하여) 검색 모듈(416)에 의해 수행될 수 있다.
블록 708에서, 결과 생성 모듈(418)은 예비 결과들의 점수/순위에 기초하여 검색 결과들을 생성할 수 있다. 검색 결과들은 복수의 애플리케이션 링크들, 링크들에 대한 디스플레이 데이터 및 관련 결과 점수들을 포함할 수 있다. 검색 결과들과 관련된 결과 점수들은 "검색 결과 점수들" 또는 "결과 점수들"이라고 할 수 있다. 일부 구현들에서, 결과 생성 모듈(418)은 엔티티 레코드들 또는 링크 데이터 저장소(420)로부터 애플리케이션 링크들을 검색할 수 있다. 일부 구현들에서, 결과 생성 모듈(418)은 템플릿을 사용하여 애플리케이션 링크들을 생성할 수 있다. 일부 구현들에서, 결과 생성 모듈(418)은 사용자의 검색 질의를 애플리케이션 검색 링크 템플릿에 삽입하여 검색 애플리케이션 링크를 생성한다. 이 경우, 생성된 검색 애플리케이션 링크는 사용자의 검색 질의에 따라 생성된 애플리케이션에서 검색 결과 페이지를 열 수 있다.
블록 710에서, 검색 시스템(104)은 검색 결과들을 사용자 디바이스로 전송한다. 블록 712에서, 사용자 디바이스는 검색 결과들을 사용자에게 디스플레이한다. 일부 구현들에서, 사용자 디바이스(예를 들어, 검색 애플리케이션)는 검색 결과들의 순위를 매길 수 있다.
도 8a는 (예를 들어, 검색 애플리케이션(132)에 의해) 사용자 디바이스 상에 디스플레이된 예시적인 검색 결과들의 세트를 도시한다. 도 8a 내지 도 8c에서, 검색 질의는 "어벤져스"로, 인기 영화 프랜차이즈와 관련된 질의일 수 있다. 도 8a는 6개의 검색 결과들 800-1, 800-2,..., 800-6를 3개의 상이한 애플리케이션들에서 포함한다. 결과 애플리케이션에는 1) 사용자에게 스트리밍 영화를 제공하는 Stream It 애플리케이션, 2) 극장에서 영화를 볼 수 있는 영화 티켓을 제공하는 InTheater 애플리케이션, 3) 극장에서 영화를 볼 수 있는 영화 티켓을 제공하는 FilmTicks 애플리케이션, 및 4) 스트리밍 음악을 제공하는 사운드 트랙 애플리케이션을 포함한다.
도 8a 내지 도 8의 검색 결과들은 어벤져스 영화 프랜차이즈와 관련된 애플리케이션 상태용이다. 결과 800-1은 Streamlt 애플리케이션에서 어벤져스(2012) 영화를 스트리밍하기 위한 애플리케이션 링크이다. 결과 800-2는 Streamlt 애플리케이션에서 어벤져스-장면들의 뒷배경 영화를 스트리밍하기 위한 애플리케이션 링크이다. 결과 800-3은 InTheater 애플리케이션에서 어벤져스(2019) 영화의 극장 티켓들을 구매할 수 있는 애플리케이션 링크이다. 결과 800-4는 FilmTicks 앱에서 어벤져스(2019) 영화의 극장 티켓을 구매할 수 있는 애플리케이션 링크이다. 결과 800-5는 Soundtrack 애플리케이션에서 어벤져스(2012) 사운드 트랙을 듣기 위한 애플리케이션 링크이다. 결과 800-6은 Soundtrack 애플리케이션에서 어벤져스(2019) 사운드 트랙을 듣기 위한 애플리케이션 링크이다.
도 8a에 도시된 바와 같이, 검색 결과들은 결과 점수에 따라 순위가 매겨지며, 검색 결과들에서 가장 큰 결과 점수들(예를 들어, 1.00에 가까움)가 더 높은 순위를 차지한다고 가정할 수 있다. 일부 구현들에서, 검색 시스템(104) 및/또는 검색 애플리케이션(132)은 검색 결과들을 그룹화할 수 있다. 예를 들어, 도 8b 내지 도 8c에 도시된 바와 같이, 검색 시스템(104) 및/또는 검색 애플리케이션(132)은 애플리케이션 및/또는 버티컬 별로 검색 결과들을 그룹화할 수 있다. 애플리케이션 또는 버티컬 별로 결과들을 그룹화하면 사용자가 선택한 애플리케이션 링크의 컨텍스트를 빠르게 이해하는 데 도움이 되는 사용자 경험을 제공할 수 있다.
도 8b는 애플리케이션별로 그룹화된 도 8a의 예시적인 검색 결과들을 도시한다. 결과들의 그룹들을 애플리케이션 그룹들이라고 할 수 있다. 검색 시스템(104)이 애플리케이션별로 검색 결과들을 그룹화하는 구현들에서, 검색 시스템(104)은 애플리케이션 그룹들의 순위를 매길 수 있다. 예를 들어, 검색 시스템(104)(예를 들어, 결과 생성 모듈(418))은 애플리케이션 그룹들을 스코어링/필터링하고 스코어별로 애플리케이션 그룹의 순위를 매길 수 있다. 애플리케이션 그룹과 관련된 점수를 "애플리케이션 그룹 점수"라고 할 수 있다.
일부 구현들에서, 검색 시스템(104)은 애플리케이션 그룹들의 검색 결과들과 연관된 결과 점수들에 기초하여 애플리케이션 그룹들의 순위를 매길 수 있다. 예를 들어, 검색 시스템(104)은 최고 점수 검색 결과를 식별하고 검색 결과 페이지에서 최고 점수 검색 결과와 연관된 애플리케이션 그룹을 설정할 수 있다. 검색 시스템 (104)은 그 다음으로 높은 검색 결과 점수를 식별하고 검색 결과 페이지에서 그 다음으로 높은 결과 점수에 대한 애플리케이션 그룹의 순위를 매길 수 있다. 다른 구현에서, 검색 시스템(104)은 애플리케이션과 연관된 검색 결과들에 대한 평균 결과 점수에 기초하여 애플리케이션 그룹들의 순위를 매길 수 있다. 예를 들어, 검색 시스템(104)은 검색 결과 페이지에서 더 높은 평균 결과 점수와 관련된 애플리케이션 그룹들을 더 높게 순위를 매길 수 있다.
일부 구현들에서, 검색 시스템(104)은 애플리케이션 그룹과 연관된 집계 이벤트 데이터에 기초하여 애플리케이션 그룹에 대한 애플리케이션 그룹 점수를 결정할 수 있다. 일부 구현들에서, 검색 시스템(104)은 집계 이벤트 데이터에 따라 애플리케이션의 사용률(예를 들어, DAU/MAU)에 기초하여 애플리케이션 그룹들의 순위를 매길 수 있다. 일부 구현들에서, 애플리케이션의 사용률은 사용자의 국가 및/또는 사용자 디바이스 유형에 기초하여 사용자에게 개인화될 수 있다.
일부 구현에서, 검색 시스템(104)은 사용자 데이터(예를 들어, 사용자 데이터 객체에 포함된 데이터)에 기초하여 애플리케이션 그룹들의 순위를 매길 수 있다. 예시적인 사용자 데이터에는 사용자 디바이스의 애플리케이션 설치 상태(예를 들어, 설치된 앱의 순위를 높임 및/또는 설치되지 않은 애플리케이션의 필터링), 앱 사용의 최신성(예를 들어, 더 높은 순위의 마지막으로 사용된 앱), 애플리케이션 사용 빈도(예를 들어, 가장 많이 사용되는 앱이 더 높은 순위)를 포함할 수 있다.
검색 시스템(104)은 여기에 서술된 임의의 애플리케이션 그룹 순위지정 기술들을 사용할 수 있다. 예를 들어, 검색 시스템(104)은 여기에 서술된 인자들의 조합에 기초하여 애플리케이션 그룹들의 순위를 매길 수 있다. 일 예에서, 검색 시스템(104)은 집계 이벤트 데이터 및 사용자 데이터에 기초하여 애플리케이션 그룹들의 순위를 매길 수 있다. 다른 예에서, 검색 시스템(104)은 계층화된 접근 방식에 따라 애플리케이션 그룹을 순위화할 수 있다. 예를 들어, 검색 시스템(104)은 먼저 사용자 디바이스에 애플리케이션이 설치되어 있는지를 결정할 수 있다. 애플리케이션들이 설치되면, 검색 시스템(104)은 개인 용도에 따라 애플리케이션 그룹의 순위를 매길 수 있다. 애플리케이션이 설치되지 않은 경우, 검색 시스템(104)은 집계 이벤트 데이터에 의해 애플리케이션의 순위를 매길 수 있다.
도 8c는 버티컬 별 검색 결과들의 예시적인 그룹화들을 나타낸다. 도 8c에 표시된 3개의 버티컬들은 영화 티켓들, 스트리밍 영화들 및 음악을 포함한다. 도시된 것처럼, InTheater 애플리케이션의 어벤져스(2019) 티켓 엔티티와 FilmTicks 애플리케이션의 어벤져스(2019) 티켓 엔티티는 영화 티켓 버티컬과 연관되어 있다. 더욱이, 어벤져스(2012) 엔티티와 어벤져스 - 장면들에 대한 뒷배경 엔티티는 스트리밍 영화 버티컬과 연관된다. 또한, 어벤져스(2012) 및 어벤져스(2019) 사운드 트랙 결과들은 음악 버티컬과 연관된다. 엔티티들과 연관된 버티컬들은 엔티티 레코드들에 저장될 수 있다(예를 들어, 도 5a 내지 5b 참조).
검색 시스템(104)은 각각의 버티컬 결과 그룹의 순위를 매길 수 있다. 예를 들어, 검색 시스템(104)은 사용자의 수직적 의도에 기초하여 버티컬 결과 그룹들의 순위를 매길 수 있다. 사용자의 수직적 의도는 검색 결과들에 대해 사용자가 원하는 버티컬들 중 하나 이상을 참조할 수 있다(예를 들어, 검색 질의에 의해 표시됨). 예를 들어, 검색 질의가 "멕시코 레스토랑"인 경우, 사용자는 레스토랑 버티컬과 관련된 검색 결과들을 보려고 할 수 있다. 일부 구현들에서, 검색 시스템(104)은 또한 버티컬 결과 그룹들 내에서 검색 결과들의 순위를 매길 수 있다.
검색 시스템(104)은 다양한 방식들로 사용자의 수직적 의도를 식별할 수 있다. 예를 들어, 검색 시스템(104)은 검색 질의 및/또는 예비 결과들에 기초하여 사용자의 수직적 의도를 식별할 수 있다. 검색 시스템(104)은 사용자의 수직적 의도를 나타내는 수직적 의도 데이터 구조를 생성할 수 있다. 일부 구현들에서, 수직적 의도 데이터 구조는 등급화된 수직적 목록을 포함할 수 있다. 등급화된 수직적 목록은 버티컬이 사용자의 수직적 의도와 얼마나 잘 일치하는지에 따라 정렬될 수 있다(예를 들어, 버티컬과 검색 질의의 관련성). 일부 구현들에서, 각 버티컬은 버티컬이 사용자의 수직적 의도와 얼마나 잘 일치 하는지를 나타내는 수직적 의도 점수와 연결될 수 있다. 예를 들어, 점수는 0.00 내지 1.00이다. 일반적으로, 검색 시스템(104)은 검색 결과들에서 더 높은 수직적 의도 점수와 관련된 수직 그룹들의 순위를 매길 수 있다.
일부 구현들에서, 검색 시스템(104)은 사용자의 검색 질의에 기초하여 수직적 의도를 결정할 수 있다. 예를 들어, 검색 시스템(104)은 질의에서 직접 사용자의 수직적 의도를 식별할 수 있다. 특정 예에서, "어벤져스 영화 티켓들"에 대한 질의는 사용자가 원하는 버티컬이 "영화 티켓들"임을 나타낼 수 있다. 일부 구현들에서, 각 버티컬은 수직 대체 이름들 및 동의어들와 같이 버티컬과 연관된 복수의 추가 단어들과 연관될 수 있다. 버티컬과 관련된 단어들은 하나 이상의 데이터 저장소에 포함될 수 있다. 이 예에서, 버티컬과 관련된 단어들의 포함은 사용자의 수직적 의도를 나타낼 수 있다. 예를 들어, 버티컬 "영화 티켓들"에 "필름 티켓들"이라는 관련 단어가 있는 경우, 용어 "필름 티켓들"을 포함하는 질의는 "영화 티켓"수직 의도를 나타낼 수 있다. 용어 일치 수가 많을수록 수직적 의도 점수가 높아질 수 있다.
일부 구현들에서, 검색 시스템(104)은 예비 결과들에 기초하여 수직적 의도를 결정할 수 있다. 여기에 서술된 바와 같이, 각각의 예비 결과들은 버티컬과 연관될 수 있다. 이러한 구현들에서, 검색 시스템(104)은 예비 결과들과 연관된 버티컬들에 기초하여 수직적 의도를 결정할 수 있다. 일부 구현들에서, 검색 시스템(104)은 예비 결과들과 연관된 예비 점수들에 의해 수직 결과 그룹들의 순위를 매길 수 있다. 예를 들어, 더 높은 예비 점수들과 관련된 버티컬들은 검색 결과들에서 더 높은 순위를 가질 수 있다. 구체적인 예에서, 예비 결과들의 점수가 가장 높은 버티컬을 최고 순위 업종 결과 그룹으로 설정할 수 있다. 다른 구현들에서, 검색 시스템(104)은 버티컬이 예비 결과들에 나타나는 횟수에 기초하여 수직 결과 그룹들의 순위를 매길 수 있으며, 더 많이 나타나는 버티컬들은 대응하는 수직 그룹들이 결과들에서 더 높게 나타날 수 있도록 할 수 있다. 일 예에서, 가장 높은 N 개의 스코어링 예비 결과에서 가장 빈번하게 발생하는 버티컬이 가장 높은 순위의 버티컬로 선정될 수 있다. 다른 예에서, 가장 높은 평균 예비 점수와 관련된 버티컬이 가장 높은 순위 결과로 선택될 수 있다.
일부 구현들에서, 인기도와 같은 특징들은 수직적 의도를 결정하는 데 사용될 수 있다. 예를 들어, 인기도가 가장 높은 결과의 버티컬이 가장 높은 수직적 의도로 순위가 매겨질 수 있다. 일부 구현들에서, 수직적 의도를 결정하기 위해 수직적 결과의 수를 사용할 수 있다. 다른 경우들에는, 기계 학습 모델을 사용하여 질의 단어들과 예비 검색 결과들을 고려하여 수직적 의도를 예측할 수 있다. 일부 구현들에서, 사용자 데이터는 수직적 의도 결정을 위한 특징일 수 있다. 예를 들어, 사용자가 정기적으로 음악 애플리케이션들을 사용하지만, 영화 티켓 애플리케이션들이 없는 경우, 음악 버티컬이 더 많을 수 있다.
수직 그룹들의 순위를 매기는 것 외에도, 검색 시스템(104)은 수직 그룹들 내에서 개별 검색 결과들의 순위를 매길 수 있다. 검색 시스템(104)은 애플리케이션 설치에 기초한 스코어링/필터링, 집계 이벤트 데이터 및 사용자 데이터와 같이, 여기에 서술된 스코어링/필터링 중 임의의 것에 기초하여 개별 검색 결과들을 순위화할 수 있다.
일부 구현들에서, 동일한 애플리케이션에 대한 검색 결과들이 상이한 버티컬들과 연관될 때, 검색 시스템(104)은 검색 결과들을 각각의 버티컬들로 분할하는 대신 동일한 버티컬 그룹 내에 동일한 애플리케이션에 대한 결과들을 포함할 수 있다. 예를 들어, 검색 결과들이 동일한 애플리케이션에 대해 상이한 버티컬들을 갖는 둘 이상의 애플리케이션 링크들을 포함하는 경우, 검색 시스템(104)은 동일한 버티컬 아래에 둘 이상의 애플리케이션 링크들을 그룹화할 수 있다. 특정 예에서, 검색 시스템(104)은 2개 이상의 애플리케이션 링크들을 그들의 최고 순위 버티컬 아래에 그룹화한 다음 결과 점수에 기초하여 애플리케이션 링크들을 정렬할 수 있다.
일부 구현들에서, 검색 애플리케이션(132) 및/또는 검색 웹 페이지는 사용자가 그룹화 유형을 선택할 수 있게 하는 GUI 요소(예를 들어, 버튼)를 포함할 수 있다. 그룹화 선택(예를 들어, 버티컬에 의해 또는 애플리케이션에 의해)은 검색 요청에 표시될 수 있다. 일부 경우들에서, 수직 의도 점수들은 사용자 디바이스에서 그룹화하기 위해 사용자 디바이스로 전송될 수 있다.
일부 구현들에서, 검색 시스템(104) 및/또는 검색 애플리케이션(132)은 액션에 의해 검색 결과들을 그룹화할 수 있다. 이러한 구현들에서, 검색 시스템(104) 및/또는 검색 애플리케이션(132)은 수직 의도에 의한 그룹화와 유사한 방식으로 액션에 의한 검색을 그룹화할 수 있다. 액션 그룹들의 순위를 매기는 것 외에도, 검색 시스템(104)은 액션 그룹들 내의 개별 검색 결과들의 순위를 매길 수 있다.
도 9는 사용자 디바이스로부터 검색 요청의 수신에 응답하여 검색을 수행하는 예시적인 검색 시스템(104)을 도시한다. 도 10은 예시적인 검색 방법을 도시한다. 도 10의 방법은 도 9의 기능 블록도에 대해 서술된다.
블록 1000에서, 질의 처리 모듈(412)은 사용자 디바이스로부터 검색 요청을 수신하고 검색 요청을 처리한다. 질의 처리 모듈(412)은 문자열/유형 데이터 저장소(414)에 포함된 데이터를 기반으로 검색 요청을 처리할 수 있다. 질의 처리 모듈은 처리된 검색 질의를 검색 모듈(416)로 출력할 수 있다.
블록 1002에서, 데이터베이스 질의 모듈(902)은 검색 요청, 인기도 점수들 및 기타 특징들에 기초하여 엔티티 레코드들의 세트(예를 들어, 예비 결과들)를 식별하기 위해 엔티티 데이터 저장소(408)의 데이터베이스 질의를 수행한다. 블록 1004에서, 예비 결과 처리 모듈(904)은 (예를 들어, 스코어링 기능, 기계 학습 모델 및/또는 비즈니스 로직을 사용하여) 예비 결과들의 추가 스코어링/필터링을 수행할 수 있다. 블록 1006에서, 수직 의도 계산 모듈(900)은 사용자의 검색 질의 및/또는 예비 결과들에 기초하여 사용자의 수직 의도(예를 들어, 수직 의도 데이터 구조)를 결정할 수 있다. 일부 구현들에서, 검색 모듈(416)에서 수직적 의도를 결정하는 대신, 질의 처리 모듈(412)은 검색 쿼리 및/또는 검색 요청의 다른 데이터에 기초하여 수직적 의도(예를 들어, 수직적 의도 데이터 구조)를 결정할 수 있다.
블록 1008에서, 링크 처리 모듈(906)은 검색 요청을 전송한 사용자 디바이스(또는 사용자)와 관련된 사용자 데이터에 기초하여 예비 결과들을 스코어링/필터링할 수 있다. 사용자 데이터는 사용자 데이터 데이터 저장소(404)의 사용자 데이터 객체로부터 획득될 수 있다. 블록 1010에서, 링크 생성 모듈(908)은 예비 결과들 및 수직 의도 데이터 구조(들)에 기초하여 검색 결과들을 생성할 수 있다. 예를 들어, 링크 생성 모듈(908)은 링크 데이터 저장소(420)의 데이터에 기초하여 애플리케이션 링크들을 검색/생성하고, 결과 점수, 수직 의도 및/또는 연관된 애플리케이션에 의해 순위가 매겨진 검색 결과들을 출력할 수 있다. 블록 1012에서, 검색 시스템(104)은 디스플레이를 위해 검색 결과들을 사용자 디바이스로 전송한다.
시스템들(104, 106)에 포함된 모듈들 및 데이터 저장소들은 본 발명의 시스템들(104, 106)에 포함될 수 있는 특징을 나타낸다. 여기에 서술된 모듈들 및 데이터 저장소들은 전자 하드웨어, 소프트웨어, 펌웨어 또는 이들의 임의의 조합으로 구현될 수 있다. 상이한 특징들을 별도의 모듈들 및 데이터 저장소들로 묘사한다고 해서 모듈들 및 데이터 저장소들이 공통 또는 별도의 전자 하드웨어 또는 소프트웨어 컴포넌트들에 의해 구현되는지를 반드시 의미하지는 않는다. 일부 구현들에서, 여기에 묘사된 하나 이상의 모듈 및 데이터 저장소와 관련된 특징들은 공통 전자 하드웨어 및 소프트웨어 컴포넌트에 의해 실현될 수 있다. 일부 구현들에서, 여기에 묘사된 하나 이상의 모듈 및 데이터 저장소와 관련된 특징들은 별도의 전자 하드웨어 및 소프트웨어 컴포넌트에 의해 실현될 수 있다.
모듈들 및 데이터 저장소들은 하나 이상의 처리 유닛, 하나 이상의 메모리 컴포넌트, 하나 이상의 입력/출력(I/O) 컴포넌트 및 상호 연결 컴포넌트들을 포함하지만 이에 국한되지 않는 전자 하드웨어 및 소프트웨어 컴포넌트에 의해 구현될 수 있다. 상호 연결 컴포넌트들은 하나 이상의 처리 유닛들, 하나 이상의 메모리 컴포넌트들 및 하나 이상의 I/O 컴포넌트들 사이의 통신을 제공하도록 구성될 수 있다. 예를 들어, 상호 연결 컴포넌트들은 전자 컴포넌트들 간에 데이터를 전송하도록 구성된 하나 이상의 버스를 포함할 수 있다. 상호 접속 컴포넌트들은 또한 전자 컴포넌트들 사이의 통신을 제어하도록 구성된 제어 회로들(예를 들어, 메모리 제어기 및/또는 I/O 제어기)를 포함할 수 있다.
하나 이상의 처리 유닛은 하나 이상의 중앙 처리 유닛(CPU), 그래픽 처리 유닛(GPU), 디지털 신호 처리 유닛(DSP), 또는 다른 처리 유닛을 포함할 수 있다. 하나 이상의 처리 유닛은 메모리 컴포넌트들 및 I/O 컴포넌트들과 통신하도록 구성될 수 있다. 예를 들어, 하나 이상의 처리 유닛은 상호 접속 컴포넌트들을 통해 메모리 컴포넌트들 및 I/O 컴포넌트들과 통신하도록 구성될 수 있다.
메모리 컴포넌트(예를 들어, 메인 메모리 및/또는 저장 디바이스)는 임의의 휘발성 또는 비 휘발성 매체를 포함할 수 있다. 예를 들어, 메모리는 전기 매체, 자기 매체 및/또는 광학 매체, 예를 들어, 랜덤 액세스 메모리(RAM), 읽기 전용 메모리(ROM), 비휘발성 RAM(NVRAM), 전기적으로 지울 수 있는 프로그래밍 가능 ROM(EEPROM), 플래시 메모리, 하드 디스크 드라이브(HDD), 자기 테이프 드라이브들, 광학 스토리지 기술(예를 들어, 컴팩트 디스크, 디지털 다용도 디스크 및/또는 블루-레이 디스크) 또는 기타 메모리 컴포넌트들을 포함할 수 있지만, 이에 국한되지 않는다.
메모리 컴포넌트들은 여기에 서술된 데이터를 포함(예를 들어, 저장)할 수 있다. 예를 들어, 메모리 컴포넌트들은 데이터 저장소에 포함된 데이터를 포함할 수 있다. 메모리 컴포넌트들은 또한 하나 이상의 처리 유닛에 의해 실행될 수 있는 명령어들을 포함할 수 있다. 예를 들어, 메모리는 하나 이상의 처리 유닛에 의해 실행될 때, 하나 이상의 처리 유닛이 여기에 서술된 모듈들 및 데이터 저장소들에 기인한 다양한 기능들을 수행하도록 하는 컴퓨터 판독 가능한 명령어들을 포함할 수 있다.
I/O 컴포넌트들은 여러 상이한 장치들과의 통신을 제공하는 전자 하드웨어 및 소프트웨어를 의미할 수 있다. 예를 들어, I/O 컴포넌트들은, 다른 디바이스들과 하나 이상의 처리 유닛 및 메모리 컴포넌트들 간의 통신을 제공할 수 있다. 일부 예들에서, I/O 컴포넌트들은, 컴퓨터 네트워크와 통신하도록 구성될 수 있다. 예를 들어, I/O 컴포넌트들은 여러 상이한 물리적 연결들, 무선 연결들 및 프로토콜들을 사용하여 컴퓨터 네트워크를 통해 데이터를 교환하도록 구성될 수 있다. I/O 컴포넌트들에는 네트워크 인터페이스 컴포넌트들(예를 들어, 네트워크 인터페이스 제어기), 리피터들, 네트워크 브리지들, 네트워크 스위치들, 라우터들 및 방화벽들이 포함될 수 있지만 이에 국한되지는 않는다. 일부 예들에서, I/O 컴포넌트들은 디스플레이 스크린들, 키보드들, 포인터 디바이스들(예를 들어, 마우스), 터치 스크린들, 스피커들 및 마이크로폰들을 포함하지만 이에 국한되지 않는 다양한 휴먼 인터페이스 디바이스들과 통신하도록 구성된 하드웨어 및 소프트웨어를 포함 할 수 있다. 일부 예들에서, I/O 컴포넌트들은 외부 메모리(예를 들어, 외부 HDD들)와 같은 추가 디바이스들과 통신하도록 구성된 하드웨어 및 소프트웨어를 포함할 수 있다.
일부 구현들에서, 시스템들(104, 106)은 여기에 서술된 기술들을 구현하도록 구성된 하나 이상의 컴퓨팅 디바이스를 포함할 수 있다. 달리 말하면, 여기에 서술된 모듈들 및 데이터 저장소들에 귀속되는 특징들은 하나 이상의 컴퓨팅 디바이스에 의해 구현될 수 있다. 하나 이상의 컴퓨팅 디바이스 각각은 전술한 전자 하드웨어들, 소프트웨어 및/또는 펌웨어의 임의의 조합을 포함할 수 있다. 예를 들어, 하나 이상의 컴퓨팅 장치 각각은 전술한 처리 유닛들, 메모리 컴포넌트들, I/O 컴포넌트들 및 상호 연결 컴포넌트들의 임의의 조합을 포함할 수 있다. 시스템들(104, 106)의 하나 이상의 컴퓨팅 디바이스는 또한 디스플레이 스크린들, 키보드들, 포인팅 디바이스들(예를 들어, 마우스), 터치스크린들, 스피커들 및 마이크로폰들을 포함하지만 이에 국한되지 않는 다양한 인간 인터페이스 디바이스들을 포함할 수 있다. 컴퓨팅 디바이스들은 또한 외부 메모리(예를 들어, 외부 HDD들)와 같은 추가 디바이스들과 통신하도록 구성될 수 있다.
시스템들(104, 106)의 하나 이상의 컴퓨팅 디바이스는 네트워크(108)와 통신하도록 구성될 수 있다. 시스템들(104, 106)의 하나 이상의 컴퓨팅 디바이스들은 또한 (예를 들어, 컴퓨터 네트워크를 통해) 서로 통신하도록 구성될 수 있다. 일부 예들에서, 시스템들(104, 106)의 하나 이상의 컴퓨팅 디바이스는 사용자 디바이스들과 통신하도록 구성된 하나 이상의 서버 컴퓨팅 디바이스를 포함할 수 있다. 하나 이상의 컴퓨팅 디바이스는 일부 예들에서 단일 지리적 위치의 단일 머신 내에 상주할 수 있다. 다른 예들에서, 하나 이상의 컴퓨팅 디바이스는 단일 지리적 위치에서 다수의 머신 내에 상주할 수 있다. 또 다른 예들에서, 시스템들(104, 106)의 하나 이상의 컴퓨팅 디바이스는 다수의 지리적 위치들에 걸쳐 분산될 수 있다.

Claims (15)

  1. 시스템으로서,
    하나 이상의 저장 디바이스; 및
    하나 이상의 처리 유닛을 포함하고,
    상기 하나 이상의 저장 디바이스는 복수의 엔티티 레코드들을 저장하도록 구성되고, 각 엔티티 레코드는:
    엔티티를 설명하는 엔티티 정보와; 그리고
    상기 엔티티와 연관된 애플리케이션 상태에 액세스하도록 구성된 애플리케이션 링크를 포함하고,
    상기 하나 이상의 처리 유닛은 컴퓨터-판독가능한 명령어들을 실행하고, 상기 컴퓨터-판독가능한 명령어들은 상기 하나 이상의 처리 유닛으로 하여금:
    복수의 사용자 디바이스들에 의해 생성된 이벤트 데이터를 수신하고, 상기 이벤트 데이터는 각 애플리케이션 상태가 상기 사용자 디바이스들에 의해 액세스된 횟수들을 나타내며,
    상기 수신된 이벤트 데이터에 기초하여 각 엔티티 레코드에 대한 인기도 점수를 결정하고, 상기 인기도 점수는 하나 이상의 다른 애플리케이션 상태가 액세스된 횟수와 관련하여 액세스된 횟수를 나타내며,
    원격 요청 디바이스로부터 검색 요청을 수신하고,
    상기 검색 요청과 예비 결과 엔티티 레코드들에 포함된 상기 엔티티 정보 사이의 일치들에 기초하여 상기 예비 결과 엔티티 레코드들의 세트를 식별하고,
    상기 예비 결과 엔티티 레코드들과 연관된 상기 인기도 점수들에 기초하여 상기 예비 결과 엔티티 레코드들 각각에 대한 결과 점수들을 생성하고,
    상기 예비 결과 엔티티 레코드들로부터 애플리케이션 링크들을 포함하는 검색 결과들을 생성하고, 상기 검색 결과들 내의 애플리케이션 링크들은 상기 애플리케이션 링크들과 연관된 상기 결과 점수들에 따라 순위가 매겨지며, 그리고
    상기 검색 결과들을 상기 요청 디바이스로 전송하도록 하는 것을 특징으로 하는
    시스템.
  2. 제1항에 있어서,
    상기 이벤트 데이터는 상기 사용자 디바이스들에 설치된 네이티브 애플리케이션들에 의해 생성되는 것을 특징으로 하는
    시스템.
  3. 제1항에 있어서,
    각 엔티티 레코드에 대한 인기도 점수는, 하나 이상의 다른 애플리케이션 상태가 액세스된 횟수에 대한 상기 엔티티 레코드에 대한 애플리케이션 상태가 액세스된 횟수의 비율인 것을 특징으로 하는
    시스템.
  4. 제3항에 있어서,
    상기 이벤트 데이터는 이벤트 유형들에 의해 분류되고, 각 이벤트 유형은 가중치 값과 연관되고, 상기 비율은 이벤트 유형 가중치 값들에 의해 가중치가 부여된 용어들을 포함하는 함수인 것을 특징으로 하는
    시스템.
  5. 제3항에 있어서,
    각 엔티티 레코드에 대한 인기도 점수는, 하나 이상의 다른 애플리케이션 상태가 액세스된 횟수에 기초한 최대 카운트 값에 대한 상기 엔티티 레코드에 대한 애플리케이션 상태가 액세스된 횟수의 비율인 것을 특징으로 하는
    시스템.
  6. 제1항에 있어서,
    상기 하나 이상의 처리 유닛은, 상기 이벤트 데이터와 관련된 지리적 위치, 상기 이벤트 데이터와 관련된 언어 및 상기 이벤트 데이터와 관련된 디바이스 유형 중 적어도 하나를 기반으로 각 엔티티 레코드에 대한 하나 이상의 추가 인기도 점수를 결정하도록 구성되는 것을 특징으로 하는
    시스템.
  7. 제1항에 있어서,
    각 엔티티 레코드는 다수의 애플리케이션들에서 상기 엔티티와 연관된 애플리케이션 상태들에 액세스하도록 구성된 복수의 애플리케이션 링크들을 포함하고, 상기 하나 이상의 처리 유닛은 상기 수신된 이벤트 데이터에 기초하여 각 엔티티 레코드에 대한 인기도 점수를 결정하도록 구성되며, 그리고 상기 인기도 점수는 다른 엔티티 레코드들에서 애플리케이션 상태들이 액세스된 횟수와 관련하여 상기 엔티티 레고드에 대한 애플리케이션 상태들이 액세스된 횟수를 나타내는 것을 특징으로 하는
    시스템.
  8. 제1항에 있어서,
    상기 하나 이상의 처리 유닛은:
    상기 엔티티 레코드들과 연관된 상기 애플리케이션 상태들에 대한 애플리케이션-특정 데이터를 획득하고, 상기 애플리케이션 특정 데이터는 상기 애플리케이션들 상태들과의 참여 정도를 나타내며,
    상기 애플리케이션 특정 데이터에 기초하여 각 엔티티 레코드에 대한 애플리케이션 특정 카운트 값들을 결정하고, 그리고
    상기 수신된 이벤트 데이터 및 상기 애플리케이션-특정 카운트 값들에 기초하여 각 엔티티 레코드에 대한 상기 인기도 점수를 결정하는 것을 특징으로 하는
    시스템.
  9. 제1항에 있어서,
    상기 복수의 엔티티 레코드들은 제1 복수의 엔티티 레코드들이고, 상기 하나 이상의 저장 디바이스는 제2 복수의 엔티티 레코드들을 저장하도록 구성되며, 상기 제2 복수의 엔티티 레코드들 각각은:
    엔티티를 설명하는 엔티티 정보; 및
    상기 엔티티 정보와 연관된 애플리케이션 상태에 액세스하도록 구성된 애플리케이션 링크를 포함하고, 그리고
    상기 하나 이상의 처리 유닛은,
    상기 제2 복수의 엔티티 레코드들과 연관된 애플리케이션 상태들에 대한 애플리케이션-특정 데이터를 획득하고, 상기 애플리케이션-특정 데이터는 상기 제2 복수의 엔티티 레코드들의 애플리케이션 상태들과의 참여 정도를 나타내며,
    상기 애플리케이션-특정 데이터에 기초하여 상기 제2 복수의 엔티티 레코드들의 각각의 엔티티 레코드에 대한 애플리케이션-특정 카운트 값들을 결정하고, 그리고
    상기 애플리케이션-특정 카운트 값들에 기초하여 상기 제2 복수의 엔티티 레코드들의 각각의 엔티티 레코드에 대한 인기도 점수를 결정하고, 상기 예비 결과 엔티티 레코드들의 세트는 상기 제1 및 제2 복수의 엔티티 레코드들로부터 엔티티 레코드들을 포함하는 것을 특징으로 하는
    시스템.
  10. 제9항에 있어서,
    상기 제2 복수의 엔티티 레코드들의 각 엔티티 레코드에 대한 인기도 점수는, 상기 엔티티 레코드에 대한 애플리케이션-특정 카운트 값과 상기 제2 복수의 엔티티 레코드들의 다른 엔티티 레코드들에 대한 하나 이상의 애플리케이션 특정 카운트 값의 비율인 것을 특징으로 하는
    시스템.
  11. 제1항에 있어서,
    상기 요청 디바이스는 상기 사용자 디바이스들 중 하나이고, 상기 하나 이상의 처리 유닛은 상기 요청 디바이스에서 사용되는 각 애플리케이션에 대한 애플리케이션 사용 값을 결정하도록 구성되고, 상기 애플리케이션 사용 값은 상기 애플리케이션이 상기 요청 디바이스에서 사용되는 빈도를 나타내고, 그리고 결과 점수들을 생성하는 것은 상기 애플리케이션 사용 값에 기초하여 상기 예비 결과 엔티티 레코드들 각각에 대한 결과 점수들을 생성하는 것을 포함하는 것을 특징으로 하는
    시스템.
  12. 제1항에 있어서,
    상기 요청 디바이스는 상기 사용자 디바이스들 중 하나이고, 그리고
    상기 하나 이상의 처리 유닛은:
    각 예비 결과 항목 레코드에 대해, 상기 애플리케이션 링크와 연관된 애플리케이션이 상기 수신된 이벤트 데이터에 기초하여 상기 요청 디바이스에 설치되었는지를 결정하고; 그리고
    상기 연관된 애플리케이션이 상기 요청 디바이스에 설치되지 않은, 상기 예비 결과 엔티티 레코드들의 세트에서 엔티티 레코드들을 제거하도록 구성된 것을 특징으로 하는
    시스템.
  13. 제1항에 있어서,
    상기 요청 디바이스는 상기 사용자 디바이스들 중 하나이고, 그리고
    상기 하나 이상의 처리 유닛은:
    상기 검색 결과들을 복수의 애플리케이션 그룹들로 그룹화하고, 각 애플리케이션 그룹은 상이한 애플리케이션과 연관되고,
    애플리케이션 그룹과 연관된 각 애플리케이션에 대해 애플리케이션 사용 값을 결정하고, 상기 애플리케이션 사용 값은 상기 애플리케이션이 상기 요청 디바이스에서 사용되는 빈도를 나타내고, 그리고
    상기 애플리케이션 사용 값에 기초하여 상기 애플리케이션 그룹들의 순위를 매기도록 구성되는 것을 특징으로 하는
    시스템.
  14. 제1항에 있어서,
    상기 요청 디바이스는 상기 사용자 디바이스들 중 하나이고, 그리고
    상기 하나 이상의 처리 유닛은:
    상기 검색 결과들을 복수의 애플리케이션 그룹들로 그룹화하고, 각 애플리케이션 그룹은 상이한 애플리케이션과 연관되며,
    각 애플리케이션 그룹에 대해, 상기 수신된 이벤트 데이터에 기초하여 상기 애플리케이션 그룹과 연관된 애플리케이션이 상기 요청 디바이스에 설치되었는지를 결정하고, 그리고
    상기 연관된 애플리케이션이 상기 요청 디바이스에 설치되었는지에 기초하여 상기 애플리케이션 그룹들의 순위를 매기도록 구성되는 것을 특징으로 하는
    시스템.
  15. 제1항에 있어서,
    각각의 엔티티 레코드는 상기 엔티티의 카테고리를 나타내는 버티컬 데이터 필드(vertical data field)를 포함하고, 그리고
    상기 하나 이상의 처리 유닛은:
    상기 검색 결과들과 연관된 버티컬에 기초하여 상기 검색 결과들을 복수의 버티컬 그룹들로 그룹화하고, 각 버티컬 그룹은 상이한 버티컬과 연관되며,
    상기 검색 결과에 기초하여 수직 의도 데이터 구조를 결정하고, 상기 수직 의도 데이터 구조는 순위가 정해진 버티컬의 리스트를 포함하며, 그리고
    상기 수직 의도 데이터 구조에 따라 상기 버티컬 그룹들의 순위를 매기는 것을 특징으로 하는
    시스템.
KR1020217010228A 2018-09-06 2019-09-06 사용자 참여를 사용하는 엔티티 기반 검색 시스템 KR20210091125A (ko)

Applications Claiming Priority (11)

Application Number Priority Date Filing Date Title
US201862727725P 2018-09-06 2018-09-06
US62/727,725 2018-09-06
US201862731177P 2018-09-14 2018-09-14
US62/731,177 2018-09-14
US201862769096P 2018-11-19 2018-11-19
US62/769,096 2018-11-19
US201962802256P 2019-02-07 2019-02-07
US62/802,256 2019-02-07
US16/561,848 US20200081930A1 (en) 2018-09-06 2019-09-05 Entity-based search system using user engagement
US16/561,848 2019-09-05
PCT/US2019/049888 WO2020051416A1 (en) 2018-09-06 2019-09-06 Entity-based search system using user engagement

Publications (1)

Publication Number Publication Date
KR20210091125A true KR20210091125A (ko) 2021-07-21

Family

ID=69720860

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217010228A KR20210091125A (ko) 2018-09-06 2019-09-06 사용자 참여를 사용하는 엔티티 기반 검색 시스템

Country Status (4)

Country Link
US (1) US20200081930A1 (ko)
KR (1) KR20210091125A (ko)
CN (1) CN112868003A (ko)
WO (1) WO2020051416A1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11095732B2 (en) 2017-05-08 2021-08-17 Branch Metrics, Inc. Matching and attribution of user device events
CN111782418B (zh) * 2020-06-23 2024-04-09 京东科技控股股份有限公司 一种数据归因方法、装置、电子设备和计算机可读介质
KR20220057302A (ko) * 2020-10-29 2022-05-09 현대자동차주식회사 차량 및 그 제어방법
US20220159022A1 (en) * 2020-11-18 2022-05-19 Branch Metrics, Inc. Detecting anomalous traffic

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7693901B2 (en) * 2005-08-10 2010-04-06 Microsoft Corporation Consumer-focused results ordering
US8433620B2 (en) * 2010-11-04 2013-04-30 Microsoft Corporation Application store tastemaker recommendations
US20140201681A1 (en) * 2013-01-16 2014-07-17 Lookout, Inc. Method and system for managing and displaying activity icons on a mobile device
WO2014176322A1 (en) * 2013-04-23 2014-10-30 Quixey, Inc. Entity bidding
US20140358887A1 (en) * 2013-05-29 2014-12-04 Microsoft Corporation Application content search management
US9508040B2 (en) * 2013-06-12 2016-11-29 Microsoft Technology Licensing, Llc Predictive pre-launch for applications
US10114898B2 (en) * 2014-11-26 2018-10-30 Samsung Electronics Co., Ltd. Providing additional functionality with search results
US20170024764A1 (en) * 2015-07-22 2017-01-26 Facebook, Inc. Evaluating Content Items For Presentation To An Online System User Based In Part On Content External To The Online System Associated With The Content Items
US9946766B2 (en) * 2015-08-20 2018-04-17 Samsung Electronics Co., Ltd. Search result relevance based on content associated with software applications
RU2632138C2 (ru) * 2015-09-14 2017-10-02 Общество С Ограниченной Ответственностью "Яндекс" Способ (варианты) и сервер ранжирования поисковых результатов на основе параметра полезности
US9811327B2 (en) * 2015-12-21 2017-11-07 Quixey, Inc. Dependency-aware transformation of multi-function applications for on-demand execution
US10831766B2 (en) * 2015-12-21 2020-11-10 Oath Inc. Decentralized cards platform for showing contextual cards in a stream
US10915553B2 (en) * 2017-01-11 2021-02-09 Microsoft Technology Licensing, Llc Multi-application state navigation

Also Published As

Publication number Publication date
CN112868003A (zh) 2021-05-28
US20200081930A1 (en) 2020-03-12
WO2020051416A1 (en) 2020-03-12

Similar Documents

Publication Publication Date Title
US10310834B2 (en) Searching and accessing application functionality
US9626443B2 (en) Searching and accessing application functionality
US10311478B2 (en) Recommending content based on user profiles clustered by subscription data
US20170024473A1 (en) Systems and methods for identifying and analyzing internet users
KR20210091125A (ko) 사용자 참여를 사용하는 엔티티 기반 검색 시스템
US10089652B2 (en) Generating advertisements for search results that reference software applications
JP2016520913A (ja) エンティティ入札
US9836766B1 (en) Customized landing pages
JP2016517592A (ja) リアルタイム入札用インテリジェント・プラットフォーム
CN102037464A (zh) 具有最多点击的下一个对象的搜索结果
CN107924413B (zh) 分叉搜索
US20160034957A1 (en) Generating Advertisements for Search Results Associated With Entities Based on Aggregated Entity Bids
US20170193059A1 (en) Searching For Applications Based On Application Usage
US11392589B2 (en) Multi-vertical entity-based search system
US20150032769A1 (en) Generating Playlists Using Calendar, Location And Event Data
US20190253503A1 (en) Techniques for selecting additional links
JP2017068547A (ja) 情報提供装置、プログラム及び情報提供方法
US11341141B2 (en) Search system using multiple search streams
US20170103073A1 (en) Identifying Expert Reviewers
US20160034958A1 (en) Generating Advertisements For Search Results That Are Associated With Entities
US11941145B2 (en) User data system including user data fragments
US20170192977A1 (en) Searching Based On Application Usage
KR101417894B1 (ko) 관심 콘텐츠 제공을 위한 참여 검색 서비스 제공 시스템 및 방법
WO2016028339A1 (en) Systems and methods for directing access to products and services
JP6382139B2 (ja) 情報処理装置、情報処理方法、及びプログラム