KR20210002546A - 타겟 애플리케이션들을 사용하여 검색하는 기술 - Google Patents

타겟 애플리케이션들을 사용하여 검색하는 기술 Download PDF

Info

Publication number
KR20210002546A
KR20210002546A KR1020207032969A KR20207032969A KR20210002546A KR 20210002546 A KR20210002546 A KR 20210002546A KR 1020207032969 A KR1020207032969 A KR 1020207032969A KR 20207032969 A KR20207032969 A KR 20207032969A KR 20210002546 A KR20210002546 A KR 20210002546A
Authority
KR
South Korea
Prior art keywords
search
application
search results
user
partner
Prior art date
Application number
KR1020207032969A
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 KR20210002546A publication Critical patent/KR20210002546A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/14Details of searching files based on file metadata
    • G06F16/148File search processing
    • 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/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/248Presentation 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/25Integrating or interfacing systems involving database management systems
    • G06F16/258Data format conversion from or to a database
    • 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/9535Search customisation based on user profiles and personalisation
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Library & Information Science (AREA)
  • User Interface Of Digital Computer (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

사용자 디바이스는 검색 애플리케이션을 실행하는 프로세싱 유닛을 포함한다. 검색 애플리케이션을 실행하면 처리 장치가 사용자 검색 질의를 수신하고, 사용자 검색 질의를 복수의 타겟 애플리케이션들에 전송하고, 그리고 각 타겟 애플리케이션으로부터 검색 결과들의 세트를 수신하게 된다. 각 검색 결과에는 검색 결과와 연관된 타겟 애플리케이션의 애플리케이션 상태에 액세스하도록 구성된 애플리케이션 상태 액세스 데이터가 포함된다. 검색 애플리케이션을 실행하면 처리 장치가 검색 결과들의 순위를 지정하고, 순위가 지정된 검색 결과들을 디스플레이하며, 그리고 디스플레이된 검색 결과들 중 하나의 사용자 선택을 감지한다. 또한, 검색 애플리케이션을 실행하면 프로세싱 유닛이 선택된 검색 결과와 연관된 애플리케이션 상태 액세스 데이터를 선택된 검색 결과와 연관된 타겟 애플리케이션에 전송하고 애플리케이션 상태 액세스 데이터를 사용하여 액세스된 애플리케이션 상태를 디스플레이하게 된다.

Description

타겟 애플리케이션들을 사용하여 검색하는 기술
관련 출원들에 대한 상호 참조
본 출원은 2018년 4월 17일에 출원된 미국 가출원 번호 62/658,882의 이익을 청구하는 2019년 4월 16일에 출원된 미국 출원 일련 번호 16/385,202의 우선권을 주장한다. 상기 출원들은 그 전체가 본원에 참조로 포함된다.
분야
본 발명은 애플리케이션들에 대한 검색 결과들을 제공하는 것에 관한 것이다.
소프트웨어 개발자들은 상이한 컴퓨팅 디바이스들 및 운영 시스템들과 같은 다양한 플랫폼들에서 사용자가 액세스하는 웹 사이트들 및 애플리케이션들을 개발할 수 있다. 웹 사이트들/애플리케이션들의 예에는 전자 상거래 애플리케이션들, 미디어 스트리밍 애플리케이션들, 비즈니스 리뷰 애플리케이션들, 소셜 미디어 애플리케이션들 및 뉴스 애플리케이션들이 포함될 수 있다. 이러한 웹 사이트들/애플리케이션들은 사용자에게 다양한 콘텐츠를 제공할 수 있다. 예를 들어, 전자 상거래 애플리케이션은 사용자들에게 판매할 소비자 제품을 제공할 수 있다. 다른 예로, 미디어 스트리밍 애플리케이션은 사용자를 위해 영화나 노래를 재생할 수 있다.
웹 사이트 및 애플리케이션 검색 엔진은 사용자의 웹 사이트들/애플리케이션들을 검색할 수 있다. 예를 들어, 사용자는 검색 엔진에 검색 질의를 입력하고 검색 엔진 결과 페이지(SERF)에서 검색 질의에 대한 웹 사이트 및 애플리케이션 검색 결과들을 수신할 수 있다. 검색 결과들에는 판매 제품들, 이미지들, 비디오들, 기사들 및 기타 유형의 파일들을 포함한 웹/애플리케이션 페이지들에 대한 링크들이 포함될 수 있다.
일 예에서, 사용자 디바이스는 검색 애플리케이션을 포함하는 메모리 및 검색 애플리케이션을 실행하도록 구성된 프로세싱 유닛을 포함한다. 검색 애플리케이션을 실행하면 프로세싱 유닛이 사용자 검색 질의를 수신하고, 사용자 검색 질의를 메모리에 포함된 복수의 타겟 애플리케이션들에 전송하고, 그리고 각 타겟 애플리케이션들로부터 검색 결과들의 세트를 수신하게 된다. 각 검색 결과에는 검색 결과와 연관된 타겟 애플리케이션의 애플리케이션 상태에 액세스하도록 구성된 애플리케이션 상태 액세스 데이터가 포함된다. 검색 애플리케이션을 실행하면 처리 유닛이 검색 결과들의 순위를 지정하고, 순위가 지정된 검색 결과들을 디스플레이하며, 디스플레이된 검색 결과들 중 하나의 사용자 선택을 감지한다. 추가로, 검색 애플리케이션을 실행하면 프로세싱 유닛이 선택된 검색 결과와 연관된 애플리케이션 상태 액세스 데이터를 선택된 검색 결과와 연관된 타겟 애플리케이션에 전송하고 애플리케이션 상태 액세스 데이터를 사용하여 액세스된 애플리케이션 상태를 디스플레이하도록 한다.
일 예에서, 비 일시적 컴퓨터 판독 가능 매체는 컴퓨터 실행 가능 명령어를 포함하고, 상기 컴퓨터 실행 가능 명령어들은 사용자 디바이스의 프로세싱 유닛으로 하여금 사용자 검색 질의를 수신하고, 사용자 검색 질의를 사용자 디바이스에 포함된 복수의 타겟 애플리케이션들에 전송하고, 각 타겟 애플리케이션으로부터 일련의 검색 결과들을 수신하도록 한다. 각 검색 결과에는 검색 결과와 연관된 타겟 애플리케이션의 애플리케이션 상태에 액세스하도록 구성된 애플리케이션 상태 액세스 데이터가 포함된다. 컴퓨터 실행 가능 명령은 프로세싱 유닛이 검색 결과들의 순위를 정하고, 순위가 지정된 검색 결과들을 디스플레이하고, 디스플레이된 검색 결과들 중 하나의 사용자 선택을 감지하도록 한다. 추가로, 컴퓨터 실행 가능 명령어들은 프로세싱 유닛이 선택된 검색 결과와 연관된 타겟 애플리케이션에 선택된 검색 결과와 연관된 애플리케이션 상태 액세스 데이터를 전송하고, 애플리케이션 상태 액세스 데이터를 사용하여 액세스된 애플리케이션 상태를 디스플레이하도록 한다.
본 발명은 상세한 설명 및 첨부 도면들을 통해 더 깊게 이해될 것이다.
도 1은 원격 검색 시스템 및 기타 서버들과 통신할 수 있는 복수의 사용자 디바이스들을 포함하는 환경을 도시한다.
도 2는 도 1에 도시된 환경의 동작을 서술하는 예시적인 방법을 도시한다.
도 3a 내지 도 3c는 사용자 디바이스 상에 디스플레이될 수 있는 예시적인 그래픽 사용자 인터페이스(GUI)들을 도시한다.
도 4는 검색 애플리케이션과 사용자 디바이스 상의 파트너 애플리케이션 간의 통신을 나타내는 기능 블록도이다.
도 5는 예시적인 검색 애플리케이션 및 사용자 디바이스에 설치된 예시적인 파트너 애플리케이션의 세부 사항을 도시하는 기능 블록도이다.
도 6a는 개인화 및 비 개인화 검색 결과들을 포함하는 검색 결과를 생성하는 예시적인 방법을 도시한다.
도 6b 내지 도6c는 예시적인 개인화된 검색 결과들을 포함하는 GUI들을 도시한다.
도 7은 검색 시스템에 의한 콘텐츠 인덱싱/검색을 나타내는 기능 블록도이다.
도 8은 검색 결과들을 인덱싱하고 인덱싱된 결과들을 기반으로 검색 결과들을 생성하는 예시적인 방법을 나타낸다.
도 9는 파트너 애플리케이션들 및 검색 시스템으로부터 검색 결과들을 수신하는 예시적인 검색 애플리케이션 GUI를 도시한다.
도면들에서, 참조 번호들은 유사 및/또는 동일한 요소를 식별하기 위해 재사용될 수 있다.
본 발명의 검색 애플리케이션(118)은 사용자 디바이스에 설치된 파트너 애플리케이션들과 통신한다. 검색 애플리케이션(118)은 사용자의 검색 질의를 수신하고이어서 사용자의 검색 질의에 기초하여 파트너 애플리케이션들을 질의할 수 있다. 검색 애플리케이션(118)은 파트너 애플리케이션들로부터 검색 결과들을 수신하고, 검색 결과들의 순위를 매기고, 사용자 선택을 위해 검색 결과들을 렌더링할 수 있다. 검색 애플리케이션에서 사용자가 검색 결과를 선택하면 해당 애플리케이션이 검색 결과와 관련된 애플리케이션 상태(예를 들어, 애플리케이션 페이지)에 액세스할 수 있다. 파트너 애플리케이션 자체에서 제공하는 데이터를 사용하여 파트너 애플리케이션 상태에 액세스하면 파트너 애플리케이션이 적절한 애플리케이션 상태에 성공적으로 액세스할 것이라는 높은 레벨의 확실성을 보장할 수 있다. 일부 구현들에서, 검색 애플리케이션(118)은 파트너 애플리케이션과 연관된 사용자 특정 데이터에 따라 파트너 애플리케이션에 의해 개인화된 검색 결과들을 수신할 수 있다.
도 1은, 원격 검색 시스템(102)(예를 들어, 검색 서버), 디지털 배포 플랫폼들(104), 파트너 서버들(106) 및 다른 서버들(108)(예를 들어, 다른 애플리케이션 서버들 및 웹 서버들)과 통신할 수 있는 복수의 사용자 디바이스들(100)을 포함하는 환경을 도시한다. 사용자 디바이스들(100)은, 휴대용 컴퓨팅 디바이스(예를 들어, 스마트 폰 또는 태블릿), 랩톱 컴퓨팅 디바이스 및 데스크톱 컴퓨팅 디바이스와 같은, 다양한 컴퓨팅 디바이스들을 포함할 수 있다. 디바이스들, 서버들 및 시스템들은 네트워크(110)를 통해 통신할 수 있다. 네트워크(110)는 근거리 통신망(LAN), 광역 통신망(WAN) 및/또는 인터넷과 같은 다양한 유형들의 컴퓨터 네트워크들을 포함할 수 있다. 예시적인 디지털 배포 플랫폼들(104)은 Google, Inc.의 GOOGLE PLAY® 디지털 배포 플랫폼 및 Apple, Inc.의 APR STORE® 디지털 배포 플랫폼을 포함하지만 이에 제한되지 않는다.
도 1은 또한 파트너 인터페이스 시스템(102)의 소유자/운영자의 파트너들에게 소프트웨어 컴포넌트들 및 서비스들을 제공할 수 있는 파트너 인터페이스 시스템(112)을 포함한다. 예시 파트너는 사용자 디바이스들(100)에 설치하기 위한 애플리케이션들을 개발하는 애플리케이션 개발자들을 포함할 수 있다. 파트너들은 소프트웨어 컴포넌트들을 파트너 애플리케이션들(114, 122)에 통합한다. 제공된 소프트웨어 컴포넌트들은 개발자들이 자신의 애플리케이션들에 통합할 수 있는 소프트웨어 라이브러리들(예를 들어, 기능들)이 포함될 수 있다. 본 명세서에 서술된 바와 같이, 통합된 소프트웨어 컴포넌트들은 인터페이스 모듈(116)을 포함할 수 있다(예를 들어, 도 1 및 도 5 참조). 제공된 소프트웨어 컴포넌트들을 포함하는 애플리케이션들은 본 명세서에서 "파트너 애플리케이션들(partner applications)"이라고 할 수 있다.
사용자 디바이스(100)는 검색 애플리케이션(118)을 포함한다. 검색 애플리케이션(118)은 포함된 인터페이스 모듈(116)을 통해 파트너 애플리케이션(114)과 통신할 수 있다. 예를 들어, 검색 애플리케이션(118)은 사용자의 검색 질의를 수신하고 파트너 애플리케이션(114)의 인터페이스 모듈(116)에 검색 요청을 할 수 있다. 인터페이스 모듈(116)은 파트너 애플리케이션의 검색 기능으로부터 검색 결과들을 요청하고 사용자에게 디스플레이하기 위해 검색 결과들을 검색 애플리케이션(118)에 전송할 수 있다. 검색 애플리케이션(118)은 이러한 방식으로 복수의 파트너 애플리케이션들로부터 검색 결과들을 검색하고 디스플레이할 수 있다.
일부 구현들에서, 파트너 인터페이스 시스템(112)은 검색 애플리케이션(118)과 관련된 소프트웨어 및/또는 서비스들을 제공할 수 있다. 예를 들어, 파트너 인터페이스 시스템(112)은 다운로드를 통해 사용자들에게 배포하기 위해 검색 애플리케이션/위젯을 디지털 배포 플랫폼들(104)에 제공할 수 있다. 다른 예로서, 파트너 인터페이스 시스템(112)은 여기에서 검색 애플리케이션(118)에 귀속되는 특징들을 갖는 애플리케이션으로의 통합을 위해 파트너들에게 소프트웨어 컴포넌트들을 제공할 수 있다. 예를 들어, 파트너 인터페이스 시스템(112)은 통합을 위한 소프트웨어 컴포넌트들을 다른 애플리케이션들, 위젯들 및 런처들로 제공할 수 있다. 일부 구현들에서, 파트너 인터페이스 시스템(112)은 인터페이스 모듈(116) 및/또는 검색 애플리케이션(118)으로부터 데이터(예를 들어, 사용 데이터)를 수집할 수 있다. 파트너 인터페이스 시스템(112)은 또한 수집된 데이터에 기초하여 파트너들에게 분석을 제공할 수 있다.
사용자 디바이스(100)는 운영 시스템(120) 및 설치된 복수의 애플리케이션들을 포함한다. 사용자 디바이스(100)는 추가 파트너 애플리케이션들(122) 및 다른 애플리케이션들(124)을 포함한다. 다른 애플리케이션들(124)은 인터페이스 모듈(116)을 포함하지 않는 애플리케이션들을 지칭할 수 있다. 사용자 디바이스(100)는 또한 하나 이상의 웹 브라우저 애플리케이션(126)을 포함할 수 있다. 일부 구현들에서, 웹 브라우저 애플리케이션들(126)은 검색 애플리케이션(118)과 연관된 기능을 제공하는 인터페이스 모듈(116) 및/또는 컴포넌트를 포함할 수 있다. 애플리케이션 유형들의 예에는, 전자 상거래 애플리케이션들, 소셜 미디어 애플리케이션들, 비즈니스 리뷰 애플리케이션들, 은행 애플리케이션들, 게임 애플리케이션들 및 일기 예보 애플리케이션들이 포함될 수 있지만 이에 제한되지 않는다.
파트너 애플리케이션(114)은 파트너 애플리케이션의 검색 기능이 검색하고 검색 결과들에서 리턴할 수 있는 애플리케이션 콘텐츠(128)를 포함할 수 있다. 일부 경우들에서, 애플리케이션 콘텐츠(128)는 사용자 디바이스(100)에 저장된 콘텐츠("로컬 애플리케이션 콘텐츠(local application content)"라고 함)일 수 있다. 추가적으로 또는 대안적으로, 애플리케이션 콘텐츠(128)는 파트너 서버(108) 또는 다른 서버와 같이 사용자 디바이스(100)("원격 애플리케이션 콘텐츠(remote application content)"라고 함)로부터 원격으로 저장될 수 있다. 애플리케이션 콘텐츠(128) 및 콘텐츠가 저장되는 위치는 파트너 애플리케이션들 마다 다를 수 있다. 예를 들어, 레스토랑 리뷰들을 제공하는 애플리케이션에는 레스토랑 이름, 위치 및 리뷰들과 같은 레스토랑 데이터가 포함될 수 있다. 다른 예에서, 날씨 애플리케이션은 서로 다른 위치들에 대한 날씨 예보들과 같은 날씨 데이터를 포함할 수 있다. 일부 구현들에서, 파트너 애플리케이션들은 검색 결과들에 광고들을 포함할 수 있다.
일부 파트너 애플리케이션들은 사용자 디바이스 및/또는 원격 파트너 서버에서 알고리즘 방식으로 검색 결과들에 대한 콘텐츠를 생성할 수 있다. 이 애플리케이션 콘텐츠는 "로컬 생성 콘텐츠(locally generated content)" 및/또는 "원격 생성 콘텐츠(remote generated content)"라고 할 수 있다. 하나의 예에서, 계산 지식 애플리케이션 또는 응답 엔진(예를 들어, Wolfram Alpha LLC에서 개발한 Wolfram Alpha)은 검색 질의에 기초하여 수학적 계산을 수행할 수 있다. 다른 예에서, 승차 공유 애플리케이션은 사용자를 수송하기 위해 이용 가능한 차량들의 위치를 결정할 수 있다. 승차 공유 애플리케이션의 예에는 liber Technologies Inc.에서 개발한 UBER® 애플리케이션과 Lyft, Inc.에서 개발한 LYFT® 애플리케이션이 포함될 수 있다.
검색 애플리케이션(118)이 사용자 디바이스(100)에서 로컬로 작동하고 사용자 디바이스(100)에서 파트너 애플리케이션들(114)과 로컬로 통신할 수 있지만, 일부 구현들에서, 검색 애플리케이션(118)은 검색 시스템(102)과 통신할 수 있다. 예를 들어, 검색 시스템(102)은 파트너 애플리케이션들(114) 및 다른 소스들(예를 들어, 도 7 참조)로부터 검색 결과들을 인덱싱할 수 있다. 검색 시스템(102)은 또한 일부 구현들에서 검색 애플리케이션(118)에 검색 결과들을 제공할 수 있다.
검색 애플리케이션(118)에 의해 수신된 검색 결과들은 결과들을 렌더링하기 위한 디스플레이 데이터 및 포맷팅 데이터를 포함할 수 있다. 검색 결과에는 검색 결과 메타 데이터도 포함될 수 있다. 검색 결과 메타 데이터에는 검색 결과와 관련된 애플리케이션 상태에 액세스하기 위한 데이터가 포함될 수 있다. 애플리케이션 상태에 액세스하기 위한 메타 데이터는 "애플리케이션 상태 접근 데이터(application state access data)"(이하 "상태 접근 데이터(state access data)")라할 수 있다. 애플리케이션 상태는 일반적으로 애플리케이션의 페이지/화면을 참조할 수 있다. 도 3b 내지 도3c의 예에서, 도 3b의 Round Table Pizza에 대한 Restaurant Review 애플리케이션 검색 결과를 선택하는 것은, 도 3c에 도시된 Restaurant Review 네이티브 애플리케이션의 Round Table Pizza 애플리케이션 상태에 액세스한다.
사용자는 GUI에서 검색 결과들 중 하나를 선택할 수 있다. 검색 애플리케이션(118)은 선택된 검색 결과와 연관된 파트너 애플리케이션에 결과 선택 데이터를 전달할 수 있다. 파트너 애플리케이션은 결과 선택 데이터를 사용하여 검색 결과와 관련된 애플리케이션 상태를 열 수 있다. 일부 예들에서, 결과 선택 데이터는 검색 결과 메타 데이터에서 수신된 상태 액세스 데이터를 포함할 수 있다. 상태 액세스 데이터를 파트너 애플리케이션에 다시 제공하면, 파트너 애플리케이션이 적절한 애플리케이션 상태에 성공적으로 액세스할 수 있다는 높은 레벨의 확신을 얻을 수 있다.
파트너 애플리케이션에는 사용자 기본 설정 및 사용자 기록 데이터(예를 들어, 사용 데이터)와 같은 사용자 특정 데이터도 포함될 수 있다. 파트너 애플리케이션은 사용자 기본 설정 및 사용자 기록 데이터를 기반으로 개인화된 검색 결과들을 생성할 수 있다. 따라서, 일부 경우들에서, 검색 애플리케이션(118)은 복수의 파트너 애플리케이션들로부터 개인화된 검색 결과들을 검색할 수 있다. 예시적인 개인화된 검색 결과들은, 1) 이전 사용자 구매들을 기반으로 하거나 사용자의 배송 주소를 사용하는 개인화된 쇼핑 결과들(예를 들어, 도 9 참조), 2) 사용자의 요리/가격 선호도에 따른 음식점 리뷰 결과들, 및 3) 사용자들의 손익을 나타내는 주식 시장 결과들을 포함할 수 있지만, 이에 제한되지 않는다.
검색 애플리케이션(118), 인터페이스 모듈(116), 파트너 인터페이스 시스템(112) 및 검색 시스템(102)과 관련된 기술이 파트너들(예를 들어, 소프트웨어 개발자들)에게 제공되는 것으로 여기에서 서술되었지만, 이 기술은 다른 방식들로 구현될 수 있다. 예를 들어, 하나 이상의 당사자들은 상이한 배열들에 따라 여기에 서술된 기술들을 구현할 수 있다. 따라서, 파트너 인터페이스 시스템(112)은 또한 일반적으로 "인터페이스 시스템(interface system)(112)"으로 지칭될 수 있고, 파트너 애플리케이션들은 또한 "타겟 애플리케이션(target application)"으로 지칭될 수 있다.
여기에 서술된 사용자 디바이스들(100)은 검색 애플리케이션(118), 파트너 애플리케이션들 및 기타 애플리케이션들을 실행할 수 있다. 사용자 디바이스들(100)은 여기에서 사용자 디바이스들(100)에 귀속되는 기능들을 구현하는 전자 하드웨어를 포함할 수 있다. 예를 들어, 사용자 디바이스(100)는 중앙 프로세싱 유닛들(CPU) 및/또는 그래픽 프로세싱 유닛들(GPU)과 같은 하나 이상의 프로세싱 유닛들(즉, 프로세서)을 포함할 수 있다. 사용자 디바이스(100)는 또한 메모리(예를 들어, 랜덤 액세스 메모리와 같은 주 메모리), 저장 디바이스(예를 들어, 하드 디스크 드라이브 및/또는 솔리드 스테이트 드라이브) 및 네트워크 디바이스를 포함할 수 있다. 사용자 디바이스(100)의 컴포넌트들은 버스 또는 다른 통신 회로에 의해 상호 연결될 수 있다. 사용자 디바이스들(100)은 또한 추가 컴포넌트들을 포함할 수 있다.
사용자 디바이스(100)의 프로세싱 유닛은 메모리에서 컴퓨터 실행 가능 명령어들을 실행할 수 있다. 예를 들어, 프로세싱 유닛은 검색 애플리케이션, 파트너 애플리케이션들, 운영 시스템, 웹 브라우저 애플리케이션 및 추가 애플리케이션을 실행할 수 있으며, 이 모든 애플리케이션들은 컴퓨터 실행 가능 명령들로 구현될 수 있다. 사용자 디바이스(100)의 메모리 및 저장 디바이스는, 운영 시스템에서 사용되는 임의의 적절한 데이터 및/또는 사용자 디바이스에 의해 실행되는 임의의 애플리케이션들을 저장할 수 있는 하나 이상의 컴퓨터 판독 가능한 매체(예를 들어, 랜덤 액세스 메모리, 하드 디스크 드라이브들, 솔리드 스테이트 메모리 드라이브들, 플래시 메모리 드라이브들 등)를 포함할 수 있다. 일부 구현들에서, 저장 디바이스는 비 휘발성 메모리를 포함할 수 있다. 네트워크 디바이스는 네트워크와 유선 및/또는 무선 통신을 수행하도록 구성될 수 있다.
도 2는 도 1에 도시된 환경의 동작들을 서술하는 방법을 도시한다. 처음에, 블록 200에서, 파트너들은 인터페이스 모듈(116)을 자신들의 애플리케이션에 통합한다. 파트너는 파트너 인터페이스 시스템(112)으로부터 인터페이스 모듈(116)을 검색할 수 있다. 파트너 인터페이스 시스템(112)은 또한 인터페이스 모듈(116)을 파트너 자신의 애플리케이션에 통합하기 위한 지침을 파트너에게 제공할 수 있다. 예를 들어, 파트너 인터페이스 시스템(112)은 파트너들이 따를 수 있는 예시 애플리케이션과의 통합을 서술하는 서면 문서들(예를 들어, 하이퍼텍스트 마크업 언어 문서) 및 코드 예시들을 제공할 수 있다. 인터페이스 모듈(116)의 예시적인 통합은 검색 결과들이 포맷되는 방법을 제어하는 포맷팅 템플릿들을 정의하고 검색 결과들과 연관될 검색 결과 메타 데이터를 정의하는 것을 포함할 수 있다.
블록 202에서, 사용자 디바이스(100)는 디지털 배포 플랫폼(104)으로부터 파트너 애플리케이션들(114)을 다운로드하고 설치한다. 사용자 디바이스(100)는 인터페이스 모듈(116)을 통해 파트너 애플리케이션들(114)과 통신하는 검색 애플리케이션(118)을 포함할 수 있다. 검색 애플리케이션(118)은 다양한 방식들로 사용자 디바이스(100)에서 구현될 수 있다. 일부 구현들에서, 사용자는 (예를 들어, 디지털 배포 플랫폼(104)으로부터) 검색 애플리케이션(118)을 다운로드하고 사용자 디바이스(100)에 검색 애플리케이션(118)을 설치할 수 있다. 다른 구현들에서, 검색 애플리케이션(118)은 사용자가 (예를 들어, 사전로딩된 애플리케이션으로서) 사용자 디바이스(100)를 구매하기 전에 사용자 디바이스(100)에 설치될 수 있다. 일부 경우들에서, 검색 애플리케이션(118)은 "네이티브 애플리케이션(native application)" 또는 "위젯(widget)"으로 지칭될 수 있다. 일부 구현들에서, 여기에서 검색 애플리케이션(118)에 귀속되는 기능은, 런처 애플리케이션과 같은 다른 애플리케이션들에 포함될 수 있거나 또는 무선 스피커/마이크 및 검색 질의들을 수신하고 음성 검색 결과들을 전달할 수 있는 음성 명령 기능을 포함할 수 있는 스마트 스피커 디바이스 등과 같은 스마트 어시스턴트 디바이스의 일부로서 포함될 수 있다.
블록 204에서, 검색 애플리케이션(118)은 사용자가 검색 질의를 입력하는 GUI 요소(예를 들어, 질의 상자)를 제공한다. 블록 206에서, 검색 애플리케이션(118)은 검색 요청을 생성하고 검색 요청을 파트너 애플리케이션들(114)에 전송한다. 블록 208에서, 파트너 애플리케이션(114)은 수신된 검색 요청에 기초하여 사용자 디바이스(100) 및/또는 원격 파트너 서버(106)에서 검색을 수행한다. 블록 210에서, 파트너 애플리케이션들(114)은 검색 결과들을 검색 애플리케이션(118)에 전송한다. 블록들 212 내지 214에서, 검색 애플리케이션(118)은 검색 결과들을 수신하고, 검색 결과들을 처리한 다음, 검색 결과들을 사용자에게 디스플레이한다.
블록 216에서, 사용자는 검색 결과들 중 하나를 선택한다. 검색 결과의 선택에 응답하여, 검색 애플리케이션(118)은 블록 218에서 검색 결과와 연관된 파트너 애플리케이션에 결과 선택 데이터를 전송한다. 블록 220에서, 파트너 애플리케이션은 수신된 결과 선택 데이터에 기초하여 애플리케이션 상태에 액세스한다. 사용자는 액세스된 애플리케이션 상태와 상호 작용할 수 있다.
일부 구현들에서, 검색 애플리케이션(118)은 파트너 애플리케이션들(114)에 추가하여 검색 요청을 검색 시스템(102)에 전송할 수 있다. 이러한 구현들에서, 검색 시스템(102)은 검색을 수행하고 검색 결과들을 검색 애플리케이션(118)으로 리턴할 수 있다. 일부 경우들에서, 검색 시스템(102)에 의해 생성된 검색 결과들은 사용자 디바이스(100)에 설치된 파트너 애플리케이션들이 아닌 애플리케이션들에 대한 것일 수 있다. 검색 애플리케이션(118)은 웹 리소스에 액세스하거나 설치되지 않은 애플리케이션을 다운로드하기 위해 사용자를 디지털 배포 플랫폼(104)으로 리디렉션하는 것과 같은 다양한 방식들로 이러한 검색 결과들의 선택을 처리할 수 있다.
도 3a 내지 도 3c는 사용자 디바이스(100) 상에 디스플레이될 수 있는 예시적인 GUI들을 도시한다. 도 3a 내지 도 3b는 검색 애플리케이션(118)(예를 들어, 도 5의 Ul 모듈(506))에 의해 생성된 예시적인 GUI들을 도시한다. 도 3c는 도 3b의 검색 결과의 선택에 응답하여 시작된 Restaurant Review 애플리케이션에 대한 애플리케이션 상태를 도시한다.
도 3a에서, 검색 애플리케이션(118)에 의해 생성된 GUI는 질의 박스(300)를 포함한다. 도 3a에서, 사용자는 "피자(pizza)"에 대한 질의를 입력했다. 검색 애플리케이션(118)은 사용자 디바이스에 설치된 파트너 애플리케이션들을 나열하는 GUI요소를 포함한다. 구체적으로 GUI는 사용자가 Book Review 애플리케이션 및 Restaurant Review 애플리케이션을 사용하여 심층 검색(즉, 인-앱 검색)을 수행할 수 있음을 나타낼 수 있다. Book Review 애플리케이션은 책들에 대한 독자 리뷰들 및 서술들을 제공하는 가상 애플리케이션이다. Restaurant Review 애플리케이션은 레스토랑 정보와 리뷰들을 제공하는 가상 애플리케이션이다. 도 3a의 GUI에서, 사용자는 검색을 시작하기 위해 "앱들에서 심층 검색(Deep Search In Apps)" 버튼(302) 또는 검색 버튼(304)을 선택할 수 있다.
사용자가 GUI에서 검색을 시작하는 것에 응답하여, 검색 애플리케이션(118)은 검색어 "피자(PIZZA)"를 포함하는 검색 요청을 생성할 수 있다. 검색 애플리케이션(118)은 설치된 Restaurant Review 애플리케이션 및 설치된 Book Review 애플리케이션으로 검색 요청을 전송한다. Book Review 애플리케이션 및 Restaurant Review 애플리케이션은 사용자 디바이스(100) 및/또는 각각의 파트너 서버들에서 검색을 수행한다. 이후, Book Review 애플리케이션과 Restaurant Review 애플리케이션이 검색 결과를 검색 애플리케이션(118)로 리턴한다.
도 3b는 검색 애플리케이션(118)에 의해 렌더링된 검색 결과들을 예시한다. 파트너 애플리케이션들로부터 수신된 검색 결과들은 검색 애플리케이션(118)이 결과들을 렌더링하기 위해 사용한 텍스트, 이미지들 및 포맷 데이터와 같은 디스플레이 데이터를 포함할 수 있다. Restaurant Review 애플리케이션은, 1) 첫 번째 Round Table Pizza 위치, 2) 피자 펍, 3) 비토의 유명한 피자, 4) 두 번째 Round Table Pizza 위치와 같은 다양한 피자 레스토랑에 대한 검색 결과를 리턴한다. Book Review 애플리케이션은 1) 킬러 피자 책, 2) 피자 피짜 책, 3) 시크릿 피자 파티 책과 같은 문학 콘텐츠에 대한 검색 결과를 리턴한다. 사용자는 도 3b에 도시된 검색 결과들 중 임의의 것을 선택할 수 있다. 예를 들어, 사용자는 검색 결과를 터치하거나 클릭하여 선택할 수 있다.
사용자는 도 3b의 검색 결과들에서 첫 번째 Round Table Pizza 위치를 선택한다. 검색 결과의 선택에 응답하여, 검색 애플리케이션(118)은 라운드 테이브 피자 결과가 선택되었음을 나타내는 결과 선택 데이터를 Restaurant Review 애플리케이션에 전송한다. Restaurant Review 애플리케이션은 결과 선택 데이터를 수신하고 그리고 Restaurant Review 애플리케이션을 첫 번째 Round Table Pizza 위치에 대한 세보 정보들(예를 들어, 피자 이미지, 주소 및 별점 다섯개)을 제공하는 도 3c의 Round Table Pizza 애플리케이션 상태로 연다. 여기서 서술된 바와 같이, 선택된 Round Table Pizza 위치에 대한 검색 결과 데이터는 애플리케이션 상태에 액세스하기 위한 검색 결과 메타데이터를 포함할 수 있다. 예를 들어, 검색 결과 메타데이터는, Restaurant Review 애플리케이션이 레스토랑을 고유하게 식별하는 데 사용할 수 있는 첫 번째 Round Table Pizza 위치에 대한 레스토랑 ID 번호를 포함할 수 있다. Restaurant Review 애플리케이션으로 전송되는 결과 선택 데이터는 검색 결과에서 수신된 검색 결과 메타데이터를 포함할 수 있다. Restaurant Review 애플리케이션은 검색 결과 메타데이터를 사용하여 도 3c에 도시된 바와 같이 애플리케이션을 열 수 있다.
Restaurant Review 애플리케이션과 유사한 기능을 제공하는 애플리케이션의 예는 Yelp, Inc.에서 개발한 YELP® 애플리케이션이다. YELP® 애플리케이션은, 다른 특징들 중에서 비즈니스(예를 들어, 레스토랑들)에 대한 리뷰들, 비즈니스 지도들, 비즈니스 사진들 등을 제공할 수 있다. YELP® 애플리케이션은 고유한 숫자열들 및/또는 문자열들과 같은 고유한 비즈니스 식별자(ID)들을 사용하여 비즈니스에 대한 상이한 애플리케이션 상태들을 식별할 수 있다. 검색 애플리케이션(118)이 YELP® 애플리케이션과 통신하는 경우, 결과 선택 데이터에는 YELP® 애플리케이션이 애플리케이션 상태에 액세스하는 데 사용할 수 있는 고유한 비즈니스 ID 또는 기타 값들이 포함될 수 있다.
여기에서 검색 결과들은 (예를 들어, 관련성에 따라) 순위가 지정되는 것으로 설명된다. 또한, 여기에 예시된 결과들은 애플리케이션별로 그룹화된다. 각 애플리케이션 결과들의 그룹 내에서, 결과들은 목록 형식으로 디스플레이될 수 있으며, 순위가 더 높은 결과들(예를 들어, 더 관련성 높은 결과들)이 목록 맨 위에 디스플레이된다. 검색 결과들은 애플리케이션별로 그룹화될 수 있지만, 다른 구현들에서, 검색 애플리케이션은 (예를 들어, 관련성에 기초하여) 상이한 애플리케이션들의 검색 결과들을 혼합할 수 있다.
여기(예를 들어, 도 3b, 도 6b 및 도 6c)에 예시된 GUI들은 네이티브 애플리케이션 콘텐츠에 액세스하기 위한 검색 결과들을 포함하지만, 일부 경우들에서, 검색 결과들 중 일부는 웹 브라우저(126)가 웹 기반 콘텐츠에 액세스하게 하는 웹 기반 검색 결과들을 포함할 수 있다.
도 4는 검색 애플리케이션(118)과 사용자 디바이스(100) 상의 파트너 애플리케이션(114) 간의 통신을 나타낸다. 검색 애플리케이션(118)은 사용자로부터 검색 질의(400)를 수신하고 파트너 애플리케이션(114)에 전송되는 검색 요청 데이터 객체(402)(즉, 검색 요청)를 생성한다. 파트너 애플리케이션(114)은 검색을 수행하고 디스플레이를 위해 검색 애플리케이션(118)으로 전송되는 검색 결과들(예를 들어, 검색 결과 데이터 객체들(404-1, 404-2, ... , 404-N))을 생성한다. 사용자는 검색 결과들 중 하나를 선택하고, 검색 애플리케이션(118)은 애플리케이션 상태를 시작하기 위해 결과 선택 데이터(406)(예를 들어, 결과 선택 데이터 객체(406))를 파트너 애플리케이션(114)에 전송한다. 검색 요청, 검색 결과들 및 결과 선택 데이터에 대해서는 도 4를 참조하여 설명한다.
처음에, 사용자는 검색 애플리케이션(118)에 검색 질의를 입력한다. 검색 애플리케이션(118)은 검색 질의 및 기타 데이터에 기초하여 검색 요청 데이터 객체(402)(즉, 검색 요청)를 생성한다. 일부 구현들에서, 검색 애플리케이션(118)은 검색 요청에 포함할 컨텍스트 데이터를 획득할 수 있다. 컨텍스트 데이터는, 지리적 위치 데이터, 시간, 질의 기록(예를 들어, 검색 애플리케이션에서 하나 이상의 이전 질의들), 애플리케이션 사용 데이터, 사용자 모션 상태 데이터(예를 들어, 걷기, 자전거 타기, 운전), 사용자 이력 컨텍스트(예를 들어, 위의 모든 항목) 및/또는 질의의 카테고리(예를 들어, GUI에서 선택됨)와 같은 다양한 유형들의 데이터를 포함할 수 있다.
일부 구현들에서, 검색 애플리케이션(118)은 검색 애플리케이션(118)과 연관된 사용자 선호도들 및/또는 사용자 히스토리 데이터와 같은 검색 요청(402)에 사용자 특정 데이터를 포함할 수 있다. 사용자 특정 데이터의 예에는 사용자 인구 통계 데이터, 사용자 지리적 위치 선호도들, 과거 질의들, 및 요리 선호도들 또는 호텔 선호도들과 같은 카테고리별 선호도가 포함될 수 있지만, 이에 제한되지는 않는다. 검색 애플리케이션 데이터 저장소는 검색 애플리케이션과 관련된 사용자 특정 데이터를 저장할 수 있다.
파트너들은 검색 결과 데이터 객체들(404)(즉, 검색 결과 객체들)을 구성할 수 있다. 각각의 검색 결과 객체(404)는, 1) 디스플레이 데이터, 2) 포맷팅 데이터, 및 3) 검색 결과 메타 데이터(예를 들어, 애플리케이션 상태 액세스 데이터)를 포함할 수 있다. 여기서는, 단일 검색 결과 객체를 검색 결과라고 할 수 있다. 이와 같이, 검색 결과들은 복수의 검색 결과 객체들을 포함할 수 있다. 여러 검색 결과 객체들을 포함하는 검색 결과들의 서술은 서술 목적으로만 사용된다. 이와 같이, 검색 결과들은 여기에 서술된 검색 객체들과 유사할 수 있는 다양한 형식들로 파트너 애플리케이션들 및/또는 검색 시스템에서 검색 애플리케이션으로 전송될 수 있다.
디스플레이 데이터 및 포맷 데이터는 GUI에서 검색 결과들을 디스플레이하기 위해 검색 애플리케이션(118)(예를 들어, UI 모듈(506))에 의해 사용될 수 있다. 디스플레이 데이터는, 1) 파트너 애플리케이션 이름, 2) 결과 제목(예를 들어, 레스토랑 이름), 3) 결과와 관련된 상태 서술(예를 들어, 레스토랑 설명), 4) 애플리케이션과 관련된 하나 이상의 이미지들을 포함할 수 있지만, 이에 제한되지는 않는다.
포맷팅 데이터(즉, 포맷팅 데이터 객체)는 디스플레이 데이터를 렌더링하는 방법을 나타낸다. 포맷팅 데이터는 폰트 크기, 폰트 유형, 폰트의 강조/밑줄 여부, 색상, 및 폰트 및 이미지들의 위치와 같은 디스플레이 데이터에 대한 다양한 포맷팅 파라미터들을 지정할 수 있다. 예를 들어, 포맷팅 데이터는 제목, 설명 및 이미지(들)와 같은 디스플레이 데이터의 상이한 필드들에 대해 이러한 포맷팅 파라미터들을 지정할 수 있다. 경우에 따라, 포맷팅 데이터는 평가들, 리뷰 수들, 사용자가 이전에 항목을 구매했음을 나타내는 필드, 또는 사용자가 이전에 비즈니스를 방문했음을 나타내는 필드와 같이 파트너 애플리케이션에서 반환된 필드들을 지정할 수 있다. 경우에 따라, 포맷팅 데이터는 렌더링된 결과들을 생성하는데 사용되는 이미지들 또는 기타 데이터에 대한 링크들을 지정할 수 있다. 검색 애플리케이션(118)(예를 들어, UI 모듈(506))은 포맷팅 데이터를 판독하고 포맷팅 데이터를 디스플레이 데이터의 상이한 데이터 필드들에 적용한다.
포맷팅 데이터가 검색 결과들에 포함될 수 있지만, 포맷팅 데이터는 다른 방식들로 검색 애플리케이션(118)에 의해 획득될 수 있다. 일부 구현들에서, 검색 애플리케이션(118)은, 예를 들어, 파트너 애플리케이션 설치시, 파트너 애플리케이션들의 목록 작성 중 또는 다른 시간에, 검색 질의 외부의 각 파트너 애플리케이션으로부터 포맷팅 데이터를 검색할 수 있다. 일부 구현들에서, 검색 애플리케이션(118)은 파트너 서버로부터 포맷팅 데이터를 검색할 수 있다. 일부 구현들에서, 검색 애플리케이션(118)이 파트너 애플리케이션으로부터 포맷팅 데이터를 수신하지 않은 경우 검색 애플리케이션(118)이 검색 결과들을 포맷하기 위해 사용하는 디폴트 포맷팅 데이터 객체를 포함할 수 있다. 일부 구현들에서, 다중 포맷팅 데이터 객체들을 포함할 수 있고, 그리고 파트너 애플리케이션들은 검색 결과들을 포맷할 때 사용할 포맷팅 데이터 객체들을 지정할 수 있다.
파트너 애플리케이션들은 여러 시나리오들에 대해 서로 다른 포맷팅 데이터 객체들을 사용할 수 있다. 예를 들어, 비즈니스 리뷰 애플리케이션은 레스토랑 검색 결과들에 사용할 제1 포맷팅 데이터 객체와 소매점 검색 결과들에 사용할 제2 포맷팅 데이터 객체를 가질 수 있다.
일부 구현들에서, 파트너에게 제공된 인터페이스 모듈(114)은 디폴트 포맷팅 데이터 객체를 포함할 수 있다. 일부 경우들에서, 애플리케이션 개발자는 디폴트 포맷팅 데이터 객체를 사용할 수 있다. 다른 경우들에서, 애플리케이션 개발자는 포맷팅 데이터 객체가 애플리케이션에 따라 달라지도록 포맷팅 데이터 객체를 수정할 수 있다. 이러한 방식으로, 개발자들은 애플리케이션들에 대한 검색 결과들이 사용자 디바이스들에 디스플레이되는 방식을 제어할 수 있다.
일부 구현들에서, 포맷팅 데이터 객체는 검색 결과들이 (예를 들어, 검색 결과 당) 검색 결과 레벨에서 디스플레이되는 방식을 지정할 수 있다. 포맷팅 데이터 객체는, 애플리케이션에 대한 검색 결과들의 그룹이 디스플레이되는 방식과 같이 그룹 레벨에서 검색 결과들이 디스플레이되는 방식을 지정할 수도 있다. 예를 들어, 포맷팅 데이터 객체는, 순위가 높은 결과들이 순위가 낮은 결과들보다 더 눈에 잘 띄도록(예를 들어, 더 크게) 디스플레이되도록 지정할 수 있다.
검색 결과 메타 데이터에는 파트너가 정의한 데이터 필드들이 포함될 수 있다. 검색 결과 메타 데이터는 다양한 목적들로 사용될 수 있다. 일부 구현들에서, 검색 결과 메타 데이터는 파트너 애플리케이션의 상태를 지정하는 애플리케이션 상태 액세스 데이터를 포함할 수 있다. 파트너가 검색 결과를 선택하면, 나중에 상태 액세스 데이터가 결과 선택 데이터로 파트너 애플리케이션에 전송될 수 있다.
소프트웨어 개발자들은 유사한 기능과 콘텐츠를 제공하는 웹 사이트들 및 해당 네이티브 애플리케이션들을 개발할 수 있다. 예를 들어, 그러한 대응 웹사이트들 및 네이티브 애플리케이션들에는 유사한 콘텐츠를 포함하는 웹페이지들 및 애플리케이션 상태들이 포함될 수 있다. 일부 경우들에서, 검색 결과 메타데이터는 애플리케이션 상태의 웹 버전에 액세스하기 위한 웹 URL(Uniform Resource Locator)을 포함할 수 있다.
검색 결과 메타데이터에는 파트너 애플리케이션 및/또는 특정 애플리케이션 상태와 관련된 텍스트 메타데이터가 포함될 수도 있다. 예시적인 텍스트 메타데이터에는 애플리케이션 및/또는 애플리케이션 상태와 관련된 키워드들이 포함될 수 있다. 텍스트 메타데이터는 애플리케이션 상태에 액세스할 때 사용자에게 제공되는 텍스트와 같이 검색 결과와 관련된 애플리케이션 상태에 포함된 다른 텍스트도 포함할 수 있다. 검색 결과 메타데이터는 또한 애플리케이션 상태(예를 들어, 레스토랑 위치)와 관련된 엔티티의 지리적 위치와 같은, 지리적 위치 메타 데이터를 포함할 수 있다. 일부 구현들에서, 검색 애플리케이션은 검색 결과들의 순위를 매기기 위해 검색 결과 메타데이터(예를 들어, 키워드들 및 텍스트 메타데이터)를 사용할 수 있다.
특정 예에서, YELP® 애플리케이션에서 레스토랑에 대한 검색 결과는 레스토랑 이미지, 레스토랑 이름, 레스토랑의 설명(예를 들어, 위치 및 요리 유형)과 같은 디스플레이 데이터를 포함할 수 있다. 검색 결과에는 레스토랑을 고유하게 식별하는 YELP® 레스토랑 ID와 같은 검색 결과 메타 데이터가 포함될 수도 있다. 검색 결과 메타 데이터에는 요리 유형, 유기농 식품인지 여부, 요리 가격과 같은 키워드도 포함될 수 있다. 검색 결과 메타데이터에는 레스토랑의 지리적 위치도 포함될 수 있다.
사용자가 GUI에 디스플레이된 검색 결과를 선택할 때, 검색 애플리케이션(118)은 결과 선택 데이터 객체(406)(즉, 결과 선택 데이터)를 파트너 애플리케이션(114)에 전송할 수 있다. 일부 구현들에서, 결과 선택 데이터(406)는 상태 액세스 데이터와 같은 검색 결과 객체(404)로부터의 데이터를 포함할 수 있다. 일부 구현들에서, 결과 선택 객체(406)는 선택된 결과와 연관된 검색 결과 객체에서 전송된 동일한 데이터일 수 있다. 인터페이스 모듈(116)은 상태 액세스 데이터와 관련된 애플리케이션 상태에 액세스할 수 있다. 그러한 구조화된 데이터 객체(예를 들어, 상태 액세스 데이터)를 파트너 애플리케이션(114)에 다시 제공하는 것은, 애플리케이션 상태가 개인화된 데이터에 기초하더라도 파트너 애플리케이션(114)이 적절한 애플리케이션 상태에 안정적으로 액세스할 수 있도록 보장하는데 도움이 될 수 있다. Google Inc.에 의해 개발된 ANDROID® 운영 시스템의 특정 구현에서, 검색 애플리케이션(118)(예를 들어, 검색 애플리케이션(118)의 소프트웨어 개발 키트)은 선택된 데이터와 함께 의도를 타겟 애플리케이션에 전송할 수 있다. ANDROID® 운영 시스템은 의도로 지정된 타겟 애플리케이션을 열 수 있다. 타겟 애플리케이션(예를 들어, 타겟 애플리케이션의 SDK)의 인터페이스 모듈(116)은 그 후 의도의 데이터를 캡처하고 타겟 애플리케이션이 열릴 때 타겟 애플리케이션에 데이터를 전달할 수 있다.
일부 구현들에서, 검색 애플리케이션(118)은 검색 결과들을 렌더링한 후에 하나 이상의 파트너 애플리케이션들에 정보를 제공할 수 있다. 예를 들어, 검색 애플리케이션(118)은 파트너 애플리케이션들에 대한 검색 결과들이 사용자에게 보여 졌는지 여부를 하나 이상의 파트너 애플리케이션들에 나타낼 수 있다. 추가로, 검색 애플리케이션(118)은 사용자에게 보여진 검색 결과들의 상대적 순위를 파트너 애플리케이션에 표시할 수 있다. 파트너 애플리케이션들에 제공되는 이러한 정보는 파트너들이 애플리케이션의 검색 기능을 개선하는데 도움이 될 수 있다.
여기에 서술된 검색 요청(402), 검색 결과들(404) 및 결과 선택 데이터(406)에 포함된 데이터는 단지 예들일 뿐이다. 파트너 애플리케이션들의 개발자들은 사양들에 따라 검색 요청(402), 검색 결과들(404) 및 결과 선택 데이터(406)를 구성할 수 있다.
도 5는 사용자 디바이스(100)에 설치된 예시적인 검색 애플리케이션(118) 및 예시적인 파트너 애플리케이션(114)의 세부 사항들을 나타내는 기능 블록도이다. 검색 애플리케이션(118) 및 파트너 애플리케이션(114)은 여기에서 검색 애플리케이션(118) 및 파트너 애플리케이션(114)에 귀속되는 기능을 제공하는 다양한 모듈들을 포함한다. 모듈들은 예시를 위한 것이다. 이와 같이, 검색 애플리케이션(118) 및 파트너 애플리케이션(114)의 구현들은 모듈들의 상이한 배열들을 포함할 수 있다. 도 5는 모듈들 간의 통신을 나타내는 화살표를 포함한다. 일부 화살표들은 (예를 들어,도 5를 단순화하기 위해) 예시의 목적으로 생략되었다. 검색 애플리케이션 데이터 저장소(500)는 검색 애플리케이션(118)이 사용하기 위해 사용자 디바이스(100)에 저장할 수 있는 데이터를 나타낸다. 파트너 애플리케이션 데이터 저장소(502)는 파트너 애플리케이션(114)에 의해 사용하기 위해 사용자 디바이스(100)에 저장될 수 있는 데이터를 나타낸다.
검색 애플리케이션(118)은 사용자 디바이스(100)에 설치된 파트너 애플리케이션의 목록을 작성하는 목록 작성 모듈(504)을 포함한다. 일부 구현들에서, 검색 애플리케이션(118)(예를 들어, 목록 작성 모듈(504))은 설치시, 예를 들어, 검색 애플리케이션(118)의 설치 동안 및/또는 처음으로 검색 애플리케이션(118)을 시작할 때, 파트너 애플리케이션의 목록을 작성하도록 구성될 수 있다. 검색 애플리케이션(118)은 또한 새로운 파트너 애플리케이션들의 설치를 검출하고 그리고 새로운 파트너 애플리케이션들을 파트너 애플리케이션들의 목록에 추가할 수 있다. 예를 들어, 새로 설치된 파트너 애플리케이션들은 설치시 검색 애플리케이션에 알릴 수 있다.
일부 구현들에서, 검색 애플리케이션(118) 및/또는 파트너 애플리케이션(114)은 허가/인증 프로토콜을 구현할 수 있다. 예를 들어, 검색 애플리케이션(118) 및/또는 파트너 애플리케이션들은 개인화된 검색 결과들을 제공하기 위해 사용자에게 허가를 요청할 수 있다. 허가 요청은 개인화된 결과들과 같은 파트너 애플리케이션의 데이터 또는 기타 특징들에 대한 액세스 요청일 수 있다. 허가/인증 프로토콜을 구현하면 권한이 없는 애플리케이션들이 개인 정보를 획득하는 것을 방지하여 사용자 프라이버시를 보호할 수 있다.
허가는 상이한 시간에 요청할 수 있다. 일부 구현들에서, 검색 애플리케이션(118) 및/또는 파트너 애플리케이션들은 설치 동안 또는 설치 후에 (예를 들어, 사용 전) 허가를 요청할 수 있다. 일부 구현들에서, 검색 애플리케이션(118) 및/또는 파트너 애플리케이션들은 검색 애플리케이션(118)이 파트너 애플리케이션들의 목록을 구축할 때 허가를 요청할 수 있다. 일부 구현들에서, 검색 애플리케이션(118) 및/또는 파트너 애플리케이션들은 검색 요청이 파트너 애플리케이션에 이루어질 때 허가를 요청할 수 있다.
일부 구현들에서, 파트너 애플리케이션(114)은 허가 요청에 응답하여 검색 애플리케이션(118)에 자동으로 허가를 부여하도록 구성될 수 있다. 다른 구현들에서, 검색 애플리케이션(118) 및/또는 파트너 애플리케이션(114)은 사용자에게 허가 요청을 승인하도록 촉구할 수 있다. 검색 애플리케이션(118) 및/또는 파트너 애플리케이션들의 개발자들은 자동으로 허가를 제공하고 그리고/또는 사용자로부터 허가를 요청하도록 애플리케이션을 구성할 수 있다. 일부 경우들에서, 검색 애플리케이션(118)은 파트너 애플리케이션(114)에 개발자 식별자 또는 패키지 식별자를 제공할 수 있다. 파트너 애플리케이션(114)은 특정 검색 애플리케이션들의 권한들을 수락하고 다른 애플리케이션들을 거부할 수 있다. 일부 경우들에서, 디지털 서명들을 사용하여 식별을 제공할 수 있다. 일부 경우들에서, 운영 시스템이 파트너 애플리케이션에 패키지 정보를 제공할 수 있다.
사용자에게 허가를 촉구하도록 애플리케이션들이 구성된 경우, 애플리케이션들은 사용자에게 허가를 촉구하는 GUI를 생성할 수 있다. GUI는 검색 애플리케이션 (118)이 하나 이상의 파트너 애플리케이션들 상의 데이터에 액세스하기 위해 사용자의 허가가 요청되고 있음을 나타내는 텍스트를 포함할 수 있다. 예를 들어, GUI는 "검색 애플리케이션에 개인화된 콘텐츠를 제공하기 원하십니까(Do you wish to provide personalized content to the search application)?"와 같은 텍스트 요청을 사용자에게 디스플레이할 수 있다. GUI에는 사용자가 허가를 제공/거부하기 위해 선택할 수 있는 예/아니오 GUI 요소도 포함될 수 있다.
검색 애플리케이션(118)은 다양한 사용자 인터페이스 기능들을 제공하는 사용자 인터페이스 모듈(506)("UI 모듈(506)")을 포함한다. 예를 들어, UI 모듈 (506)은 사용자 디바이스(100)의 디스플레이상에 GUI를 생성할 수 있다(예를 들어, 도 3a 내지 도 3b 참조). GUI는 사용자의 검색 질의를 수신하고, 수신된 검색 결과들을 디스플레이하고, 디스플레이된 검색 결과들 중 사용자의 선택을 수신하고, 그리고 선택 데이터를 파트너 애플리케이션으로 전송할 수 있다.
검색 애플리케이션(118)은 검색 질의 및 컨텍스트 데이터를 포함할 수 있는 검색 요청을 생성하는 검색 요청 생성 모듈(508)(이하 "검색 요청 모듈(508)")을 포함한다. 검색 애플리케이션(118)은 여기에 서술된 컨텍스트를 획득할 수 있는 컨텍스트 결정 모듈(509)을 포함한다. 검색 요청 모듈(508)은 파트너 애플리케이션들의 목록에 표시된 파트너 애플리케이션들에 검색 요청을 전송할 수 있다. 예를 들어, 검색 요청 모듈(508)은 모든 파트너 애플리케이션들 또는 파트너 애플리케이션들의 서브 세트에 검색 요청을 전송할 수 있다.
일부 구현들에서, 검색 요청 모듈(508)은 검색 요청을 전송하기 전에 파트너 애플리케이션 목록에서 파트너 애플리케이션을 순위화 및/또는 필터링할 수 있다. 예를 들어, 검색 요청 모듈(508)은 질의, 컨텍스트 및/또는 사용자 특정 데이터에 기초하여 파트너 애플리케이션들의 순위를 매길 수 있다. 파트너 애플리케이션의 순위는 파트너 애플리케이션이 관련 검색 결과들(예를 들어, 질의 및 컨텍스트에 대한 관련 검색 결과들)을 제공할 가능성을 나타낼 수 있다. 예를 들어, 순위가 더 높은 파트너 애플리케이션은 순위가 낮은 파트너 애플리케이션보다 관련 검색 결과들을 제공할 가능성이 더 높을 수 있다.
검색 요청 모듈(508)은 다양한 요인들에 기초하여 파트너 애플리케이션들의 순위를 매길 수있다. 일부 구현들에서, 검색 요청 모듈(508)은 파트너 애플리케이션들의 전체 사용 또는 현재 시간 동안 파트너 애플리케이션들의 사용과 같은 애플리케이션 참여를 기반으로 파트너 애플리케이션들의 순위를 지정할 수 있다. 예를 들어, 더 자주 사용되는 파트너 애플리케이션들은 파트너 애플리케이션 목록에서 더 높은 순위를 가질 수 있다. 일부 구현들에서, 검색 애플리케이션(118)은 어떤 파트너 애플리케이션의 검색 결과들이 선택되는지 추적할 수 있다. 이러한 구현들에서, 검색 요청 모듈(508)은 검색 결과들에서 더 자주 선택되는 파트너 애플리케이션 목록에서 더 높은 파트너 애플리케이션들의 순위를 매길 수 있다. 일부 구현들에서, 검색 요청 모듈(508)은 파트너 애플리케이션들의 잠재적 응답 시간 및/또는 파트너 애플리케이션들이 사용자 디바이스(100) 및/또는 검색 시스템(102)에 가할 수 있는 잠재적 부하에 기초하여 파트너 애플리케이션들의 순위를 지정할 수도 있다. 예를 들어, 검색 요청 모듈(508)은 파트너 애플리케이션 목록에서 더 빠른 응답 시간으로 파트너 애플리케이션의 순위를 매길 수 있다. 일부 구현들에서, 검색 애플리케이션(118) 및/또는 검색 시스템(102)은 파트너 애플리케이션의 콘텐츠에 대한 의미 분석 및 지식을 사용하여 파트너 애플리케이션 목록의 순위를 매길 수 있다. 예를 들어, 검색 질의가 "음식 배달" 또는 "캐터"인 경우, 검색 애플리케이션(118) 및/또는 검색 시스템(102)은 검색 결과들에서 음식 배달과 관련된 파트너 애플리케이션의 순위를 높일 수 있다.
일부 구현들에서, 검색 요청 모듈(508)은 파트너 애플리케이션 목록을 필터링할 수 있다. 예를 들어, 검색 요청 모듈(508)은 목록에서 파트너 애플리케이션들을 필터링(즉, 제거)할 수 있다. 하나의 특정 예에서, 사용자는 검색 GUI를 사용하여 검색 애플리케이션(118)에 대한 하나 이상의 검색 카테고리들을 선택할 수 있다. 이 예에서, 검색 요청 모듈(508)은 하나 이상의 선택된 검색 카테고리들에 포함되지 않은 애플리케이션들을 필터링할 수 있다. 검색 요청 모듈(508)은 또한 카테고리별로 파트너 애플리케이션들의 순위를 매길 수 있다.
일부 구현들에서, 검색 요청 모듈(508)은 순위가 매겨진 그리고/또는 필터링 된 파트너 애플리케이션 목록을 사용하여 검색 요청을 수신해야 하는 파트너 애플리케이션들 및/또는 검색 요청을 전송할 순서를 결정할 수 있다. 일부 예들에서, 검색 요청 모듈들(508)은 (예를 들어, 병렬로) 목록에 있는 각각의 파트너 애플리케이션에 동일한 검색 요청을 전송할 수 있다. 일부 구현들에서, 검색 요청 모듈(508)은 검색 요청을 각각의 애플리케이션에 순차적으로 전송할 수 있다. 예를 들어, 검색 요청 모듈(508)은 파트너 애플리케이션이 파트너 애플리케이션 목록에서 순위가 매겨지는 순서(예를 들어, 가장 높은 순위에서 가장 낮은 순위로)로 검색 요청을 각 파트너 애플리케이션에 전송할 수 있다. 검색 요청을 순차적으로 전송하는 것은 사용자 장치(100) 및/또는 검색 시스템(102)에 대한 부하를 최소화하는데 도움이 될 수 있다.
일부 구현들에서, 검색 애플리케이션(118)(예를 들어, 결과 처리 모듈 (510))은 파트너 애플리케이션들의 순위에 기초하여 나중에 수신된 검색 결과들의 순위를 매길 수 있다. 예를 들어, 파트너 애플리케이션들의 순위는 검색 결과 순위의 구성요소로 사용할 수 있다.
파트너 애플리케이션들의 인터페이스 모듈들은 검색 요청 모듈(508)에 의해 전송된 검색 요청들을 수신한다. 인터페이스 모듈(116)은 애플리케이션 콘텐츠 검색 모듈(512)(이하 "앱 검색 모듈(512)")과 인터페이스한다. 앱 검색 모듈(512)은 파트너 애플리케이션의 검색 기능을 구현한다.
파트너는 검색 요청을 수신하기 위해 인터페이스 모듈(116)을 파트너 애플리케이션(114)과 통합한다. 파트너는 또한 인터페이스 모듈(116)을 앱 검색 모듈 기능에 통합하여 인터페이스 모듈(116)이 앱 검색 모듈(512)에 의해 생성된 검색 결과들을 수신할 수 있도록 한다. 인터페이스 모듈(116)은 검색 애플리케이션(118)(예를 들어, 결과 처리 모듈(510))에 검색 결과들을 전송한다. 인터페이스 모듈(116)은 검색 애플리케이션(118)으로의 전송을 위해 검색 결과들을 포맷할 수 있다. 예를 들어, 인터페이스 모듈(116)은 검색 결과들을 여기에 서술된 검색 결과 데이터 객체들(404)로 포맷할 수 있다.
앱 검색 모듈(512)은 개발자에 의해 제공되는 검색 기능을 나타낸다. 앱 검색 모듈 기능은 파트너 애플리케이션에서 제공하는 콘텐츠 유형에 따라 파트너 애플리케이션에 따라 다르다. 따라서, 상이한 앱 검색 모듈들은 상이한 방식들로 검색 결과들을 생성할 수 있다.
일부 예들에서, 앱 검색 모듈(512)은 수신된 검색 요청에 기초하여 로컬 애플리케이션 콘텐츠(514)를 검색한다. 추가적으로 또는 대안적으로, 앱 검색 모듈(512)은 파트너 서버(106)에서 원격 검색을 수행할 수 있다. 일부 예들에서, 앱 검색 모듈(512)은 사용자 디바이스(100) 및/또는 원격 파트너 서버(106)에서 알고리즘적으로 검색 결과들에 대한 콘텐츠(106)(예를 들어, 로컬/원격 생성 콘텐츠)를 생성할 수 있다. 검색 결과들을 생성하는데 사용되는 예시적인 요인들은 사용자 특정 데이터(516)와 함께 검색 질의 및 컨텍스트(예를 들어, 지리적 위치 및 사용자의 상태)에 대한 관련성을 포함할 수 있다.
파트너 애플리케이션들은 검색 결과들을 생성할 때(예를 들어, 순위 지정 및/또는 결과들의 필터링시) 사용자 특정 데이터를 사용할 수 있다. 사용자 특정 데이터의 예에는, 1) 파트너 애플리케이션에서 사용자가 표현한 선호 사항들, 2) 사용자가 명시적으로 표현하지 않고 파트너 애플리케이션들에 의해 결정된 선호 사항들(예를 들어, 사용자 인구 통계 데이터), 3) 파트너 애플리케이션들의 과거 사용 (예를 들어, 입력된 과거 질의들, 방문한 과거 상태들)과 같은 사용자 이력 데이터, 4) 파트너 애플리케이션들의 사용자 특정 보상들(예를 들어, 상환 가능한 보상들/쿠폰들)이 포함될 수 있지만 이에 제한되지는 않는다.
사용자 특정 데이터는 파트너 애플리케이션에 따라 다를 수 있다. 예를 들어, 비즈니스 리뷰 애플리케이션에서, 사용자는 채식 요리 및/또는 저렴한 식사를 선호한다고 지정할 수 있다. 이 예에서, 비즈니스 리뷰 애플리케이션은 레스토랑에서 제공되는 요리의 유형/가격을 기반으로 레스토랑 결과들의 순위를 매기고 그리고/또는 필터링할 수 있는 반면, 그러한 선호도들을 포함하지 않는 다른 애플리케이션들은 요리 유형/가격에 관계없이 검색 결과들을 생성할 수 있다. 다른 예에서, 사용자는 파트너 애플리케이션에서 선호하는 지리적 반경을 정의할 수 있다. 이 예에서 파트너 애플리케이션은 지리적 반경을 벗어난 검색 결과들을 필터링할 수 있는 반면 선호하는 지리적 반경이 없는 다른 애플리케이션들은 지리적 반경을 벗어난 결과들을 반환할 수 있다. 다른 예에서, 승차 공유 애플리케이션은 사용자에 의해 취해진 과거 승차를 나타내는 사용자 이력 데이터를 포함할 수 있다. 이 예에서, 승차 공유 애플리케이션은 사용자 이력 데이터에 기초하여 사용자에게 할인 보상을 제공할 수 있는 반면, 다른 승차 공유 애플리케이션들은 그렇지 않을 수 있다.
일부 구현들에서, 검색 애플리케이션(118)은 또한 1) 검색 애플리케이션 (118)에서 사용자에 의해 표현되는 선호도들(예를 들어, UI 선택된 검색 카테고리), 2) 사용자에 의한 명시적 표현없이 검색 애플리케이션(118)에 의해 결정된 선호도들, 3) 사용자 이력 데이터(예를 들어, 과거 검색 질의들)와 같은 여기에 서술된 사용자 특정 데이터를 포함할 수 있다. 일부 구현들에서, 검색 애플리케이션(118)은 검색 결과들을 생성하는 데 사용하기 위해 사용자 특정 데이터를 파트너 애플리케이션들에 전송할 수 있다. 따라서, 파트너 애플리케이션들은 검색 애플리케이션(118)과 관련된 사용자 특정 데이터에 기초하여 개인화된 검색 결과들을 생성할 수 있다.
여기에서 서술된 바와 같이, 검색 애플리케이션(118)은 파트너 애플리케이션들과 연관된 사용자 특정 데이터에 따라 개인화된 파트너 애플리케이션들로부터 검색 결과들을 수신할 수 있다. 사용자 특정 데이터를 기반으로 생성된 검색 결과들을 "개인화된 검색 결과들"이라고 할 수 있다. 일부 구현들에서, 파트너 애플리케이션은 파트너 애플리케이션 및/또는 파트너 서버들 내부에 있는 사용자 특정 데이터에 기초하여 개인화된 검색 결과들을 생성할 수 있다. 추가적으로 또는 대안적으로, 파트너 애플리케이션은 검색 애플리케이션(118)으로부터 파트너 애플리케이션으로 전송된 사용자 특정 데이터와 같은 검색 애플리케이션(118)과 연관된 사용자 특정 데이터에 기초하여 개인화된 검색 결과들을 생성할 수 있다.
앱 검색 모듈(512)은 검색 결과들을 인터페이스 모듈(116)에 전송하고, 그 다음 검색 결과들을 검색 애플리케이션(118)(예를 들어, 결과 처리 모듈(510))에 전송한다. 일부 구현들에서, 검색 애플리케이션(118)은 파트너 애플리케이션들로부터 수신된 검색 결과들의 순위를 유지할 수 있다. 다른 구현들에서는, 결과 처리 모듈(510)이 검색 결과들의 추가 순위 및/또는 필터링을 제공할 수 있다.
결과 처리 모듈(510)은 앱 참여(예를 들어, 전체 앱 사용 또는 하루 중 사용), 컨텍스트(예를 들어, 지리적 위치 및 사용자의 상태) 및/또는 사용자 특정 데이터와 같은 다양한 요인들을 기반으로 검색 결과들의 순위를 매길 수 있다. 결과 처리 모듈(510)은 또한 검색 결과들의 콘텐츠(예를 들어, 검색 결과 메타 데이터 및 디스플레이 데이터)에 기초하여 검색 결과들의 순위를 매길 수 있다. 예를 들어 검색 결과들에는 애플리케이션 이름, 검색 결과 제목, 결과 설명 및 기타 결과 메타 데이터와 같이 순위 지정에 사용할 수 있는 콘텐츠가 포함될 수 있다. 결과 처리 모듈(510)은 검색 결과들의 순위를 매기기 위해 검색 질의와 컨텐츠 간의 매칭을 수행할 수 있다.
일부 구현들에서, 검색 애플리케이션(118)(예를 들어, Ul 모듈(506))은 애플리케이션에 의해 검색 결과들을 그룹화할 수 있다. 이러한 구현들에서, 검색 애플리케이션(118)은 수신된 애플리케이션의 검색 결과들을 디스플레이할 수 있으며, 첫 번째 수신된 검색 결과들은 목록에서 더 높게 나타난다. 다른 구현들에서, 검색 애플리케이션(118)은 파트너 애플리케이션 목록에서 파트너 애플리케이션의 순위에 따라 애플리케이션의 검색 결과들을 디스플레이할 수 있다(예를 들어, 더 높은 순위의 애플리케이션은 결과에서 더 높게 나타남). 일부 구현들에서, 검색 애플리케이션(118)은 검색 결과들과 연관된 애플리케이션들의 카테고리들에 따라 검색 결과들을 그룹화할 수 있다.
검색 결과 메타데이터에는 파트너 애플리케이션에 대한 각 검색 결과들의 순위를 나타내는 순위 메타데이터가 포함될 수 있다. 일부 예들에서, 순위 데이터는 파트너 애플리케이션으로부터 전송된 검색 결과들의 순서에 의해 암시될 수 있다. 다른 예들에서, 순위 메타데이터는 파트너 애플리케이션에 대한 검색 결과들의 순위를 나타내는 숫자들을 포함할 수 있다. 예시적인 숫자들에는 순위를 나타내는 정수들이 포함될 수 있다. 다른 예시적인 숫자들에는 검색 질의 및 컨텍스트에 대한 결과들의 관련성을 나타내는 파트너 애플리케이션/서버에서 계산한 관련성 점수들이 포함될 수 있다. 예를 들어, 관련성 점수들에는 10 진수값들(예를 들어, 0.000 내지 1.000)이 포함될 수 있으며, 관련성 점수가 클수록 검색 결과가 검색 질의 및 컨텍스트와 더 관련이 있음을 나타낸다.
일부 구현들에서, 검색 애플리케이션(118)은 애플리케이션들 및/또는 검색 결과들의 순위를 매길 때 사용될 수 있는 데이터를 저장할 수 있다. 예를 들어, 검색 애플리케이션(118)은 랭킹에 사용될 사전 및/또는 키워드드을 저장할 수 있다. 하나의 특정 예에서, 각각의 파트너 애플리케이션은 키워드들이 존재하는 경우 파트너 애플리케이션 및/또는 결과들이 검색 결과들에서 더 높은 순위를 갖도록 할 수 있는 연관된 키워드들의 목록을 가질 수 있다. 예를 들어, 검색 애플리케이션(118)은 레스토랑 키워드들 및 요리 유형 키워드들과 같은 YELP® 애플리케이션과 관련된 키워드들의 목록을 포함할 수 있다. 사전 및/또는 키워드들은 파트너 서버 및/또는 파트너 애플리케이션에 의해 검색 애플리케이션에 제공될 수 있다.
검색 애플리케이션(118)은 또한 파트너 애플리케이션들과 연관된 사용자 상태 및 지리적 위치 데이터와 같은 애플리케이션들 및/또는 검색 결과들의 순위를 매기기 위해 사용되는 다양한 다른 데이터를 저장할 수 있다. 일부 구현들에서, 검색 애플리케이션은 검색 질의들을 이해하기 위해 검색 시스템(102)에 액세스할 수 있다. 예를 들어, 검색 시스템(102)은 질의들을 처리할 수 있는 질의 이해 모듈(미도시)을 포함할 수 있다.
일부 구현에서, 검색 애플리케이션(118)은 추천 결정 모듈(518)(이하 "추천 모듈(518)")을 포함할 수 있다. 추천 모듈(518)은 사용자 입력 질의 이외의 요인들에 응답하여 검색을 시작할 수 있다. 예를 들어, 추천 모듈(518)은 검색 애플리케이션(118)의 특정 페이지(예를 들어, 잠금 해제 화면)에 액세스하거나 사용자 디바이스(100)의 잠금 해제 또는 터치 스크린의 가장자리로부터 스와핑(예를 들어, 왼쪽/오른쪽/위/아래 스와핑)와 같은 검색 애플리케이션 GUI 다음에서 특정 제스처를 수행하는 것과 같이 검색 애플리케이션(118)의 특정 상태에 액세스하는 사용자에 응답하여 검색을 시작할 수 있다. 다른 예로서, 검색 애플리케이션(118)은 추천 모듈(518)이 검색을 개시하게 하는 통지를 수신할 수 있다. 알림의 예에는 속보 수신, 유행하는 주제 또는 깨우기 메시지가 포함될 수 있지만 이에 제한되지는 않는다. 검색을 야기할 수 있는 다른 예시적인 시나리오는 정의된 지리적 영역 내에 위치하는 사용자 디바이스(100)를 포함할 수 있다.
자동으로 생성된 검색 요청은 여기에 서술된 임의의 컨텍스트 또는 다른 검색 요청 데이터를 포함할 수 있다. 검색 요청은 사용자가 입력한 질의없이 생성될 수 있지만, 검색 요청 모듈(508)은 자동 생성된 질의를 포함하는 검색 요청을 생성할 수 있다. 예를 들어, 검색 요청 모듈(508)은 이전 사용자 입력 질의에 기초하여 질의를 생성할 수 있다. 다른 예로서, 검색 요청 모듈(508)은 사용자의 컨텍스트에 기초하여 질의를 생성할 수 있다. 예를 들어, 검색 요청 모듈(508)은 점심 시간에 "레스토랑"에 대한 질의를 생성할 수 있다(예를 들어, 사용자가 점심 시간에 정기적으로 레스토랑을 검색하는 경우).
일부 구현들에서, 검색 결과 데이터 객체(404)는 검색 애플리케이션(118)에 대한 다양한 명령어들 및 데이터를 포함할 수 있다. 검색 결과 데이터 객체(404)에 포함된 명령어들은 검색 결과들을 (다시)순위화하고 결과들을 표시하는 것과 관련하여 검색 애플리케이션(118)에 대한 명령어들을 포함할 수 있다. 명령어들은 파트너 애플리케이션 개발자들에게 검색 애플리케이션(118)에 의해 결과들이 처리되는 방식에 대한 제어 레벨을 제공할 수 있다. 한 예에서, 명령어들은 검색 애플리케이션(118)이 파트너 애플리케이션에 의해 제공되는 검색 결과들을 재정렬할 수 있는지를 나타낼 수 있다. 다른 예에서, 명령어들은 검색 애플리케이션(118)이 파트너 애플리케이션 렌더링을 사용하는데 필요한지를 나타낼 수 있다. 다른 예에서, 명령어들은 검색 결과 데이터 객체(404)에서 어떤 데이터 필드가 렌더링되어야 하는지를 나타낼 수 있다. 예를 들어, 명령어들은 검색 애플리케이션(118)에게 애플리케이션 제목, 애플리케이션 아이콘, 설명 및/또는 등급을 렌더링하도록 지시할 수 있다.
검색 결과 데이터 객체들(404)에 포함된 다른 데이터는 검색 결과들을 나타내는 데이터를 포함할 수 있다. 예를 들어, 검색 결과들은 검색 결과들은 개인화 여부 및/또는 검색 결과에 광고들이 포함되는지 여부를 나타내는 데이터를 포함할 수 있다. 검색 애플리케이션(118)은 데이터에 기초하여 검색 결과들이 렌더링되는 방식을 수정할 수 있다. 예를 들어, 검색 애플리케이션(118)은 개인화되지 않은 결과들보다 높은 개인화 결과들의 순위를 매길 수 있다.
여기에서 서술된 바와 같이, 검색 애플리케이션(118) 및/또는 파트너 애플리케이션들은 다양한 데이터(예를 들어, 검색 질의, 사용자 특정 데이터, 사용자 컨텍스트 등)에 기초하여 검색 결과들의 순위를 매기고 그리고/또는 필터링할 수 있다. 일부 구현들에서, 검색 애플리케이션(118) 및/또는 파트너 애플리케이션들은 각각의 검색 결과들에 대한 결과 점수(예를 들어, 관련성 점수)를 생성할 수 있다. 결과 점수(예를 들어, 0.000 내지 1.000)는 다른 검색 결과들에 대한 검색 결과의 순위를 나타낼 수 있다. 예를 들어, 검색 결과에 대한 결과 점수가 높을수록 검색 결과가 사용자에게 더 관련성이 높은 결과임을 나타낼 수 있다. 이 예에서, 더 높은 결과 점수와 관련된 검색 결과는 디스플레이된 검색 결과들에서 더 높은 순위가 매겨질 수 있다.
일 예에서, 검색 애플리케이션(118) 및/또는 파트너 애플리케이션들은 검색 질의에 기초하여 검색 결과들을 스코어링할 수 있다. 예를 들어, 검색 애플리케이션(118) 및/또는 파트너 애플리케이션들은 검색 질의와 검색 결과와 관련된 용어들 (예를 들어, 애플리케이션 이름, 엔티티 이름, 설명 용어들 및/또는 검색 메타데이터에서의 용어들) 간의 매칭들을 기반으로 검색 결과들에 점수를 매길 수 있다. 일부 예들에서, 검색 애플리케이션(118) 및/또는 파트너 애플리케이션들은 여기에 서술된 사용자 특정 데이터 및 컨텍스트 데이터(예를 들어, 지리적 위치)와 같은 추가/대안적 요인들에 기초하여 검색 결과들을 스코어링할 수 있다.
일부 구현들에서, 검색 애플리케이션(118) 및/또는 파트너 애플리케이션들은 결과 스코어들을 생성하기 위해 스코어링 기능들(예를 들어, 가중 스코어링 기능들)을 구현할 수 있다. 일부 구현들에서, 검색 애플리케이션(118) 및/또는 파트너 애플리케이션들은 검색 결과들을 점수화/필터링하는 하나 이상의 휴리스틱 모델들을 구현한다. 예를 들어, 휴리스틱 모델은 결과 점수들의 생성과 관련된 규칙들을 포함할 수 있다. 일부 구현들에서, 검색 애플리케이션(118) 및/또는 파트너 애플리케이션들은 결과 스코어들을 생성하기 위해 하나 이상의 기계 학습 스코어링 모델들을 구현할 수 있다. 기계 학습 모델들의 예들에는 베이지안 모델, 로지스틱 회귀, 신경망 및/또는 GBDT(Gradient Boosted Decision Tree)가 포함될 수 있다.
여기에서 서술된 바와 같이, 검색 애플리케이션(118)은 파트너 애플리케이션들의 순위를 매길 수 있다. 이러한 구현들에서, 검색 애플리케이션(118)이 파트너 애플리케이션별로 검색 결과들을 그룹화하는 경우, 검색 애플리케이션(118)은 각 파트너 애플리케이션에 대한 검색 결과들의 순위를 유지하고, 파트너 애플리케이션의 순위에 기초하여 렌더링된 파트너 애플리케이션 결과 그룹들의 순서를 정렬할 수 있다. 추가적으로 또는 대안적으로, 검색 애플리케이션(118)은 각 파트너 애플리케이션에 대한 검색 결과들을 재정렬할 수 있고, 또한 파트너 애플리케이션들의 순위에 따라 파트너 애플리케이션 결과 그룹들을 정렬할 수 있다. 일부 구현들에서, 검색 애플리케이션(118)은 상이한 파트너 애플리케이션들의 검색 결과들을 혼합할 수 있으며, 개별 검색 결과들은 여기에 서술된 바와 같이 각각의 파트너 애플리케이션들 및/또는 검색 애플리케이션(118)에 의해 순위가 매겨질 수 있다.
도 6a는 개인화된 검색 결과 및 개인화되지 않은 검색 결과를 포함하는 검색 결과들을 생성하는 예시적인 방법을 도시한다. 초기에, 블록 600에서, 사용자는 검색 애플리케이션(118)에 검색 질의를 입력한다. 블록 602에서, 검색 요청 모듈(508)은 검색 애플리케이션(118)과 연관된 검색 질의, 컨텍스트 및/또는 사용자 특정 데이터에 기초하여 검색 요청을 생성한다. 여기에서 서술된 것처럼, 일부 경우들에, 검색 요청 모듈(508)은 (예를 들어, 사용자 입력 검색 질의를 사용하지 않고) 검색 요청을 자동으로 생성할 수 있다.
블록 604에서, 검색 요청 모듈(508)은 검색 요청을 파트너 애플리케이션들에 전송한다. 블록 606에서, 파트너 애플리케이션들의 제1 세트는 수신된 사용자 특정 데이터 및/또는 파트너 애플리케이션에 로컬인 사용자 특정 데이터를 사용하여 개인화된 검색 결과들을 생성할 수 있다. 블록 608에서, 파트너 애플리케이션들의 제2 세트는 검색 결과들("비 개인화 검색 결과들"이라고 함)을 생성하기 위해 사용자 특정 데이터를 사용하지 않는다.
블록 610 내지 612에서, 검색 애플리케이션(118)은 개인화된 검색 결과 및 개인화되지 않은 검색 결과를 수신하고, 처리하고, 사용자에게 디스플레이한다. 블록 614에서, 사용자는 개인화된 검색 결과들 중 하나를 선택한다. 블록 616에서, 파트너 애플리케이션은 선택된 개인화된 검색 결과와 연관된 개인화된 애플리케이션 상태에 액세스한다.
도 6b 내지 도6c는 예시적인 개인화된 검색 결과들을 도시한다. 예를 들어, 도 6b는 밤부 레스토랑에 대한 링크를 통해 사용자가 20 포인트의 개인화된 보상을 사용할 수있는 예시적인 Restaurant Search 애플리케이션 검색 결과를 도시한다. 다른 예로서, 도 6c는 개인화 된 승차 정보를 포함하는 예시적인 LIBER® 애플리케이션 검색 결과를 도시한다. 구체적으로, 검색 결과는 자동차 도착이 2분 거리에 있음을 나타낸다. 또한, 검색 결과는 사용자의 개인 계정 잔액이 $30이고 이전에 2 건의 예약이 있음을 나타낸다.
일부 구현들에서, 검색 시스템(102)은 검색 결과들을 인덱싱한 다음 인덱싱 된 콘텐츠에 기초하여 나중에 사용자 디바이스들(100)에 검색 결과들을 제공할 수 있다. 예를 들어, 검색 시스템(102)은 사용자 디바이스들(100)에 설치되지 않은 애플리케이션들에 대한 검색 결과들을 사용자 디바이스들(100)에 제공할 수 있다. 특정 예에서, 검색 애플리케이션(118)이 사용자로부터 질의를 수신하면, 검색 애플리케이션(118)(예를 들어, 검색 요청 모듈(508))은 사용자 디바이스(100)에 설치되지 않은 애플리케이션들에 대한 결과들을 수신하기 위해 검색 시스템(102)에 검색 질의를 전송할 수 있다. 이 특정 예에서, 검색 애플리케이션(118)은 설치된 파트너 애플리케이션들로부터의 검색 결과들과 함께 검색 시스템으로부터 수신된 설치되지 않은 애플리케이션들에 대한 검색 결과들을 디스플레이할 수 있다.
도 7은 검색 시스템(102)에 의한 콘텐츠 인덱싱을 나타내는 기능 블록도이다. 도 7에서, 상위 사용자 디바이스(100-1)는 파트너 애플리케이션들에 대한 검색 결과들을 생성한 과거 사용자 디바이스들으 나타낸다. 과거의 사용자 디바이스들은 인덱싱을 위해 검색 결과들을 검색 시스템에 보낸다. 하위 사용자 디바이스(100-2)는 검색 시스템(102)에 검색 요청을 전송하고, 과거 검색 결과들의 인덱싱에 기초하여 검색 결과들을 수신한다.
검색 시스템(102)은 인덱싱 기능을 제공하는 인덱싱 모듈(700)을 포함한다. 검색 시스템(102)은 파트너 애플리케이션 검색 결과들뿐만 아니라 웹 서버(108)와 같은 다른 소스들로부터의 콘텐츠를 인덱싱할 수 있다. 예를 들어, 검색 시스템(102)(예를 들어, 인덱싱 모듈(700))은 웹 사이트들/웹 앱들과 같은 웹 콘텐츠를 크롤링하고 인덱싱하는 웹 크롤러를 포함할 수 있다.
검색 애플리케이션(118)은 검색 결과들을 생성하기 위해 사용된 검색 질의들 및 컨텍스트와 함께 파트너 애플리케이션 검색 결과들에 포함된 임의의 데이터를 검색 시스템(102)에 전송할 수 있다. 인덱싱 모듈(700)은 수신된 데이터를 처리하고 인덱싱한다. 일부 구현들에서, 인덱싱 모듈(700)은 사용자 디바이스로부터 수신된 검색 결과 데이터를 인덱싱할 수 있다. 예를 들어, 인덱싱 모듈(700)은 디스플레이 데이터, 포맷팅 데이터 및 결과 메타데이터를 인덱싱할 수 있다. 인덱싱 모듈(700)은 검색 결과들을 생성하기 위해 파트너 애플리케이션에 의해 사용되는 검색 질의 및 컨텍스트와 함께 이러한 데이터를 인덱싱할 수 있다.
여기에서 서술된 바와 같이, 일부 경우들에서, 검색 결과 메타데이터는 또한 애플리케이션 상태의 웹 버전에 액세스하기 위한 웹 URL을 포함할 수 있다. 이러한 경우들에서, 인덱싱 모듈(700)은 웹 URL을 사용하여 애플리케이션 상태의 웹 버전에 액세스할 수 있다. 인덱싱 모듈(700)은 액세스된 웹 데이터를 인덱싱할 수 있다.
검색 시스템(102)은 검색 데이터 저장소(702) 및 개인화 데이터 저장소(704)와 같은 복수의 데이터 저장소들을 포함할 수 있다. 검색 데이터 저장소(702)는 인덱싱된 검색 결과들(예를 들어, 검색 인덱스)와 관련된 데이터를 포함한다. 검색 데이터 저장소(702)는 검색 결과들에 포함된 데이터 및/또는 추가 인덱싱된 콘텐츠(예를 들어, 웹 콘텐츠)와 같은 여기에 서술된 임의의 데이터를 포함할 수 있다. 일부 구현들에서, 데이터는 필드 검색들을 허용하는 다양한 필드들을 포함하는 스키마를 따를 수 있다.
검색 시스템(102)은 검색 시스템(102)의 검색 기능을 수행하는 검색 모듈(706)을 포함한다. 일부 구현들에서, 사용자 디바이스(100-2)(예를 들어, 검색 요청 모듈(508))는 검색 시스템(102)으로부터 검색 결과들을 요청할 수 있다. 예를 들어, 검색 요청 모듈(508)은 검색 요청을 검색 시스템(102)에 전송할 수 있다. 일부 경우들에서, 검색 요청에 파트너 애플리케이션들에 전송된 다른 검색 요청들과 동일한 데이터가 포함될 수 있다. 다른 경우들에서, 검색 요청은 사용자 디바이스(100-2)에 설치된 파트너 애플리케이션들의 목록을 포함할 수 있다. 이러한 경우들에서, 검색 모듈(706)은 사용자 디바이스(100-2)에 설치된 파트너 애플리케이션들과 관련된 콘텐츠의 검색을 자제할 수 있다. 검색 모듈(706)은 검색 애플리케이션(118) 및 파트너 애플리케이션들에 의한 랭킹 및/또는 필터링과 관련하여 서술된 유사한 요소들에 기초하여 검색 결과들을 순위화 및/또는 필터링할 수 있다.
검색 모듈(706)은 다양한 검색 결과들을 반환할 수 있다. 일부 구현들에서, 검색 모듈(706)은 검색 요청에 관련된 애플리케이션들을 다운로드하기 위해 디지털 배포 플랫폼(104)에 액세스하기 위한 검색 결과들을 제공할 수 있다. 일부 구현들에서, 검색 시스템(102)은 사용자의 웹 브라우저를 파트너 애플리케이션들의 웹 버전들로 안내하는 검색 결과들을 제공할 수 있다. 일부 구현들에서, 검색 시스템(102)은 검색 결과를 제공하여 사용자 디바이스(100-2)가 애플리케이션 또는 애플리케이션의 일부(예를 들어, ANDROID®에 대한 인스턴트 앱들)를 다운로드한 다음 검색 결과와 관련된 애플리케이션 상태에 액세스하게 한다.
검색 시스템(102)에 대한 전반적인 부담을 줄이기 위해, 검색 애플리케이션(118)은 인덱싱을 위해 검색 시스템(102)에 전송할 검색 결과들을 선택하도록 구성될 수 있다. 일부 구현들에서, 사용자 디바이스(100)(예를 들어, 검색 애플리케이션(118))는 검색 시스템이 검색 결과를 포함하는지를 결정하기 위해 검색 시스템(102)에 질의할 수 있다. 검색 시스템(102)이 검색 결과들이 이전에 인덱싱되지 않았다고 결정하면, 검색 시스템(102)은 검색 애플리케이션(118)으로부터 검색 결과들을 요청할 수 있다. 일부 경우들에서, 파트너 애플리케이션들은 검색 결과가 인덱싱되어야하는지 여부를 검색 애플리케이션(118)에 표시할 수 있다.
일부 경우들에서, 검색 시스템(102)의 소유자들/운영자들은 파트너 서버들(108) 및 다른 서버들(108)의 소유자들과 같은 콘텐츠 소유자들과 파트너 관계를 맺을 수 있다. 이러한 경우들에서, 검색 시스템(102)(예를 들어, 인덱싱 모듈 (700))은 파트너 애플리케이션들 및 다른 애플리케이션들/웹 사이트들과 관련된 콘텐츠를 검색하고 인덱싱할 수 있다. 이러한 방식으로 처음에 콘텐츠를 검색하고 인덱싱하는 것은, 사용자 디바이스들(100)로부터 검색 결과들을 인덱싱하는 것보다 더 빠르게 검색 데이터 저장소(702)를 구축하는데 도움이 될 수 있다.
일부 구현들에서, 검색 시스템(102)은 검색 시스템(102)(예를 들어, 개인화 데이터 저장소(704))에 저장된 데이터에 기초하여 사용자에 대한 결과들을 개인화할 수 있다. 예를 들어, 검색 시스템(102)은 설치되지 않은 애플리케이션들에 대한 개인화된 결과들을 제공할 수 있다. 검색 시스템(102)은 사용자에 의해 생성된 검색 요청들 및 자동으로 생성된 검색 요청들에 응답하여 개인화된 검색 결과들을 제공할 수 있다. 일부 예들에서, 개인화를 사용하여, 검색 시스템(102)은 사용자에 대한 잠재적인 검색 결과들의 수를 좁힐 수 있다. 검색 시스템(102)은 이전 검색들 및 선택들과 같은 사용자를 위한 개인화된 데이터를 저장할 수 있다. 이전 선택들은 사용자의 애플리케이션 선호도와 선호하는 컨텐츠 유형을 나타낼 수 있다.
도 8은 검색 결과들을 인덱싱하고 인덱싱된 결과들에 기초하여 검색 결과들을 생성하는 예시적인 방법을 도시한다. 처음에, 블록(800)에서, 검색 애플리케이션은 사용자 디바이스들(100)에서 검색들을 수행하고, 검색 결과들을 인덱싱하기 위해 검색 시스템(102)에 전송한다. 블록 802에서, 검색 시스템은 수신된 검색 결과들을 인덱싱한다.
나중에, 블록 804에서, 사용자는 검색 애플리케이션에 검색 질의를 입력한다. 블록 806에서, 검색 애플리케이션(118)은 검색 요청을 생성하고, 검색 요청을 파트너 애플리케이션들(114) 및 검색 시스템(102)에 전송한다. 블록 808에서, 파트너 애플리케이션들은 검색 결과들을 검색 애플리케이션에 리턴한다. 블록 810에서, 검색 시스템(102)은 인덱싱된 콘텐츠를 검색하고 검색 결과들을 생성한다. 블록 812에서, 검색 시스템(102)은 생성된 검색 결과들을 검색 애플리케이션(118)으로 다시 전송한다. 블록 814에서, 검색 애플리케이션(118)은 파트너 애플리케이션들(114) 및 검색 시스템(102)으로부터 수신된 검색 결과들을 처리하고 디스플레이할 수 있다. 비록 도 8은 검색 시스템(102) 이전에 검색 결과들을 리턴하는 파트너 애플리케이션들을 도시하지만, 검색 애플리케이션에 의해 검색 결과들이 수신되는 시간은 달라질 수 있다.
도 9는 설치된 제1 쇼핑 애플리케이션(902-1)(쇼핑 앱 1), 설치된 제2 쇼핑 애플리케이션(902-2)(쇼핑 앱 2) 및 원격 검색 시스템(102)으로부터 검색 결과들을 수신하는 검색 애플리케이션(118)을 포함하는 예시적인 사용자 디바이스(900)를 도시한다. 도 9에서, 검색 애플리케이션(118)은 "종이 타월들"에 대한 사용자 검색 질의를 수신한다. 검색 애플리케이션(118)은 제1 및 제2 쇼핑 애플리케이션(902-1, 902-2)에 질의한다. 검색 애플리케이션(118)은 또한 검색 시스템(102)에 질의한다. 검색 애플리케이션(118)은 제1 쇼핑 애플리케이션(902-1)으로부터 개인화된 검색 결과들을 수신한다. 구체적으로, 검색 애플리케이션(118)은 사용자가 제1 쇼핑 애플리케이션(902-1)에서 이전에 브랜드 A 종이 타월들을 구매했음을 사용자에게 나타내는 브랜드 A 종이 타월들에 대한 검색 결과를 수신한다. 개인화된 검색 결과는 사용자의 현재 위치가 아닌 저장된 배송 위치와 같은 사용자의 배송 위치에 대한 배송비도 나타낸다. 제1 쇼핑 애플리케이션(902-1) 및 제2 쇼핑 애플리케이션 (902-2)은 또한 브랜드 B, 브랜드 C 및 브랜드 D 종이 타월에 대한 개인화되지 않은 결과를 리턴한다.
검색 애플리케이션(118)은 검색 시스템(102)으로부터 쇼핑 애플리케이션 3에 대한 검색 결과를 수신한다. 쇼핑 애플리케이션 3은 사용자 디바이스(900)에 설치되어 있지 않다. 검색 애플리케이션(118)은 사용자에게 쇼핑 애플리케이션 3 웹 사이트에서 브랜드 E 종이 타월 웹 페이지를 여는 옵션을 제공한다. 예를 들어, 사용자는 브랜드 E 종이 타월 웹 페이지에 액세스하기 위해 "웹" GUI 요소를 선택(예를 들어, 터치/클릭)할 수 있다. 검색 애플리케이션(118)은 또한 "앱" GUI 요소를 선택하여 브랜드 E 종이 타월 애플리케이션 상태에 액세스하는 옵션을 사용자에게 제공한다. 이 예에서, 사용자가 "앱" GUI 요소에 선택하는 것에 응답하여, 사용자 디바이스(900)는 디지털 배포 플랫폼(104)에서 쇼핑 앱 3을 다운로드하고 쇼핑 앱 3을 설치한 다음 설치된 쇼핑 앱 3의 브랜드 E 페이지에 액세스할 수 있다. 검색 시스템(102)에 의해 제공된 검색 결과들은 하나 이상의 사용자 디바이스에 설치된 검색 애플리케이션들을 통해 하나 이상의 사용자 디바이스로부터 수신된 검색 결과들을 인덱싱함으로써 획득될 수 있다는 점에 유의한다.
여기에 예시된 모듈들 및 데이터 저장소들은 본 발명의 시스템들, 디바이스들 및 애플리케이션들에 포함될 수 있는 특징들을 나타낸다. 여기에 서술된 모듈들 및 데이터 저장소들은 전자 하드웨어, 소프트웨어, 펌웨어 또는 이들의 임의의 조합으로 구현될 수 있다. 서로 다른 기능들을 별도의 모듈 및 데이터 저장소들로 묘사한다고해서 모듈들 및 데이터 저장소들이 공통 또는 별도의 전자 하드웨어 컴포넌트 또는 소프트웨어 컴포넌트에 의해 구현되는지 여부를 반드시 의미하지는 않는다. 일부 구현들에서, 여기에 묘사된 하나 이상의 모듈들 및 데이터 저장소들과 관련된 특징들은 공통 전자 하드웨어 컴포넌트 및 소프트웨어 컴포넌트에 의해 실현될 수 있다. 일부 구현들에서, 여기에 묘사된 하나 이상의 모듈들 및 데이터 저장소들과 관련된 특징들은 별도의 전자 하드웨어 컴포넌트 및 소프트웨어 컴포넌트에 의해 실현될 수 있다.
모듈들 및 데이터 저장소들은 하나 이상의 처리 장치들, 하나 이상의 메모리 컴포넌트들, 하나 이상의 입력/출력(I/O) 컴포넌트들 및 상호 연결 컴포넌트들을 포함하지만 이에 제한되지 않는 전자 하드웨어 컴포넌트 및 소프트웨어 컴포넌트에 의해 구현될 수 있다. 상호 연결 컴포넌트들은 하나 이상의 프로세싱 유닛, 하나 이상의 메모리 컴포넌트 및 하나 이상의 I/O 구성 요소 사이의 통신을 제공하도록 구성될 수 있다. 예를 들어, 상호 연결 컴포넌트들은 전자 컴포넌트들 사이에서 데이터를 전송하도록 구성된 하나 이상의 버스들을 포함할 수 있다. 상호 접속 컴포넌트들 또한 전자 컴포넌트들 사이의 통신을 제어하도록 구성된 제어 회로들(예를 들어, 메모리 제어기 및/또는 I/O 제어기)를 포함할 수 있다.
하나 이상의 프로세싱 유닛들은 하나 이상의 CPU들, GPU들, 디지털 신호 프로세싱 유닛(DSP)들, 또는 다른 프로세싱 유닛들을 포함할 수 있다. 하나 이상의 프로세싱 유닛들은 메모리 컴포넌트들 및 I/O 컴포넌트들과 통신하도록 구성될 수 있다. 예를 들어, 하나 이상의 프로세싱 유닛들은 상호 접속 컴포넌트들을 통해 메모리 컴포넌트들 및 I/O 컴포넌트들과 통신하도록 구성될 수 있다.
메모리 컴포넌트(예를 들어, 주 메모리 및/또는 저장 디바이스)는 임의의 휘발성 또는 비 휘발성 매체를 포함할 수 있다. 예를 들어, 메모리는, RAM(Random Access Memory), ROM(Read-Only Memory), NVRAM(Non-Volatile RAM), EEPROM (Electrically-Erasable Programmable ROM), 플래시 메모리, HDD(Hard Disk Drive), 자기 테이프 드라이브, 광학 저장 기술(예를 들어, 컴팩트 디스크, 디지털 다용도 디스크 및/또는 블루-레이 디스크) 또는 기타 메모리 컴포넌트들과 같은 전기 매체, 자기 매체 및/또는 광학 매체를 포함할 수 있지만, 이에 제한되지는 않는다.
메모리 컴포넌트들은 여기에 서술된 데이터를 포함(예를 들어, 저장)할 수 있다. 예를 들어, 메모리 컴포넌트들은 데이터 저장소들에 포함된 데이터를 포함할 수 있다. 메모리 컴포넌트들은 또한 하나 이상의 처리 장치들 의해 실행될 수 있는 명령어들을 포함할 수 있다. 예를 들어, 메모리는 하나 이상의 처리 장치에 의해 실행될 때 하나 이상의 처리 장치가 여기에 설명된 모듈들 및 데이터 저장소들에 기인한 다양한 기능들을 수행하게 하는 컴퓨터 판독 가능 명령어들을 포함할 수 있다.
I/O 컴포넌트들은 다양한 서로 다른 디바이스들과의 통신을 제공하는 전자 하드웨어 및 소프트웨어를 지칭할 수 있다. 예를 들어, I/O 컴포넌트들은 다른 디바이스들과 하나 이상의 처리 장치들 및 메모리 컴포넌트들 간의 통신을 제공할 수 있다. 일부 예들에서, I/O 컴포넌트들은 컴퓨터 네트워크와 통신하도록 구성될 수 있다. 예를 들어, I/O 컴포넌트들은 여러 상이한 물리적 연결들, 무선 연결들 및 프로토콜들을 사용하여 컴퓨터 네트워크를 통해 데이터를 교환하도록 구성될 수 있다. I/O 컴포넌트들에는, 네트워크 인터페이스 컴포넌트들(예를 들어, 네트워크 인터페이스 제어기), 리피터들, 네트워크 브리지들, 네트워크 스위치들, 라우터들 및 방화벽들이 포함될 수 있지만 이에 제한되지 않는다. 일부 예들에서, I/O 컴포넌트들에는 디스플레이 스크린들, 키보드들, 포인터 디바이스들(예를 들어, 마우스), 터치 스크린들, 스피커 및 마이크들을 포함하지만 이에 제한되지 않는 다양한 휴먼 인터페이스 디바이스들과 통신하도록 구성된 하드웨어 및 소프트웨어를 포함할 수 있다. 일부 예들에서, I/O 컴포넌트들은 외부 메모리(예를 들어, 외부 HDD들)와 같은 추가 디바이스들과 통신하도록 구성된 하드웨어 및 소프트웨어를 포함할 수 있다.

Claims (15)

  1. 컴퓨터 실행가능 명령어들을 포함하는 비 일시적인 컴퓨터 판독가능 매체로서,
    상기 컴퓨터 실행가능 명령어들은 사용자 디바이스의 프로세싱 유닛으로 하여금:
    사용자 검색 질의를 수신하고;
    상기 사용자 검색 질의를 상기 사용자 디바이스에 포함된 복수의 타겟 애플리케이션들에게 전송하고;
    각각의 타겟 애플리케이션들로부터 검색 결과들의 세트를 수신하고, 각각의 검색 결과는 상기 검색 결과와 연관된 상기 타겟 애플리케이션의 애플리케이션 상태에 액세스하도록 구성된 애플리케이션 상태 액세스 데이터를 포함하고;
    상기 검색 결과들의 순위를 지정하고;
    상기 순위지정된 검색 결과들을 디스플레이하고;
    상기 디스플레이된 검색 결과들 중 하나의 사용자 선택을 감지하고;
    상기 선택된 검색 결과와 연관된 상기 애플리케이션 상태 액세스 데이터를 상기 선택된 검색 결과와 연관된 상기 타겟 애플리케이션에 전송하고; 그리고
    상기 애플리케이션 상태 액세스 데이터를 사용하여 액세스한 상기 애플리케이션 상태를 디스플레이하도록 하는 것을 특징으로 하는
    컴퓨터 판독가능 매체.
  2. 제1항에 있어서,
    상기 프로세싱 유닛은 상기 사용자 디바이스에 상기 타겟 애플리케이션을 설치하도록 구성되고, 그리고 상기 컴퓨터 실행가능 명령어들은 상기 프로세싱 유닛으로 하여금 상기 복수의 타겟 애플리케이션에 상기 사용자 검색 질의를 전송하기 전에 상기 사용자 디바이스에 포함된 상기 타겟 애플리케이션들의 목록을 구축하도록 하는 것을 특징으로 하는
    컴퓨터 판독가능 매체.
  3. 제1항에 있어서,
    제1 타겟 애플리케이션과 연관된 제1 세트의 검색 결과들은, 상기 제1 타겟 애플리케이션과의 사용자의 상호 작용들에 기초하여 상기 제1 타겟 애플리케이션에 의해 개인화되고, 그리고 제2 타겟 애플리케이션과 연관된 제2 세트의 검색 결과들은 상기 제2 타겟 애플리케이션과의 사용자의 상호 작용들에 기초하여 상기 제2 타겟 애플리케이션에 의해 개인화되지 않는 것을 특징으로 하는
    컴퓨터 판독가능 매체.
  4. 제1항에 있어서,
    상기 명령어들은 상기 프로세싱 유닛으로 하여금 사용자 특정 데이터를 제1 타겟 애플리케이션으로 전송하도록 하고, 그리고 상기 제1 타겟 애플리케이션과 연관된 검색 결과들의 세트는 상기 수신된 사용자 특정 데이터에 기초하여 상기 제1 타겟 애플리케이션에 의해 개인화되는 것을 특징으로 하는
    컴퓨터 판독가능 매체.
  5. 제1항에 있어서,
    상기 명령어들은 상기 프로세싱 유닛으로 하여금 상기 사용자 검색 질의에 기초하여 상기 검색 결과의 순위를 정하게 하는 것을 특징으로 하는
    컴퓨터 판독가능 매체.
  6. 제1항에 있어서,
    각각의 검색 결과는 상기 연관된 애플리케이션 상태 액세스 데이터에 의해 액세스된 상기 애플리케이션 상태에 대한 검색 메타데이터를 포함하고, 그리고 상기 명령어들은 상기 프로세싱 유닛으로 하여금 상기 사용자 검색 질의 및 상기 검색 결과들과 연관된 검색 메타데이터에 기초하여 상기 검색 결과들의 순위를 정하도록 하는 것을 특징으로 하는
    컴퓨터 판독가능 매체.
  7. 제1항에 있어서,
    상기 명령어들은, 상기 프로세싱 유닛으로 하여금:
    사용자의 타겟 애플리케이션들의 사용 이력에 기초하여 상기 타겟 애플리케이션의 순위를 정하고; 그리고
    상기 타겟 애플리케이션들의 순위에 기초하여 순위가 정해진 검색 결과들을 디스플레이하도록 하는 것을 특징으로 하는
    컴퓨터 판독가능 매체.
  8. 제7항에 있어서,
    상기 명령어들은 상기 프로세싱 유닛으로 하여금 각각의 타겟 애플리케이션에 대해 디스플레이된 검색 결과들을 그룹화하도록 하고, 그리고 검색 결과들의 그룹들은 각각의 타겟 애플리케이션들의 순위에 따라 정렬되는 것을 특징으로 하는
    컴퓨터 판독가능 매체.
  9. 제7항에 있어서,
    상기 명령어들은 상기 프로세싱 유닛으로 하여금 상기 검색 결과들의 순위 및 상기 타겟 애플리케이션들의 순위에 기초하여 상이한 타겟 애플리케이션들로부터의 디스플레이된 검색 결과들을 혼합하도록 하는 것을 특징으로 하는
    컴퓨터 판독가능 매체.
  10. 제7항에 있어서,
    상기 명령어들은 상기 프로세싱 유닛으로 하여금 상기 사용자 검색 질의에 기초하여 상기 검색 결과들의 순위를 정하도록 하는 것을 특징으로 하는
    컴퓨터 판독가능 매체.
  11. 제1항에 있어서,
    제1 복수의 수신된 검색 결과들 각각은 상기 사용자 디바이스에 저장된 로컬 콘텐츠에 액세스하도록 구성된 애플리케이션 상태 액세스 데이터를 포함하고, 그리고 제2 복수의 수신된 검색 결과들 각각은 원격 콘텐츠에 액세스하도록 구성된 애플리케이션 상태 액세스 데이터를 포함하는 것을 특징으로 하는
    컴퓨터 판독가능 매체.
  12. 제1항에 있어서,
    상기 수신된 애플리케이션 상태 액세스 데이터의 포맷은, 상기 애플리케이션 상태 액세스 데이터를 생성한 각각의 타겟 애플리케이션에 의해 설정되는 것을 특징으로 하는
    컴퓨터 판독가능 매체.
  13. 제1항에 있어서,
    각 검색 결과는 디스플레이 데이터 및 포맷팅 데이터를 포함하고, 상기 디스플레이 데이터는 상기 검색 결과와 연관된 텍스트를 포함하고, 상기 포맷팅 데이터는 상기 검색 결과에 대한 디스플레이 포맷을 나타내고, 그리고 상기 명령어들은 상기 프로세싱 유닛이 상기 포맷팅 데이터에 따라 순위가 정해진 검색 결과들을 디스플레이하도록 하는 것을 특징으로 하는
    컴퓨터 판독가능 매체.
  14. 제1항에 있어서,
    상기 명령어들은 상기 프로세싱 유닛으로 하여금:
    원격 검색 시스템으로, 상기 사용자 검색 질의 및 상기 타겟 애플리케이션들의 목록을 전송하고;
    상기 사용자 디바이스에 포함되지 않은 애플리케이션들 대해 상기 원격 검색 시스템에서 추가 검색 결과들을 수신하고;
    상기 타겟 애플리케이션들에서 수신된 검색 결과들와 함께 추가 검색 결과들의 순위를 정하며; 그리고
    상기 타겟 애플리케이션들에서 수신된 순위가 정해진 검색 결과들과 함께 순위가 정해진 추가 검색 결과들을 디스플레이하는 것을 특징으로 하는
    컴퓨터 판독가능 매체.
  15. 제1항에 있어서,
    상기 명령어들은 상기 프로세싱 유닛으로 하여금:
    상기 검색 결과들의 서브세트를 선택하고; 그리고
    인덱싱을 위해 상기 검색 결과들의 서브세트를 원격 검색 시스템으로 전송하는 것을 특징으로 하는
    컴퓨터 판독가능 매체.
KR1020207032969A 2018-04-17 2019-04-16 타겟 애플리케이션들을 사용하여 검색하는 기술 KR20210002546A (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201862658882P 2018-04-17 2018-04-17
US62/658,882 2018-04-17
PCT/US2019/027612 WO2019204263A1 (en) 2018-04-17 2019-04-16 Techniques for searching using target applications
US16/385,202 2019-04-16
US16/385,202 US11216471B2 (en) 2018-04-17 2019-04-16 Techniques for searching using target applications

Publications (1)

Publication Number Publication Date
KR20210002546A true KR20210002546A (ko) 2021-01-08

Family

ID=68161647

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020207032969A KR20210002546A (ko) 2018-04-17 2019-04-16 타겟 애플리케이션들을 사용하여 검색하는 기술

Country Status (4)

Country Link
US (2) US11216471B2 (ko)
KR (1) KR20210002546A (ko)
CN (1) CN112136122A (ko)
WO (1) WO2019204263A1 (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111046265B (zh) * 2019-12-11 2023-08-29 北京小米移动软件有限公司 卡片数据显示方法、装置、设备及存储介质
US11763231B2 (en) * 2020-05-27 2023-09-19 Vmware, Inc. Workflow service application stating
US11593155B2 (en) * 2020-05-27 2023-02-28 Vmware Inc. Workflow service application networking
US11710147B2 (en) * 2021-01-04 2023-07-25 Capital One Services, Llc System and method for scanning a mobile computing device for installed applications
US20230196033A1 (en) * 2021-12-20 2023-06-22 Rovi Guides, Inc. Methods and systems for responding to a natural language query

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7376650B1 (en) * 2003-09-12 2008-05-20 Microsoft Corporation Method and system for redirecting a request using redirection patterns
US20090172024A1 (en) * 2007-12-31 2009-07-02 Industrial Technology Research Institute Systems and methods for collecting and analyzing business intelligence data
CA2763668A1 (en) * 2009-05-27 2010-12-02 Google Inc. Computer application data in search results
US20140358887A1 (en) * 2013-05-29 2014-12-04 Microsoft Corporation Application content search management
US11263221B2 (en) * 2013-05-29 2022-03-01 Microsoft Technology Licensing, Llc Search result contexts for application launch
US9244994B1 (en) * 2013-06-19 2016-01-26 Amazon Technologies, Inc. Idempotency of application state data
US20160188681A1 (en) * 2014-12-29 2016-06-30 Quixey, Inc. Viewing Search Results Using Multiple Different Devices
US20160188684A1 (en) * 2014-12-29 2016-06-30 Quixey, Inc. Consolidating Search Results
US9854030B2 (en) * 2015-06-11 2017-12-26 Airwatch Llc Searching content associated with multiple applications
US10579687B2 (en) * 2015-09-01 2020-03-03 Google Llc Providing native application search results with web search results
US10311116B2 (en) * 2015-10-21 2019-06-04 Samsung Electronics Co., Ltd. Multi-function search button
US9864580B2 (en) * 2015-10-26 2018-01-09 Samsung Electronics Co., Ltd. Dynamic availability-based integration of external functionality
US20180060432A1 (en) * 2016-08-25 2018-03-01 Linkedln Corporation Prioritizing people search results

Also Published As

Publication number Publication date
US20190317941A1 (en) 2019-10-17
US11216471B2 (en) 2022-01-04
WO2019204263A1 (en) 2019-10-24
CN112136122A (zh) 2020-12-25
US20220114187A1 (en) 2022-04-14

Similar Documents

Publication Publication Date Title
US11514333B2 (en) Combining machine-learning and social data to generate personalized recommendations
US10339172B2 (en) System and methods thereof for enhancing a user's search experience
US9645797B2 (en) Development system and method for providing external functionality
US11216471B2 (en) Techniques for searching using target applications
US9374396B2 (en) Recommended content for an endorsement user interface
JP5956569B2 (ja) ブラウジング活動に基づく該当アプリケーションの識別
US10503829B2 (en) Book analysis and recommendation
US9443016B2 (en) System and method for generating and interacting with a contextual search stream
US20130132468A1 (en) Discovering, organizing, accessing and sharing information in a cloud environment
US20170351778A1 (en) Methods and systems for managing bookmarks
KR20170091142A (ko) 웹 콘텐츠 태깅 및 필터링
US20170097967A1 (en) Automated Customization of Display Component Data for Search Results
US8745049B2 (en) Anonymous personalized recommendation method
US20170060966A1 (en) Action Recommendation System For Focused Objects
US20170193059A1 (en) Searching For Applications Based On Application Usage
US20120226676A1 (en) System and methods thereof for adaptation of a free text query to a customized query set
US20160188684A1 (en) Consolidating Search Results
US10146559B2 (en) In-application recommendation of deep states of native applications
CN107430609B (zh) 针对企业环境的浏览器新标签页的生成
US20160188721A1 (en) Accessing Multi-State Search Results
US20170103073A1 (en) Identifying Expert Reviewers
US10445326B2 (en) Searching based on application usage
WO2021009583A1 (en) Instant answers to search queries
AlMeshary Follow your neighbours and engage in a new culture