KR20130008058A - 제3자 애플리케이션으로의 검색 확장성 - Google Patents

제3자 애플리케이션으로의 검색 확장성 Download PDF

Info

Publication number
KR20130008058A
KR20130008058A KR1020127028487A KR20127028487A KR20130008058A KR 20130008058 A KR20130008058 A KR 20130008058A KR 1020127028487 A KR1020127028487 A KR 1020127028487A KR 20127028487 A KR20127028487 A KR 20127028487A KR 20130008058 A KR20130008058 A KR 20130008058A
Authority
KR
South Korea
Prior art keywords
search
application
records
party application
party
Prior art date
Application number
KR1020127028487A
Other languages
English (en)
Other versions
KR101517659B1 (ko
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 KR20130008058A publication Critical patent/KR20130008058A/ko
Application granted granted Critical
Publication of KR101517659B1 publication Critical patent/KR101517659B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/54Link editing before load time
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Stored Programmes (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 개시의 적어도 소정 실시예들은 검색 능력을 장치에 설치된 제3자 애플리케이션까지 확장시키는 방법을 포함한다. 한 실시예에서, 제3자 애플리케이션과 연관된 레코드들은, 상기 제3자 애플리케이션 특유의 검색 플러그인을 이용하여, 장치에 설치된 다른 제3자 애플리케이션으로부터 격리된 프로세스에서 인덱싱된다. 또한, 인덱싱된 레코드들은 제3자 애플리케이션을 인보크하지 않고도 사용자 검색 질의에 응답하여 검색될 수 있다.

Description

제3자 애플리케이션으로의 검색 확장성{SEARCH EXTENSIBILITY TO THIRD PARTY APPLICATIONS}
관련 출원
본 출원은 2010년 4월 7일 출원된 미국 가출원번호 61/321,764호의 우선권 주장하며, 그 전체를 본 명세서에서 참조용으로 인용한다.
본 출원에서 개시되고 청구되는 발명은, 2010년 3월 25일 Apple 엔지니어가 Apple의 iPhone 4의 프로토타입을 무단취득하여 Apple의 승인없이 너무 이르게 공개되었다.  본 출원이 기초하고 있는 U.S. 우선권 출원은 이 명백한 무단취득 이전에 출원되지 않았다.
발명의 분야
본 개시는 컴퓨팅 장치 상의 제3자 애플리케이션(third party application)까지 검색 능력을 확장시키는 것에 관한 것이다.
오늘날, 미디어 플레이어, PDA(personal digital assistants) 등을 포함하는 셀룰러 전화와 같은 다기능 장치에서 실행하기 위한 많은 애플리케이션들이 개발되었다. 이들 애플리케이션들 중 많은 것들이 다기능 장치의 판매자 이외의 판매원(source)에 의해 제공되며, 따라서 이들은 흔히 제3자 애플리케이션이라 부른다. 이들 애플리케이션들은 엔터테인먼트, 소셜 네트워킹 등의 제공과 같은 광범위한 기능을 수행할 수 있다. 이들 기능을 수행하는데 있어서, 다기능 장치들은 다기능 장치 내에 또는 네트워크(예를 들어, 인터넷) 통해 저장된 콘텐츠에 액세스할 수 있다.
다기능 장치들의 사용자들이 다기능 장치 상의 콘텐츠를 조직화하고 관리하는 것을 더욱 쉽고 편리하게 하기 위해, 다기능 장치에 설치된 운영 체제는 통상 검색 능력을 제공한다. 다기능 장치에 설치된 많은 애플리케이션들은 제3자 애플리케이션이기 때문에, 다기능 장치에 설치된 종래의 운영 체제는 그들의 검색 능력을 이들 제3자 애플리케이션까지 확장하지 않는다.
일부 실시예들은, 호출 프로그램 코드가 하나 이상의 인터페이스를 통해 피호출중인 다른 프로그램 코드와 상호작용하는 환경에서 하나 이상의 애플리케이션 프로그래밍 인터페이스(API; application programming interface)를 포함한다. 다양한 함수 호출, 메시지 또는 다양한 종류의 파라미터를 더 포함할 수 있는 기타 유형의 인보크(invocation)가 호출 프로그램과 피호출 코드 사이에 API를 통해 전달될 수 있다. 또한, API는, API에서 정의되고 피호출 프로그램 코드에서 구현된 데이터 타입이나 클래스를 이용하는 능력을 호출 프로그램 코드에 제공할 수도 있다.
적어도 소정의 실시예들은, 호출 프로그램 소프트웨어 컴포넌트가 API를 통해 피호출 소프트웨어 컴포넌트와 상호작용하는 환경을 포함한다. 이러한 환경에서 API를 통해 동작하기 위한 방법은, 하나 이상의 함수 호출, 메시지, 기타 유형의 인보크나 파라미터를 API를 통해 전달하는 단계를 포함한다.
본 개시의 적어도 소정 실시예들은, 다기능 장치 상의 하나 이상의 제3자 애플리케이션까지 확장된 검색 능력을 갖춘 환경에서 하나 이상의 API를 포함한다. 다양한 함수 호출이나 메시지들이 다기능 장치의 운영 체제와 제3자 애플리케이션 사이에 API를 통해 전송된다. 예시적인 API들은 제3자 애플리케이션과 연관된 콘텐츠의 인덱싱 및 검색을 구현하는 함수 호출을 전달한다.
본 개시의 일부 실시예들은 다기능 장치에 설치된 제3자 애플리케이션까지 검색 능력을 확장시키기 위한 방법을 포함한다. 한 실시예에서, 제3자 애플리케이션과 연관된 레코드들이, 제3자 애플리케이션 특유의 검색 플러그인(search plugin)을 이용하여, 다른 제3자 애플리케이션, 시스템 애플리케이션, 및 다기능 장치에 설치된 검색 번들로부터 격리된 프로세스에서 인덱싱된다. 인덱싱은 제3자 애플리케이션을 인보크하지 않고 수행될 수 있다는 점에 유의한다. 또한, 인덱싱된 레코드들은 제3자 애플리케이션을 인보크(예를 들어, 론칭 또는 실행)하지 않고도 사용자 검색 질의에 응답하여 검색될 수 있다.
본 개시의 일부 실시예들에 따르면, 다기능 장치에 설치된 제3자 애플리케이션은 제3자 애플리케이션 특유의 검색 플러그인을 제공할 수 있다. 검색 플러그인은 론칭되어 제3자 애플리케이션과 연관된 레코드를 다기능 장치 상의 별개의 프로세스에서 실행중인 검색 데몬(search daemon)에 전달할 수 있다. 레코드들의 식별자(ID)들은 사용자 검색 질의에 응답하여 생성된 검색 결과에 레코드가 디스플레이될 때 그 레코드가 어떻게 보여져야 하는지를 명시할 수 있다. ID들 각각은, 각각의 레코드와 연관된 문서 내의 상이한 유형의 콘텐츠들에 대응하는 서브 ID를 갖는 로컬 ID를 더 포함할 수 있다.
전술된 방법들 중 하나 이상을 수행하는 다양한 장치, 및 처리 시스템에 의해 실행될 때 처리 시스템으로 하여금 이들 방법들을 수행하게끔 하는 머신-판독가능한 매체도 설명된다.
기타의 방법들, 장치들 및 머신-판독가능한 매체도 설명된다.
본 발명이 첨부된 도면들을 참조하여 예를 통해 설명된다.
도 1은 본 발명의 일부 실시예에서 이용가능한 예시적 API 아키텍쳐의 블록도를 나타낸다.
도 2는 본 발명의 일부 실시예에서 이용가능한 소프트웨어 스택의 예시적 실시예이다.
도 3은 본 발명의 한 실시예에 따른 다기능 장치에서 실행중인 제3자 애플리케이션과 검색 데몬 사이의 상호작용의 도면이다.
도 4는 다기능 장치 상의 제3자 애플리케이션에 대한 검색 및 인덱싱 능력을 셋업하기 위한 방법의 한 실시예의 플로차트이다.
도 5는 다기능 장치 상의 제3자 애플리케이션이 애플리케이션 데이터의 변경을 처리하기 위한 방법의 한 실시예의 플로차트이다.
도 6은 다기능 장치 상의 검색 데몬이 제3자 애플리케이션과 연관된 애플리케이션 데이터의 변경을 처리하기 위한 방법의 한 실시예의 플로차트이다.
도 7은 다기능 장치 상의 검색 데몬이 애플리케이션 데이터를 인덱싱하기 위한 방법의 한 실시예의 플로차트이다.
도 8은 다기능 장치 상의 애플리케이션 인덱서가 애플리케이션 데이터를 인덱싱하기 위한 방법의 한 실시예의 플로차트이다.
도 9는 검색 데몬이 제3자 애플리케이션과 연관된 인덱싱된 애플리케이션 데이터를 검색하기 위한 방법의 한 실시예의 플로차트이다.
도 10은 다기능 장치 상의 검색 데이터베이스의 한 실시예를 나타낸다.
도 11은 예시적 문서의 로컬 식별자의 한 실시예를 나타낸다.
도 12는 본 개시의 한 실시예에 따른 장치의 사시도이다.
도 13은 무선 통신 능력을 포함하는 무선 장치의 실시예를 도시한다.
도 14는 본 개시의 한 실시예에 따른 장치의 또 다른 예이다.
본 개시의 다양한 실시예들 및 양태들이 이하에서 논의되는 상세사항을 참조하여 설명되며, 첨부된 도면들은 다양한 실시예들을 나타낼 것이다. 이하의 설명 및 도면들은 본 개시를 예시하기 위한 것이며, 본 개시를 제한하는 것으로서 해석되어서는 안 된다. 본 개시의 다양한 실시예들의 철저한 이해를 제공하기 위해 많은 구체적인 상세사항이 설명된다. 그러나, 소정 사례에서는, 본 개시의 실시예들의 간명한 논의를 제공하기 위하여 공지된 또는 종래기술의 상세사항은 설명되지 않는다.
후속하는 상세한 설명의 몇몇 부분들은, 컴퓨터 메모리 내에 저장된 데이터에 관한 동작을 포함하는 알고리즘에 관하여 제공된다. 알고리즘은 일반적으로 원하는 결과를 내놓는 일관성있는 동작 시퀀스이다. 동작들은 통상, 물리량(physical quantity)의 물리적 처리(physical manipulation)를 요구하거나 포함한다. 반드시는 아니지만, 대개는, 이들 양들은, 저장, 전달, 결합, 비교, 및 기타의 방식으로 처리될 수 있는 전기 또는 자기 신호의 형태를 취한다. 이들 신호들을, 비트, 값, 엘리먼트, 심볼, 문자, 항, 숫자 등으로 지칭하는 것이, 주로 일반적인 이용 때문에, 때때로 편리하다는 것이 드러났다.
그러나, 이들 및 유사한 용어들 모두는 적절한 물리량과 연관되며 이들 물리량에 적용된 편리한 라벨일 뿐이라는 점을 기억해야 한다. 이하의 논의로부터 명백한 바와 같이 구체적으로 달리 언급하지 않는 한, 설명을 통틀어, "처리"나 "컴퓨팅"이나 "계산"이나 "판정"이나 "디스플레이" 등과 같은 용어를 이용한 논의는, 데이터 처리 시스템 또는 유사한 전자 장치가 그 시스템의 레지스터나 메모리 내의 물리적 (전자적) 양으로서 표현된 데이터를 처리하여, 그 시스템의 메모리 또는 레지스터나 기타의 이러한 정보 스토리지, 전송 또는 디스플레이 장치 내의 물리량으로서 유사하게 표현된 다른 데이터로 변환하는 동작이나 처리를 지칭할 수 있다는 것을 이해할 것이다.
본 개시는 여기서 설명된 하나 이상의 동작들을 수행하기 위한 장치에 관련될 수 있다. 이 장치는 필요한 목적을 위해 특정적으로 구축(construct)될 수도 있고, 또는 컴퓨터에 저장된 컴퓨터 프로그램에 의해 선택적으로 작동(activate)되거나 재구성(reconfigure)될 수 있는 범용 컴퓨터를 포함할 수도 있다. 이러한 컴퓨터 프로그램은, 각각이 버스에 결합된, 플로피 디스크, 광학 디스크, CD-ROM, 및 광자기 디스크를 포함한 임의 타입의 디스크, 판독 전용 메모리(ROM), 랜덤 액세스 메모리(RAM), 소거가능한 프로그래머블 ROM(EPROM), 전기적으로 소거가능한 프로그래머블 ROM(EEPROM), 플래시 메모리, 자기 또는 광학 카드, 또는 전자적 명령어를 저장하기에 적합한 임의 유형의 매체를 포함하지만 이들로 한정되지 않는 머신(예를 들어, 컴퓨터) 판독가능한 저장 매체에 저장될 수 있다.
머신-판독가능한 매체는, 머신(예를 들어, 컴퓨터)에 의해 판독가능한 형태로 정보를 저장 또는 전송하기 위한 임의의 메커니즘을 포함한다. 예를 들어, 머신은, 머신-판독가능한 저장 매체(예를 들어, 자기 디스크; 광 디스크; 랜덤 액세스 메모리; 판독 전용 메모리; 플래시 메모리 장치; 상-변화 메모리)와 머신-판독가능한 통신 매체(예를 들어, 반송파, 적외선 신호, 디지털 신호 등과 같은, 전기적, 광학적, 음향적 또는 기타의 전파되는 신호의 형태)와 같은 머신-판독가능한 매체를 이용하여 (내부적으로 및/또는 네트워크를 통해 다른 장치들과) 코드 및 데이터를 저장 및 통신할 수 있다.
본 개시의 적어도 소정 실시예들은 검색 소프트웨어가 소프트웨어 애플리케이션과 상호작용하는 환경에서 하나 이상의 애플리케이션 프로그래밍 인터페이스를 포함한다. 다양한 함수 호출이나 메시지들이 검색 소프트웨어와 소프트웨어 애플리케이션 사이에서 애플리케이션 프로그래밍 인터페이스를 통해 전송된다. 함수 호출이나 메시지를 전달하는 것은, 함수 호출이나 메시지의 발생, 개시, 인보크 또는 수신을 포함할 수 있다. 예시적 애플리케이션 프로그래밍 인터페이스는, 디스플레이 영역을 갖는 장치에 대한 다양한 동작(예를 들어, 검색, 네트워킹, 서비스 발견 등)을 구현하는 함수 호출을 전달한다. API는 또한, 파라미터, 변수, 또는 포인터를 갖는 함수를 구현할 수 있다. API는, 개시된 대로의 파라미터들이나, 파라미터들의 기타 조합을 수신할 수 있다. 개시된 API 외에도, 기타의 API들이 개별적으로 또는 조합하여 개시된 API와 유사한 기능을 수행할 수 있다.
디스플레이 영역은 윈도우(window)의 형태일 수도 있다. 윈도우는 경계(border)를 갖거나 갖지 않을 수 있는 디스플레이 영역으로서, 전체 디스플레이 영역이거나 디스플레이의 구역일 수 있다. 일부 실시예들에서, 디스플레이 영역은 적어도 하나의 윈도우 및/또는 적어도 하나의 뷰(예를 들어, 웹, 텍스트 또는 이미지 콘텐츠)를 가질 수 있다. 개시된 방법, 시스템, 및 장치는 디스플레이 영역, 윈도우, 및/또는 뷰와 함께 구현될 수 있다.
본 개시의 적어도 소정 실시예들은, 미디어를 제공하는 미디어 처리 시스템, 미디어를 저장하는 저장 장치를 포함하고 안테나 시스템 및 미디어 처리 시스템에 결합된 무선 주파수(RF) 트랜시버(예를 들어, 셀룰러 전화용 RF 트랜시버)를 더 포함할 수 있는 디지털 미디어 플레이어(예를 들어, 휴대형 음악 및/또는 비디오 미디어 플레이어)와 같은 휴대형 전자 장치의 일부일 수 있다. 소정 실시예들에서, 원격 저장 장치에 저장된 데이터가 RF 트랜시버를 통해 휴대형 전자 장치에 전송될 수 있다. 데이터는, 예를 들어, 하나 이상의 음악 또는 기타의 오디오, 정지 영상, 또는 동영상 등일 수 있다.
휴대형 미디어 플레이어는, CA, Cupertino에 위치한 Apple, Computer, Inc.의 iPod? 또는 iPod Nano? 미디어 플레이어 상의 클릭 휠 입력 장치, 터치 스크린 입력 장치, 푸시버튼 장치, 가동형 포인팅 장치 또는 기타의 입력 장치와 같은 미디어 선택 장치를 포함할 수 있다. 미디어 선택 장치는 저장 장치 및/또는 원격 저장 장치에 저장된 미디어를 선택하는데 이용될 수 있다. 휴대형 미디어 플레이어는, 적어도 소정 실시예들에서, 미디어 처리 시스템에 결합되어, 입력 장치 장치를 통해 선택되고 스피커나 이어폰(들)을 통해, 또는 디스플레이 장치에서, 또는 디스플레이 장치와 스피커나 이어폰(들) 양쪽 모두를 통해 제공되고 있는 미디어의 제목이나 기타의 표시자를 디스플레이하는 디스플레이 장치를 포함할 수 있다. 일부 실시예들에서는, 디스플레이 장치 및 입력 장치가 통합되어 있는 반면, 다른 실시예들에서는, 디스플레이 장치 및 입력 장치는 별개의 장치이다.
여기서 설명되는 본 개시의 실시예들은, 예를 들어, 엔터테인먼트 시스템이나 PDA, 또는 범용 컴퓨터 시스템, 또는 특별 목적 컴퓨터 시스템, 또는 또 다른 장치에 내장된 내장형 장치, 또는 미디어 플레이어를 포함하지 않는 셀룰러 전화, 또는 다기능 터치 태블릿 장치, 또는 기타의 다기능 터치 장치, 또는 이들 장치들의 양태나 기능을 결합한 장치들(예를 들어, PDA, 엔터테인먼트 시스템, 및 셀룰러 전화기와 함께 하나의 장치 iPhone?에 결합된 iPod? 휴대형 플레이어와 같은 미디어 플레이어)와 같은 기타 타입의 데이터 처리 시스템의 일부일 수 있다. 이들 장치들은 일반적으로 복수의 기능을 갖기 때문에, 이들 장치들은 이하에서 다기능 장치라고도 부를 수 있다. 본 개시에서, 전자 장치 및 소비자 장치는 장치의 유형들이다.
일부 실시예에서, 플랫폼은 다양한 검색, 서비스 발견, 및 네트워킹 동작을 제공한다. 플랫폼은 하드웨어 컴포넌트와 운영 체제를 포함한다. 하드웨어 컴포넌트는, 입력 패널에 결합된 처리 유닛과 프로세서에 결합된 메모리를 포함할 수 있다. 운영 체제는, 메모리에 저장되고 처리 유닛에 의해 실행되도록 구성된 하나 이상의 프로그램을 포함한다. 하나 이상의 프로그램은, 다양한 검색, 서비스 발견, 및 네트워킹 동작을 수행하기 위하여 API(Application Programming Interface)를 통해 함수 호출이나 메시지를 전달하기 위한 다양한 명령어를 포함한다.
일부 실시예에서는 하나 이상의 API가 이용될 수 있다. API는 프로그램 코드 컴포넌트 또는 하드웨어 컴포넌트(이하에서는 "API 구현 컴포넌트)에 의해 구현되는 인터페이스로서, 상이한 프로그램 코드 컴포넌트 또는 하드웨어 컴포넌트(이하에서는 "API 호출 컴포넌트")가 API 구현 컴포넌트에 의해 제공되는 하나 이상의 함수, 메소드, 프로시져, 데이터 구조, 클래스, 및/또는 기타의 서비스에 액세스하여 이를 이용하는 것을 허용하는 인터페이스이다. API는 API 호출 컴포넌트와 API 구현 컴포넌트 사이에서 전달되는 하나 이상의 파라미터를 정의할 수 있다.
API는, (제3자 개발자일 수 있는) API 호출 컴포넌트의 개발자가 API 구현 컴포넌트에 의해 제공된 명시된 특징을 이용하는 것을 허용한다. 하나의 API 호출 컴포넌트가 있거나, 하나보다 많은 이러한 컴포넌트가 있을 수 있다. API는, 애플리케이션으로부터의 서비스들에 대한 요청을 지원하기 위해 컴퓨터 시스템이나 프로그램 라이브러리가 제공하는 소스 코드 인터페이스일 수 있다. 운영 체제(OS)는 OS에서 실행중인 애플리케이션들이 복수의 API들 중 하나 이상을 호출하는 것을 허용하기 위해 복수의 API를 가질 수 있고, (프로그램 라이브러리와 같은) 서비스는 그 서비스를 이용하는 애플리케이션이 복수의 API들 중 하나 이상을 호출하는 것을 허용하기 위해 복수의 API를 가질 수 있다. API는 애플리케이션이 구축될 때 인터프리트되거나 컴파일될 수 있는 프로그래밍 언어에 의하여 명시될 수 있다.
일부 실시예들에서, API 구현 컴포넌트는 하나 보다 많은 API를 제공할 수도 있고, 각각의 API는 API 구현 컴포넌트에 의해 구현되는 기능의 상이한 양태에 액세스하는 상이한 양태의 또는 상이한 양태를 갖는 상이한 뷰를 제공한다. 예를 들어, API 구현 컴포넌트의 한 API는 제1 세트의 함수를 제공할 수 있고, 제3자 개발자들에게 노출될 수 있으며, API 구현 컴포넌트의 또 다른 API는 은닉될 수 있고(노출되지 않음), 제1 세트의 함수들의 서브셋을 제공하며, 제1 세트의 함수들에 있지 않는 테스팅이나 디버깅 함수와 같은 또 다른 세트의 함수를 제공한다. 다른 실시예들에서, API 구현 컴포넌트는 그 자신이 기저 API를 통해 하나 이상의 다른 컴포넌트들을 호출할 수도 있으므로, API 호출 컴포넌트 및 API 구현 컴포넌트 양쪽 모두가 될 수 있다.
API는, API 호출 컴포넌트가 API 구현 컴포넌트의 명시된 특징에 액세스하여 이를 이용할 때 이용하는 언어와 파라미터를 정의한다. 예를 들어, API 호출 컴포넌트는, API에 의해 노출된 (예를 들어 함수나 메소드 호출에 의해 구현되는) 하나 이상의 API 호출이나 인보크를 통해 API 구현 컴포넌트의 명시된 특징에 액세스하고, 그 API 호출이나 인보크를 통해 파라미터를 이용하여 데이터와 제어 정보를 전달한다. API 구현 컴포넌트는, API 호출 컴포넌트로부터의 API 호출에 응답하여 API를 통해 값을 반환할 수 있다. API가 API 호출의 구문(syntax)과 결과(예를 들어, API 호출을 인보크하는 방법과 API 호출이 무엇을 하는지)를 정의하지만, API는, API 호출이 API 호출에 의해 명시된 함수를 어떻게 달성하는지를 드러내지 않을 수 있다. 호출측(API 호출 컴포넌트)과 API 구현 컴포넌트 사이에 하나 이상의 애플리케이션 프로그래밍 인터페이스를 통해 다양한 API 호출이 전달된다. API 호출을 전달하는 것은, 함수 호출이나 메시지를 발생, 개시, 인보크, 호출, 수신, 반환, 또는 이에 응답하는 것을 포함할 수 있다; 즉, 전달하는 것은 API 호출 컴포넌트나 API 구현 컴포넌트 중 어느 하나에 의한 행위를 기술할 수 있다. API의 함수 호출이나 기타의 인보크는, 파라미터 목록이나 기타의 구조를 통해 하나 이상의 파라미터를 전송 또는 수신할 수 있다. 파라미터는, 상수, 키, 데이터 구조, 객체, 객체 클래스, 변수, 데이터 타입, 포인터, 어레이, 목록, 또는 함수나 메소드에의 포인터 또는 API를 통해 전달될 데이터나 기타의 항목을 참조하기 위한 다른 수단일 수 있다.
또한, 데이터 타입이나 클래스가 API에 의해 제공되고 API 구현 컴포넌트에 의해 구현될 수 있다. 따라서, API 호출 컴포넌트는 API에서 제공된 정의를 이용함으로써 변수를 선언하거나, 이러한 타입이나 클래스에의 포인터를 이용하거나, 이러한 타입이나 클래스의 상수값들을 이용하거나 인스턴스화(instantiate)할 수 있다.
일반적으로, API는, API 구현 컴포넌트에 의해 제공된 서비스나 데이터에 액세스하거나 API 구현 컴포넌트에 의해 제공되는 동작이나 계산의 실시를 개시하기 위해 이용될 수 있다. 예로서, API 구현 컴포넌트 및 API 호출 컴포넌트 각각은, 운영 체제, 라이브러리, 장치 드라이버, API, 애플리케이션 프로그램, 또는 기타의 모듈 중 어느 하나일 수 있다(API 구현 컴포넌트 및 API 호출 컴포넌트는 서로 동일하거나 상이한 타입의 소프트웨어 모듈일 수 있다는 점에 유의해야 한다). API 구현 컴포넌트는 일부 경우에는 적어도 부분적으로 펌웨어, 마이크로코드, 또는 기타의 하드웨어 로직으로 구현될 수 있다. 일부 실시예들에서, API는, 클라이언트 프로그램이 소프트웨어 개발 키트(SDK) 라이브러리에 의해 제공되는 서비스들을 이용하는 것을 허용할 수 있다. 다른 실시예들에서, 애플리케이션 또는 기타의 클라이언트 프로그램은 애플리케이션 프레임워크에 의해 제공되는 API를 이용할 수 있다. 이들 실시예들에서, 애플리케이션 또는 클라이언트 프로그램은, SDK에 의해 제공되고 API에 의해 제공되는 함수나 메소드에 대한 호출을 포함하거나, SDK에서 정의되고 API에 의해 제공되는 데이터 타입이나 객체를 이용할 수 있다. 애플리케이션 프레임워크는 이들 실시예들에서 프레임워크에 의해 정의된 다양한 이벤트들에 응답하는 프로그램에 대한 메인 이벤트 루프(main event loop)를 제공할 수 있다. API는 애플리케이션이 애플리케이션 프레임워크를 이용하여 이벤트와 이벤트에 대한 응답을 명시하는 것을 허용한다. 일부 실시예들에서, API 호출은, 입력 능력 및 상태, 출력 능력 및 상태, 처리 능력, 전력 상태, 스토리지 용량 및 상태, 통신 능력 등과 같은 양태들에 관련된 것들을 포함한 하드웨어 장치의 능력이나 상태를 애플리케이션에 보고할 수 있으며, API는 부분적으로 하드웨어 컴포넌트에서 실행되는 펌웨어, 마이크로코드, 또는 기타의 하위 레벨 로직에 의해 부분적으로 구현될 수 있다.
API 호출 컴포넌트는, 로컬 컴포넌트(즉, API 구현 컴포넌트와 동일한 데이터 처리 시스템 상)이거나, 네트워크를 거쳐 API를 통하여 API 구현 컴포넌트와 통신하는 (즉, API 구현 컴포넌트와 상이한 데이터 처리 시스템 상의) 원격 컴포넌트일 수 있다. API 구현 컴포넌트는 API 호출 컴포넌트로서 동작할 수도 있고(즉, 그것은 상이한 API 구현 컴포넌트에 의해 노출된 API에 대한 API 호출을 행할 수 있다), API 호출 컴포넌트는 상이한 API 호출 컴포넌트에 노출되는 API를 구현함으로써 API 구현 컴포넌트로서 동작할 수도 있다는 점을 이해하여야 한다.
API는 상이한 프로그래밍 언어로 작성된 복수의 API 호출 컴포넌트들이 API 구현 컴포넌트와 통신하는 것을 허용할 수 있다(따라서, API는 API 호출 컴포넌트와 API 구현 컴포넌트 사이의 호출 및 반환을 변환하는 특징을 포함할 수 있다); 그러나 API는 특정의 프로그래밍 언어에 의하여 구현될 수도 있다. API 호출 컴포넌트는, 한 실시예에서, OS 제공자로부터의 한 세트의 API, 플러그인 제공자로부터의 또 다른 세트의 API, 및 또 다른 제공자(예를 들어, 소프트웨어 라이브러리의 제공자)나 또 다른 세트의 API의 생성자로부터의 또 다른 세트의 API와 같은, 상이한 제공자들로부터의 API를 호출할 수 있다.
도 1은 본 발명의 일부 실시예들에서 이용될 수 있는 예시적 API 아키텍쳐를 나타내는 블록도이다. 도 1에 도시된 바와 같이, API 아키텍쳐(100)는, API(120)를 구현하는 API 구현 컴포넌트(110)(예를 들어, 운영 체제, 라이브러리, 장치 드라이버, API, 애플리케이션 프로그램, 소프트웨어나 기타의 모듈)를 포함한다. API(120)는, API 호출 컴포넌트(130)에 의해 이용될 수 있는 API 구현 컴포넌트의 하나 이상의 함수, 메소드, 클래스, 객체, 프로토콜, 데이터 구조, 포맷 및/또는 다른 특징들을 명시한다. API(120)는, API 구현 컴포넌트의 함수가 API 호출 컴포넌트로부터 파라미터들을 어떻게 수신하는지, 및 이 함수가 API 호출 컴포넌트에 결과를 어떻게 반환하는지를 명시하는 적어도 하나의 호출 규약(calling convention)을 명시할 수 있다. API 호출 컴포넌트(130)(예를 들어, 운영 체제, 라이브러리, 장치 드라이버, API, 애플리케이션 프로그램, 또는 소프트웨어 또는 기타의 모듈)는 API(120)에 의해 명시되는 API 구현 컴포넌트(110)의 특징들에 액세스하여 이를 이용하기 위해 API(120)를 통해 API 호출을 행한다. API 구현 컴포넌트(110)는, API 호출에 응답하여 API(120)를 통해 API 호출 컴포넌트(130)에 값을 반환할 수 있다.
API 구현 컴포넌트(110)는, API(120)를 통해 명시되지 않고 API 호출 컴포넌트(130)에게 이용가능하지 않은 추가의 함수, 메소드, 클래스, 데이터 구조, 및/또는 기타의 특징들을 포함할 수 있다는 것을 이해할 것이다. API 호출 컴포넌트(130)는 API 구현 컴포넌트(110)와 동일한 시스템에 있거나, 원격으로 위치하여 네트워크를 통해 API(120)를 이용하여 API 구현 컴포넌트(110)에 액세스할 수도 있다는 것을 이해해야 한다. 도 1은 API(120)와 상호작용하는 하나의 API 호출 컴포넌트(130)를 나타내지만, API 호출 컴포넌트(130)와는 상이한 언어(또는 동일한 언어)로 작성될 수 있는 다른 API 호출 컴포넌트가 API(120)를 이용할 수도 있다는 점을 이해하여야 한다.
API 구현 컴포넌트(110), API(120), 및 API 호출 컴포넌트(130)는, 머신(예를 들어, 컴퓨터 또는 기타의 데이터 처리 시스템)에 의해 판독가능한 형태로 정보를 저장하기 위한 임의의 메커니즘을 포함하는 머신-판독가능한 매체에 저장될 수 있다. 예를 들어, 머신-판독가능한 매체는 자기 디스크, 광학 디스크, 랜덤 액세스 메모리; 판독 전용 메모리, 플래시 메모리 장치 등을 포함한다.
도 2("소프트웨어 스택")의 예시적 실시예에서, 애플리케이션은 수 개의 서비스 API를 이용하여 서비스 1 또는 2에 호출을 행하거나 수 개의 OS API를 이용하여 운영 체제(OS)에 호출을 행할 수 있다. 서비스 1 및 2는 수 개의 OS API를 이용하여 OS에 호출을 행할 수 있다.
서비스 2는 2개의 API를 가지며, 그 중 하나(서비스 2 API 1)는 애플리케이션 1로부터 호출을 수신하여 애플리케이션 1에 값들을 반환하고, 다른 하나(서비스 2 API 2)는 애플리케이션 2로부터 호출을 수신하여 애플리케이션 2에 값들을 반환한다는 점에 유의한다. (예를 들어, 소프트웨어 라이브러리일 수 있는) 서비스 1은 OS API 1에 호출을 행하고 이로부터 반환된 값들을 수신하며, (예를 들어, 소프트웨어 라이브러리일 수 있는) 서비스 2는 OS API 1 및 OS API 2 양쪽 모두에 호출을 행하고 이들로부터 반환된 값들을 수신한다. 애플리케이션 2는 OS API 2에 호출을 행하고 이로부터 반환된 값들을 수신한다.
도 3은 본 발명의 한 실시예에 따른 다기능 장치에서 실행중인 제3자 애플리케이션(310)과 검색 데몬(320) 사이의 상호작용의 도면이다. 여기서 이용될 때 제3자 애플리케이션이란, 다기능 장치의 제조자가 아닌 다른 업체에 의해 제공된 소프트웨어 애플리케이션을 말한다. 통상적으로, 다기능 장치의 사용자는 특정한 세트의 태스크나 기능을 수행하기 위해 다기능 장치에서 실행가능한 하나 이상의 제3자 애플리케이션을 설치할 수 있다. 제3자 애플리케이션의 일부 예로서는, 전자 서적 뷰어, 소셜 네트워크 관리자 등이 포함된다.
일반적으로, 다기능 장치는, 검색 데몬(320)에 의해 인덱싱된 제3자 애플리케이션(310)과 연관된 애플리케이션 데이터를 다기능 장치 상의 검색 데이터베이스(380)에 저장할 수 있다. 한 실시예에서, 장치는, 각각이 여기서 설명된 방식 내에서 동작하는, 애플리케이션(310)과 같은 복수의 제3자 애플리케이션, 검색 데몬(320) 또는 검색 데몬(320)의 인스턴스 ― 이 인스턴스를 이용하는 대응하는 제3자 애플리케이션에 대해 생성됨 ― 을 가질 수 있다. 일부 실시예에서, 검색 데몬(320)은 애플리케이션 데이터를 인덱싱하는 애플리케이션 인덱서(application indexer, 330)를 론칭할 수 있다. 구체적으로는, 애플리케이션 인덱서(330)는, 인덱싱용의 애플리케이션 데이터의 레코드를 검색하기 위해 제3자 애플리케이션(310)에 의해 제공되는 애플리케이션 검색 번들(application search bundle, 340)의 인스턴스를 론칭할 수 있다. 애플리케이션 검색 번들(340)은, 보안상의 이유로 다른 제3자 애플리케이션, 시스템 애플리케이션, 및 검색 번들로부터 격리된 별개의 프로세스에서 론칭된다는 점에 유의한다. 또한, 애플리케이션 검색 번들(340)이 론칭되는 별개의 프로세스는 애플리케이션 검색 번들(340)과 연관된 제3자 애플리케이션(310)과 동일한 특권(예를 들어, 메모리 공간의 선택된 부분을 판독하고 그 부분에 기입하되 메모리의 다른 부분의 기록이나 판독은 제한되는 것에 관한 특권)을 가질 수 있다. 따라서, 애플리케이션 검색 번들(340)은, 제3자 애플리케이션(310)이 액세스하도록 허용된 콘텐츠에 대한 액세스가 허용되며, 제3자 애플리케이션(310)이 액세스하도록 허용되지 않은 콘텐츠에 액세스하는 것이 금지된다. 일부 실시예들에서, 애플리케이션 인덱서(330)와 같은 검색 데몬(320)의 일부도, 제3자 애플리케이션(310)과 동일한 특권(예를 들어, 메모리 공간 제약)을 부여받을 수 있다. 일부 실시예들에서, 검색 데몬(320)은 제3자 애플리케이션(310)을 론칭하지 않고도 사용자 질의에 응답하여 인덱싱된 애플리케이션 데이터를 검색 데이터베이스(380)에서 검색할 수 있다. 애플리케이션 데이터를 인덱싱하고 검색하기 위한 검색 데몬(320)과 제3자 애플리케이션(310) 사이의 상호작용의 일부 실시예들의 상세사항이 상기 개념을 더 예시하기 위해 이하에서 논의된다.
한 실시예에서, 제3자 애플리케이션(310)이 론칭되어 다기능 장치에서 실행된다. 실행 중에, 제3자 애플리케이션(310)은 애플리케이션 데이터(315)에 변경을 가한다. 예를 들어, 제3자 애플리케이션(310)은, 다기능 장치에 저장된 기존 레코드를 수정하거나, 다기능 장치에 새로운 레코드를 다운로드하거나, 및/또는 다기능 장치에 저장된 기존 레코드를 제거(또는 삭제)할 수 있다. 제3자 애플리케이션(310)이 애플리케이션 데이터(315)를 변경하면, 제3자 애플리케이션(310)은 애플리케이션 데이터(315)의 변경된 레코드의 식별자(ID)들을 검색 데몬(320)에 추가로 전송한다. 검색 데몬(320)은 변경된 레코드의 ID들을 업데이트 목록(325)에 임시로 저장할 수 있다.
이후에, 검색 데몬(320)이 인덱싱된 데이터를 구축할 필요가 있을 때, 검색 데몬(320)은 애플리케이션 인덱서(330)를 실행하기 위해 별개의 프로세스를 론칭할 수 있다. 검색 데몬(320)은, 주기적으로, 또는 검색이 요청될 때, 또는 기타의 어떤 시간이나 시간 간격으로 인덱싱된 데이터를 구축할 수 있다. 대안으로서, 검색 데몬(320)은, 검색 데몬(320)이 업데이트 목록(325)에서 새로운 정보를 발견할 때 인덱싱된 데이터를 구축할 수 있다. 이것은, 제3자 애플리케이션(310)이 검색 데몬(320)에게 업데이트 식별자를 통보할 때 발생할 수 있다. 또한, 예를 들어, 애플리케이션 업데이트, 시스템 복구, 시스템 업데이트 등과 같은, 인덱싱을 개시할 수도 있는 애플리케이션(310)에 외부적인 트리거가 있을 수 있다. 애플리케이션 인덱서(330)는 애플리케이션 검색 번들(340)을 로드할 수 있다. 일부 실시예들에서, 애플리케이션 검색 번들(340)은 제3자 애플리케이션(310) 특유의 검색 관련 플러그인이다. 제3자 애플리케이션(310)은, 다기능 장치에의 제3자 애플리케이션(310)의 설치시에 애플리케이션 검색 번들(340)을 제공했을 수 있다. 애플리케이션 인덱서(330)는 업데이트 목록(325)으로부터의 변경된 레코드의 ID를 애플리케이션 검색 번들(340)에 제공할 수 있다. 응답하여, 애플리케이션 검색 번들(340)은 변경된 레코드를 애플리케이션 인덱서(330)에 제공하여 인덱싱되게 한다. 대안으로서, 애플리케이션 인덱서(330)는 제3자 애플리케이션(310)과 연관된 모든 레코드를 애플리케이션 검색 번들(340)에게 요청할 수 있다. 한 실시예에서, 제3자 애플리케이션(310)에 대한 애플리케이션 인덱서(330)의 인스턴스가 그 자신의 프로세스에서 제3자 애플리케이션(310)과 동일한 특권(메모리 제어, 메모리 공간, 메모리 할당, 파일시스템 제어, 및 네트워크 제어에 관한)으로 실행된다.
일부 실시예들에서, 각 레코드는, 사용자 검색 질의에 매치(match)되는 경우 각각의 레코드가 검색 결과에서 어떻게 디스플레이되어야 하는지를 지정하는 한 세트의 속성을 포함한다. 예를 들어, 예시적인 레코드는, ID, 콘텐츠의 제목, 콘텐츠의 부제목, 및 애플리케이션-특유의 ID(로컬 ID라고도 함)를 포함할 수 있다. 레코드가 사용자 검색 질의와 매치될 때, 그 레코드의 제목 및 부제목은 사용자 검색 질의의 검색 결과에 제공될 수 있다.
애플리케이션 검색 번들(340)로부터의 레코드들을 이용하여, 애플리케이션 인덱서(330)는, 레코드와 연관된 콘텐츠의 메타데이터를 포함할 수 있는 레코드를 검색 데이터베이스(380)에 구축하거나 추가할 수 있다. 일부 실시예들에서, 검색 데이터베이스(380)는 서로 동기화된 복수의 데이터베이스를 포함한다. 예를 들어, 검색 데이터베이스(380)는 인덱싱된 콘텐츠를 저장하는 제1 데이터베이스, 및 인덱싱된 콘텐츠의 레코드를 저장하는 제2 데이터베이스를 포함할 수 있다. 검색 데이터베이스의 한 실시예의 더 세부적인 사항이 이하에서 논의된다.
사용자가 사용자 검색 질의를 제출하면, 검색 데몬(320)은 사용자 검색 질의에 매치되는 레코드를 찾기 위해 검색 데이터베이스(380)에 액세스할 수 있다. 검색 데몬(320)은 제3자 애플리케이션(310)을 론칭하지 않고도 제3자 애플리케이션(310)의 애플리케이션 데이터와 연관된 레코드를 검색할 수 있다는 점에 유의한다. 검색 데몬(320)은, 예를 들어, 매치하는 레코드의 제목 및 부제목을 윈도우 내의 검색 결과 영역에 디스플레이함으로써, 사용자 검색 질의에 매치되는 레코드의 부분들을 제공할 수 있다. 일부 실시예들에서, 사용자는 매치하는 레코드들로부터 레코드를 선택할 수 있다. 사용자의 선택에 응답하여, 검색 데몬(320)은 선택된 레코드와 연관된 콘텐츠를 제공하기 위해 다기능 장치에서 제3자 애플리케이션(310)을 론칭할 수 있다. 예를 들어, 콘텐츠는 비디오 데이터를 포함하고, 제3자 애플리케이션(310)이 론칭되어 그 비디오를 플레이할 수 있다; 또는, 콘텐츠는 전자 서적을 포함하고, 제3자 애플리케이션(310)이 론칭되어 그 전자 서적을 디스플레이할 수 있다.
도 4는 다기능 장치 상의 제3자 애플리케이션에 대한 검색 및 인덱싱 능력을 셋업하기 위한 방법의 한 실시예의 플로차트이다. 이 방법은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합에 의해 수행될 수 있다.
일부 실시예들에서, 블록(410)에서 제3자 애플리케이션의 설치가 다기능 장치에서 개시된다. 블록(420)에서 제3자 애플리케이션 특유의 애플리케이션 검색 번들이 제3자 애플리케이션과 함께 다기능 장치의 미리결정된 장소에 저장된다. 넓게 말하면, 애플리케이션 검색 번들은 제3자 애플리케이션에 의해 제공되는 플러그인이다. 애플리케이션 검색 번들은 제3자 애플리케이션과 연관된 콘텐츠의 레코드를 전달하기 위해 로드될 수 있다. 블록(430)에서, 제3자 애플리케이션의 메타데이터가 검사되어 제3자 애플리케이션이 제3자 애플리케이션과 연관된 콘텐츠를 인덱싱하기를 원하는지를 판정한다. 만일 제3자 애플리케이션이 콘텐츠를 인덱싱하기를 원하면, 블록(445)에서 제3자 애플리케이션이 등록된다. 예를 들어, 다기능 장치에서 실행중인 검색 데몬은 등록된 애플리케이션의 목록을 집중화된 장소에 기록해둘 수 있고, 검색 데몬은 후술되는 바와 같이 제3자 애플리케이션과 연관된 콘텐츠를 인덱싱할 수 있다.
도 5는 다기능 장치 상의 제3자 애플리케이션이 애플리케이션 데이터의 변경을 처리하기 위한 방법의 한 실시예의 플로차트이다. 이 방법은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합에 의해 수행될 수 있다.
일부 실시예들에서는, 블록(510)에서 제3자 애플리케이션이 다기능 장치에서 실행된다. 블록(520)에서, 제3자 애플리케이션은 제3자 애플리케이션과 연관된 애플리케이션 데이터의 레코드를 변경한다. 블록(530)에서, 제3자 애플리케이션은 변경된 레코드의 식별자(ID)를 다기능 장치에서 실행중인 검색 데몬에 전송한다.
도 6은 다기능 장치 상의 검색 데몬이 제3자 애플리케이션과 연관된 애플리케이션 데이터의 변경을 처리하기 위한 방법의 한 실시예의 플로차트이다. 이 방법은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합에 의해 수행될 수 있다.
블록(610)에서, 다기능 장치에서 실행중인 검색 데몬은 제3자 애플리케이션과 연관된 애플리케이션 데이터의 변경된 레코드의 ID를 수신한다. 블록(620)에서 검색 데몬은 수신된 ID들을 업데이트 목록 내에 둔다. 검색 데몬은 후술되는 바와 같이 레코드를 인덱싱해야 하는지를 판정하기 위해 이후에 업데이트 목록을 이용할 수 있다.
도 7은 다기능 장치 상의 검색 데몬이 애플리케이션 데이터를 인덱싱하기 위한 방법의 한 실시예의 플로차트이다. 이 방법은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합에 의해 수행될 수 있다.
블록(710)에서, 검색 데몬은 변경된 레코드가 있는지를 판정하기 위해 업데이트 목록을 검사한다. 일부 실시예들에서, 검색 데몬은 업데이트 목록을 주기적으로 검사할 수 있다. 있다면, 검색 데몬은 변경된 레코드를 인덱싱해야 한다. 블록(720)에서 검색 데몬은 변경된 레코드를 인덱싱하기 위해 별개의 프로세스에서 애플리케이션 인덱서를 론칭할 수 있다.
도 8은 다기능 장치 상의 애플리케이션 인덱서가 애플리케이션 데이터를 인덱싱하기 위한 방법의 한 실시예의 플로차트이다. 이 방법은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합에 의해 수행될 수 있다.
블록(810)에서, 다기능 장치에서 실행중인 애플리케이션 인덱서는, 다른 제3자 애플리케이션, 시스템 애플리케이션, 및 검색 번들로부터 격리된 별개의 프로세스에서 애플리케이션 검색 번들의 인스턴스를 인스턴스화한다. 애플리케이션 검색 번들은 다기능 장치에 설치된 제3자 애플리케이션 특유의 플러그인이다. 블록(820)에서, 애플리케이션 인덱서는, 변경된 레코드의 ID를 애플리케이션 검색 번들에 전달하여 애플리케이션 검색 번들에게 변경된 레코드를 요청한다. 대안으로서, 애플리케이션 인덱서는 제3자 애플리케이션과 연관된 모든 레코드를 인덱싱할 것을 결정하고, 그에 따라, 제3자 애플리케이션과 연관된 모든 레코드를 애플리케이션 검색 번들에게 요청한다.
블록(830)에서, 애플리케이션 인덱서는 요청된 레코드들을 애플리케이션 검색 번들로부터 수신한다. 각 레코드는, 제3자 애플리케이션에 의해 이용되는 콘텐츠의 제목, 콘텐츠의 부제목, 및 콘텐츠의 로컬 식별자와 같은, 그 레코드와 연관된 콘텐츠의 한 세트의 속성을 포함할 수 있다. 블록(840)에서, 애플리케이션 인덱서는 수신된 레코드들을 인덱싱하고, 인덱싱된 레코드들을 다기능 장치 내의 검색 데이터베이스에 저장한다.
도 9는 검색 데몬이 제3자 애플리케이션과 연관된 인덱싱된 애플리케이션 데이터를 검색하기 위한 방법의 한 실시예의 플로차트이다. 이 방법은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합에 의해 수행될 수 있다.
블록(910)에서, 검색 데몬은 사용자 검색 질의를 수신한다. 예를 들어, 사용자는, 특정의 텍스트 문자열(예를 들어, "spring")을 갖는 제목으로 레코드들을 찾기 위해 사용자 검색 질의를 제출할 수 있다. 블록(920)에서, 검색 데몬은 사용자 검색 질의에 매치되는 레코드를 찾기 위해 인덱싱된 레코드를 포함하는 검색 데이터베이스를 검색한다.
블록(930)에서, 검색 데몬은 검색 결과에서 사용자 검색 질의에 매치되는 각 레코드의 식별자를 반환하여 사용자에게 제공되게 한다. 일부 실시예들에서, 식별자는, 제목, 부제목, 연관된 제3자 애플리케이션에 대한 참조, (제3자 애플리케이션 특유의) 로컬 식별자, 및 카테고리를 포함한다.
일부 실시예들에서, 사용자 검색 질의가 입력되는 검색 박스의 소유자는 질의시에 검색 데몬으로부터 검색 결과를 수신한다. 사용자는 검색 결과로부터 레코드를 선택할 수 있다. 소유자는 검색 애플리케이션이거나 제3자 애플리케이션일 수 있다. 만일 소유자가 전역 검색(global search)을 수행하는 검색 애플리케이션이라면, 검색 애플리케이션은 제3자 애플리케이션을 론칭하고 검색 데몬으로부터의 로컬 식별자와 카테고리를 전달할 수 있다. 만일 소유자가 제3자 애플리케이션이라면, 이것은 선택된 레코드와 연관된 콘텐츠를 제공하기만 할 수 있다. 소유자가 제3자 애플리케이션이면, 제3자 애플리케이션과 관련된 검색 결과 내의 레코드들만이 보여질 수도 있다는 점에 유의한다.
도 10은 다기능 장치 상의 검색 데이터베이스(1000)의 한 실시예를 나타낸다. 검색 데이터베이스(1000)는 제1 데이터베이스(1010)와 제2 데이터베이스(1020)를 포함한다. 다른 실시예들에서, 검색 데이터베이스(1000)는 2개보다 많은 데이터베이스를 포함할 수 있다.
일부 실시예들에서, 제1 데이터베이스(1010)는 일부 제3자 애플리케이션들과 연관된 콘텐츠(예를 들어, 문서, 웹 페이지, 전자 서적, 비디오 등) 및 그들 각각의 ID를 저장한다. 제2 데이터베이스(1020)는 그 콘텐츠의 레코드들을 저장할 수 있다. 현재의 예에서, 각 레코드는 콘텐츠의 ID, 콘텐츠의 제목, 콘텐츠의 부제목, 및 콘텐츠의 로컬 ID를 포함한다. 로컬 ID는 제3자 애플리케이션에 의해 콘텐츠를 액세스하고 처리하는데 있어서 이용된다. 따라서, 로컬 ID는 애플리케이션 ID라고도 부를 수 있다. 로컬 ID의 한 실시예의 상세사항이 도 11에 도시되어 있다. 검색 데이터베이스(1000)의 콘텐츠는 레코드들을 인덱싱함으로써 조직화된다. 다기능 장치에서 실행중인 검색 데몬은 레코드들을 인덱싱하고, 전술된 바와 같이 사용자 검색 질의에 응답하여 검색 데이터베이스(1000)를 검색할 수 있다.
일부 실시예들에서, 검색 데이터베이스(1000)는 다기능 장치에 모든 카테고리의 콘텐츠(예를 들어, 음악, 비디오, 전자 서적, 팟캐스트 등)를 저장한다. 검색 데이터베이스(1000)에서 수행되는 검색이 빠를 수도 있지만, 검색 데이터베이스(1000)는 백업하기에 너무 크게 돼버릴 수 있다. 따라서, 검색 데이터베이스(1000)는 필요하다면 처음부터 재구축(rebuild)되어야만 할 수 있다.
대안으로서, 다기능 장치 상의 콘텐츠의 각 카테고리에 대해 하나의 검색 데이터베이스가 존재한다. 예를 들어, 음악에 대해 제1 검색 데이터베이스가 설정되고, 팟캐스트에 대해 제2 검색 데이터베이스가 설정되며, 전자 서적에 대해 제3 데이터베이스가 설정되고, 첫 번째의 제3자 애플리케이션에 대해 제4 검색 데이터베이스가, 두 번째의 제3자 애플리케이션에 대해 제5 검색 데이터베이스가, 등등으로 설정될 수 있다. 상이한 카테고리의 콘텐츠들을 상이한 검색 데이터베이스로 분리함으로써, 검색 데이터베이스들은 각 검색 데이터베이스의 콘텐츠가 얼마나 안정적인지에 따라 상이한 빈도로 백업될 수 있다. 콘텐츠가 안정적일수록, 대응하는 검색 데이터베이스는 덜 빈번하게 백업되어야 한다. 그러나, 검색 데이터베이스에서의 콘텐츠의 검색은 복수의 검색 데이터베이스 때문에 느려질 수 있다. 성능에 미치는 영향을 완화하기 위해, 다기능 장치에 캐시가 구현되어 빈번하게 액세스되는 콘텐츠의 레코드를 저장할 수 있다. 이렇게 하여, 검색이 더 빨라질 수 있다.
도 11은 예시적 문서의 ID의 한 실시예를 나타낸다. ID(1100)는, 예시적 문서의 제목(1110), 예시적 문서의 부제목(1120), 예시적 문서와 연관된 제3자 애플리케이션(1130), 예시적 문서의 카테고리 식별자(1140), 및 예시적 문서의 애플리케이션-특유의 ID(1150)를 포함한다.
일부 실시예들에서, ID(1100)는 제3자 애플리케이션 내부의 특정 카테고리에 대해서만 고유하다. 카테고리는, 슬라이드, 비디오, 문서, 팟캐스트 등과 같은 콘텐츠의 타입이다. 따라서, 애플리케이션-특유의 ID(1150)는 카테고리마다 고유하며, 각각의 카테고리는 제3자 애플리케이션 내에서 고유하다.
일부 실시예에서, 제3자 애플리케이션은 복수의 카테고리들의 콘텐츠들과 연관될 수 있다. 예를 들어, 제3자 애플리케이션은 비디오 및 팟캐스트가 임베딩되어 있는 문서와 연관될 수 있다. 제3자 애플리케이션은 이와 같은 문서를 검색 데몬에 관한 한 단일의 카테고리(예를 들어, 문서) 하에 둘 수 있다. 만일 제3자 애플리케이션이 더 미세한 입도(granularity)의 결과, 예를 들어, 문서의 팟캐스트 부분만을 반환할 수 있기를 원한다면, 팟캐스트를 직접 가리키는 ID를 제공하고, 그것을 팟캐스트 카테고리에서 인덱싱할 수 있을 것이다. 제3자 애플리케이션은 인덱싱을 위해 이들 중 어느 하나, 또는 양자 모두를 제출하기로 선택할 수 있다. 검색 데몬은 부분-조각들을 갖는 결과와 하나의 원자적(atomic) 결과를 구분하지 못할 수 있다.
일부 실시예들에서, 본 개시의 방법, 시스템, 및 장치들은 전자 장치, 소비자 장치, 데이터 처리 장치, 데스크탑 컴퓨터, 휴대형 컴퓨터, 무선 장치, 셀룰러 장치, 태블릿 장치, 핸드헬드 장치, 멀티터치 장치, 멀티터치 데이터 처리 장치, 이들 장치들의 임의 조합, 또는 유사한 기타의 장치를 포함하는 다양한 장치들에서 구현될 수 있다. 도 12 내지 도 14는 몇 개의 이들 장치들의 예를 나타낸다.
도 12는 본 개시의 한 실시예에 따른 장치(2950)를 도시한다. 장치(2950)는, 하우징(2952), 디스플레이/입력 장치(2954), 스피커(2956), 마이크로폰(2958) 및 (하우징의 외부에서 볼 수도 있거나 하우징 내부에 감추어질 수도 있는) 선택사항적 안테나(2960)를 포함할 수 있다. 장치(2950)는 또한, 근접 센서(2962) 및 가속도계(2964)를 포함할 수도 있다. 장치(2950)는 셀룰러 전화이거나 PDA와 셀룰러 전화가 통합된 장치이거나 미디어 플레이어와 셀룰러 전화가 통합된 장치이거나 엔터테인먼트 시스템(예를 들어, 게임 플레이용) 및 셀룰러 전화 양쪽 모두인 장치이거나, 장치(2950)는 여기서 설명된 기타 타입의 장치일 수 있다. 한 특정 실시예에서, 장치(2950)는 셀룰러 전화 및 미디어 플레이어 및 PDA를 포함할 수 있으며, 이들 모두는 하우징(2952) 내에 포함된다. 장치(2950)는 보통의 성인의 손 안에 들어가기에 충분히 작고 성인이 한 손으로 소지할 수 있도록 충분히 가벼운 폼 팩터(form factor)를 가질 수 있다. 용어 "휴대형"은 장치가 성인 사용자의 손(한 손 또는 양손)으로 용이하게 소지될 수 있다는 것을 의미한다; 예를 들어, 랩탑 컴퓨터, iPhone?, 및 iPod?는 휴대형 장치임을 이해할 것이다.
본 개시의 소정 실시예들에서, 장치(2950)는 본 개시에서 논의되는 방법들의 적어도 일부를 구현하기 위해 이용될 수 있다.
도 13은 무선 통신 능력을 포함하는 무선 장치의 실시예를 도시한다. 무선 장치(3100)는 안테나 시스템(3101)을 포함할 수 있다. 무선 장치(3100)는 또한, 안테나 시스템(3101)을 통해 음성, 디지털 데이터 및/또는 미디어 신호를 전송 및/또는 수신하기 위해 안테나 시스템(3101)에 결합된 디지털 및/또는 아날로그 무선 주파수(RF) 트랜시버(3102)를 포함할 수도 있다.
무선 장치(3100)는 또한, 디지털 RF 트랜시버를 제어하고, 음성, 디지털 데이터 및/또는 미디어 신호를 관리하기 위해 디지털 처리 시스템(3103)을 포함할 수도 있다. 디지털 처리 시스템(3103)은, 예를 들어, 마이크로프로세서 또는 제어기와 같은 범용 처리 장치일 수 있다. 디지털 처리 시스템(3103)은 또한, ASIC(application specific integrated circuit), FPGA(field-programmable gate array) 또는 DSP(digital signal processor)와 같은 특별 목적 처리 장치일 수도 있다. 디지털 처리 시스템(3103)은 또한, 무선 장치(3100)의 다른 컴포넌트들과 인터페이싱하기 위해 공지된 다른 장치들을 포함할 수도 있다. 예를 들어, 디지털 처리 시스템(3103)은 무선 장치(3100)의 다른 컴포넌트들과 인터페이싱하기 위해 아날로그-디지털 변환기 및 디지털-아날로그 변환기를 포함할 수 있다. 디지털 처리 시스템(3103)은 미디어 처리 시스템(3109)을 포함할 수 있으며, 미디어 처리 시스템(3109)은 또한, 오디오 데이터 파일과 같은 미디어를 관리하기 위해 범용 또는 특별 목적 처리 장치를 포함할 수도 있다.
무선 장치(3100)는 또한, 무선 장치(3100)에 대한 데이터 및/또는 운영 프로그램을 저장하기 위해, 디지털 처리 시스템에 결합된 저장 장치(3104)를 포함할 수도 있다. 저장 장치(3104)는, 예를 들어, 임의 타입의 솔리드-스테이트(solid-state) 또는 자기 메모리 장치일 수 있다. 저장 장치(3104)는 머신-판독가능한 매체이거나 이것을 포함할 수 있다.
무선 장치(3100)는 또한, 사용자 입력(예를 들어, 전화 번호, 이름, 주소, 미디어 선택 등)을 수락하기 위해 디지털 처리 시스템(3103)에 결합된 하나 이상의 입력 장치(3105)를 포함할 수도 있다. 입력 장치(3105)는, 예를 들어, 키패드, 터치패드, 터치 스크린, 디스플레이 장치와 조합한 포인팅 장치 또는 유사한 입력 장치 중 하나 이상일 수 있다.
무선 장치(3100)는 또한, 메시지, 전화 통화 정보, 연락처 정보, 그림, 영화 및/또는 입력 장치(3105)를 통해 선택되고 있는 미디어의 제목이나 기타의 표시자와 같은 정보를 디스플레이하기 위해, 디지털 처리 시스템(3103)에 결합된 적어도 하나의 디스플레이 장치(3106)를 포함할 수도 있다. 디스플레이 장치(3106)는, 예를 들어, LCD 디스플레이 장치일 수 있다. 한 실시예에서, 디스플레이 장치(3106) 및 입력 장치(3105)는 동일한 장치에 통합될 수 있다(예를 들어, LCD 디스플레이 장치와 같은 디스플레이 장치와 통합되는 멀티터치 입력 패널과 같은 터치스크린 LCD). 디스플레이 장치(3106)는 소정 상황에서 디스플레이 장치(3106)를 비추는 백라이트(3106A)를 포함할 수 있다. 무선 장치(3100)는 복수의 디스플레이를 포함할 수 있다는 것을 이해할 것이다.
무선 장치(3100)는 또한, 디지털 RF 트랜시버(3102), 디지털 처리 시스템(3103), 저장 장치(3104), 입력 장치(3105), 마이크로폰(3105A), 오디오 트랜스듀서(3108), 미디어 처리 시스템(3109), 센서(들)(3110), 및 디스플레이 장치(3106)를 포함하는 시스템의 컴포넌트들에 작동 전력을 공급하는 배터리(3107)를 포함할 수도 있다. 배터리(3107)는, 예를 들어, 충전가능하거나 충전가능하지 않은 리튬 또는 니켈 금속 수소화물 배터리일 수 있다. 무선 장치(3100)는 또한, 하나 이상의 스피커와 적어도 하나의 마이크로폰(3105A)을 포함할 수 있는 오디오 트랜스듀서(3108)를 포함할 수도 있다. 본 개시의 소정 실시예들에서, 무선 장치(3100)는 본 개시에서 논의되는 방법들의 적어도 일부를 구현하기 위해 이용될 수 있다.
도 14는 본 개시의 실시예에 따른 장치의 또 다른 예를 도시한다. 이 장치(3200)는, 버스(3206)를 통해 서로 결합되는, 마이크로프로세서(3202)와 같은 프로세서와 메모리(3204)를 포함할 수 있다. 장치(3200)는 선택사항으로서 마이크로프로세서(3202)에 결합되는 캐시(3208)를 옵션으로 포함할 수 있다. 장치는, 선택사항으로서, 예를 들어, 임의 타입의 솔리드-스테이트 또는 자기 메모리 장치일 수 있는 저장 장치(3240)를 포함할 수 있다. 저장 장치(3240)는 머신-판독가능한 매체이거나 이것을 포함할 수 있다.
이 장치는 또한, 선택사항으로서, 버스(3206)를 통해 다른 컴포넌트들에 결합되는 디스플레이 제어기 및 디스플레이 장치(3210)를 포함할 수도 있다. 하나 이상의 입력/출력 제어기(3212)가 또한 버스(3206)에 결합되어 입력/출력 장치(3214)에 대한 인터페이스를 제공하고, 사용자 활동을 감지하기 위한 하나 이상의 센서(3216)에 대한 인터페이스를 제공한다. 버스(3206)는, 본 분야에 공지된 다양한 브릿지, 제어기 및/또는 어댑터들을 통해 서로 접속된 하나 이상의 버스를 포함할 수 있다. 입력/출력 장치(3214)는 키패드 또는 키보드 또는 터치 입력 패널과 같은 커서 제어 장치를 포함할 수 있다. 또한, 입력/출력 장치(3214)는 유선 네트워크 또는 무선 네트워크를 위한 네트워크 인터페이스(예를 들어, RF 트랜시버)를 포함할 수 있다. 센서(3216)는, 예를 들어, 근접 센서 또는 주변 광 센서를 포함한, 여기서 설명된 센서들 중 임의의 하나일 수 있다. 장치(3200)의 적어도 소정 구현예들에서, 마이크로프로세서(3202)는 하나 이상의 센서(3216)로부터 데이터를 수신하고, 여기서 설명된 방식으로 그 데이터의 분석을 수행할 수 있다.
본 개시의 소정 실시예들에서, 장치(3200)는 본 개시에서 논의된 방법들의 적어도 일부를 구현하기 위해 이용될 수 있다.
전술된 명세서에서, 본 개시가 구체적인 실시예들을 참조하여 설명되었다. 그러나, 이하의 청구항들에 개시된 바와 같은 본 개시의 더 넓은 사상 및 범위로부터 벗어나지 않고 다양한 수정이 이루어질 수 있다는 것은 명백할 것이다. 따라서, 본 명세서 및 도면은 제한적 의미라기보다는 예시적인 의미로 간주되어야 한다.

Claims (20)

  1. 프로세서에 의해 실행되는 경우, 상기 프로세서로 하여금 애플리케이션 프로그래밍 인터페이스(API: Application Programming Interface)를 생성하도록 하는 명령어들을 제공하는 머신 판독가능 저장 매체로서,
    상기 애플리케이션 프로그래밍 인터페이스(API)는 API-구현 컴포넌트가 동작들을 수행할 수 있게 하며,
    상기 동작들은,
    상기 프로세서 상에서 실행가능한 제3자 애플리케이션의 특권과 동일한 특권을 갖는 프로세스에서 실행되도록 애플리케이션 인덱서를 론칭하는 것 - 상기 프로세스는, 상기 프로세서 상에서 실행가능한 다른 제3자 애플리케이션들을 수반하는 다른 프로세스들과 별개임 -;
    상기 애플리케이션 인덱서에 의해, 상기 제3자 애플리케이션 특유의 애플리케이션 검색 번들의 인스턴스를 인스턴스화하는 것; 및
    상기 애플리케이션 인덱서가, 인덱싱된 레코드들을 검색 데이터베이스에 저장하기 위해서 상기 애플리케이션 검색 번들의 인스턴스로부터의 레코드들을 인덱싱하는 것
    을 포함하는 머신 판독가능 저장 매체.
  2. 제1항에 있어서,
    상기 애플리케이션 검색 번들은 상기 레코드들을 인덱싱하는데 이용될 상기 레코드들의 속성 세트를 특정하고, 상기 다른 프로세스들은 상기 다른 제3자 애플리케이션들의 검색 및 인덱스 프로세스들을 포함하며, 상기 제3자 애플리케이션 특유의 상기 애플리케이션 검색 번들의 인스턴스는 상기 제3자 애플리케이션과 동일한 메모리 특권으로 제한되는 머신 판독가능 저장 매체.
  3. 제1항에 있어서,
    상기 동작들은, 상기 애플리케이션 인덱서가, 상기 레코드들을 요청하기 위해서 업데이트 목록에서의 상기 레코드들과 연관된 ID(identification)들을 상기 애플리케이션 검색 번들에 전달하는 것을 더 포함하며, 상기 ID들은, 상기 제3자 애플리케이션이 상기 레코드들을 변경하는 경우에 상기 업데이트 목록에 추가된 머신 판독가능 저장 매체.
  4. 컴퓨터-구현 방법으로서,
    장치 상에 설치된 제3자 애플리케이션과 연관된 레코드들을 상기 제3자 애플리케이션 특유의 검색 플러그인을 이용하여 인덱싱하는 단계 - 상기 레코드들을 인덱싱하기 위한 프로세스는 상기 장치 상에 설치된 다른 제3자 애플리케이션들로부터 격리됨 -; 및
    상기 인덱싱된 레코드들을 이용하는 사용자 검색 질의에 응답하여 콘텐츠를 검색하는 단계
    를 포함하는 컴퓨터-구현 방법.
  5. 제4항에 있어서,
    그래픽 사용자 인터페이스를 통해 상기 사용자 검색 질의에 매치되는 레코드들을 제시하는 단계; 및
    사용자가 상기 그래픽 사용자 인터페이스를 통해 상기 사용자 검색 질의에 매치되는 레코드들로부터 레코드를 선택할 수 있게 하는 단계 - 상기 검색 플러그인은 상기 제3자 애플리케이션과 동일한 메모리 특권으로 제한됨 -
    를 더 포함하는 컴퓨터-구현 방법.
  6. 제5항에 있어서,
    상기 사용자가 상기 레코드를 선택하는 것에 응답하여, 상기 레코드를 제시하도록 상기 제3자 애플리케이션을 론칭하는 단계를 더 포함하는 컴퓨터-구현 방법.
  7. 제5항에 있어서,
    상기 사용자 검색 질의에 매치되는 레코드들을 제시하는 단계는, 상기 그래픽 사용자 인터페이스 상에 상기 레코드들의 속성 세트를 디스플레이하는 단계를 포함하며, 상기 속성 세트는 상기 제3자 애플리케이션 특유의 상기 검색 플러그인에 의해 특정되는 컴퓨터-구현 방법.
  8. 컴퓨터-구현 방법으로서,
    컴퓨팅 장치 상에 제3자 애플리케이션을 설치하는 단계;
    상기 제3자 애플리케이션이 상기 제3자 애플리케이션과 연관된 콘텐츠를 인덱싱하기를 원하는지 여부를 판정하기 위해서, 상기 제3자 애플리케이션의 메타데이터를 검사하는 단계; 및
    상기 제3자 애플리케이션이 상기 제3자 애플리케이션과 연관된 콘텐츠를 인덱싱하기를 원하는 경우, 상기 제3자 애플리케이션을 등록하는 단계
    를 포함하는 컴퓨터-구현 방법.
  9. 제8항에 있어서,
    사용자 요청에 응답하여 상기 제3자 애플리케이션을 론칭하는 단계를 더 포함하며,
    상기 제3자 애플리케이션은 레코드를 변경하고, 상기 컴퓨팅 장치 상에서 실행되는 검색 데몬에 상기 변경된 레코드의 ID를 전송하여, 상기 변경된 레코드를 인덱싱하기 위해서 상기 검색 데몬에 의해 이용가능한 업데이트 목록에 저장되게 하는 컴퓨터-구현 방법.
  10. 제9항에 있어서,
    상기 변경된 레코드의 속성 세트를 상기 검색 데몬에 전달하여 인덱싱되게 하도록 별개의 프로세스에서 상기 제3자 애플리케이션 특유의 검색 플러그인을 인보크하는 단계를 더 포함하는 컴퓨터-구현 방법.
  11. 제10항에 있어서,
    상기 검색 플러그인은, 상기 제3자 애플리케이션이 종료된 후에 인보크되는 컴퓨터-구현 방법.
  12. 제10항에 있어서,
    상기 제3자 애플리케이션에 부여된 특권과 동일한 특권을 상기 별개의 프로세스에 제공하는 단계를 더 포함하는 컴퓨터-구현 방법.
  13. 컴퓨터-구현 방법으로서,
    데이터 처리 장치 상에서 실행가능한 제3자 애플리케이션이, 레코드가 사용자 검색 질의에 응답하여 검색 데몬에 의해 수행되는 검색의 검색 결과의 일부가 되는 경우에 제시될 상기 레코드의 속성 세트를 특정하는 단계; 및
    상기 제3자 애플리케이션이, 상기 검색 데몬에 의해 인스턴스화되는 검색 인덱서로 레코드들을 전달하여 상기 제3자 애플리케이션을 론칭하지 않고 인덱싱되게 하기 위해서 상기 제3자 애플리케이션 특유의 애플리케이션 검색 번들을 제공하는 단계
    를 포함하는 컴퓨터-구현 방법.
  14. 제13항에 있어서,
    상기 제3자 애플리케이션이 상기 제3자 애플리케이션과 연관된 콘텐츠의 레코드들을 변경하는 단계; 및
    상기 변경된 레코드들의 식별자들을 상기 검색 인덱서에 의해 액세스가능한 목록에 저장하는 단계
    를 더 포함하는 컴퓨터-구현 방법.
  15. 제14항에 있어서,
    상기 검색 인덱서는, 상기 제3자 애플리케이션이 종료된 후에 상기 목록으로부터 상기 식별자들을 검색하며, 상기 식별자들을 이용하여 상기 애플리케이션 검색 번들로부터 상기 변경된 레코드들을 획득하는 컴퓨터-구현 방법.
  16. 데이터 처리 장치 상에서 실행가능하며, 상기 데이터 처리 장치 상에서 실행가능한 제3자 애플리케이션의 특권과 동일한 특권을 갖는 프로세스에서 실행되는 애플리케이션 인덱서 - 상기 프로세스는, 상기 데이터 처리 장치 상에서 실행가능한 다른 제3자 애플리케이션들을 수반하는 다른 프로세스들과 별개임 -;
    상기 데이터 처리 장치에 연결되는 데이터 저장 장치 상에 저장된 검색 데이터베이스 - 상기 애플리케이션 인덱서는, 상기 제3자 애플리케이션 특유의 애플리케이션 검색 번들의 인스턴스를 인스턴스화하며, 상기 애플리케이션 검색 번들의 인스턴스로부터의 레코드들을 인덱싱하여 상기 인덱싱된 레코드들을 상기 검색 데이터베이스에 저장하도록 동작가능함 -
    를 포함하는 장치.
  17. 제12항에 있어서,
    상기 애플리케이션 검색 번들은 상기 레코드들을 인덱싱하는데 이용될 상기 레코드들의 속성 세트를 특정하며, 데이터 처리 시스템 상에서 실행가능한 다른 제3자 애플리케이션의 특권과 동일한 특권을 갖는 다른 프로세스에서 상기 데이터 처리 시스템 상에서 다른 애플리케이션 인덱서가 실행가능한 장치.
  18. 제13항에 있어서,
    상기 애플리케이션 인덱서는, 상기 레코드들을 요청하기 위해서 업데이트 목록에서의 상기 레코드들과 연관된 ID들을 상기 애플리케이션 검색 번들에 전달하도록 동작가능하며, 상기 ID들은, 상기 제3자 애플리케이션이 상기 레코드들을 변경하는 경우에 상기 업데이트 목록에 추가된 장치.
  19. 제12항에 있어서,
    사용자로부터 검색 질의를 수신하도록 그래픽 사용자 인터페이스를 디스플레이하는 디스플레이 장치; 및
    상기 데이터 처리 장치 상에서 실행가능하며, 상기 제3자 애플리케이션을 인보크하지 않고 상기 검색 질의에 매치되는 레코드들에 대하여 상기 검색 데이터베이스에서 상기 인덱싱된 레코드들을 검색하는 검색 데몬
    을 더 포함하는 장치.
  20. 제15항에 있어서,
    상기 그래픽 사용자 인터페이스는 상기 검색 질의에 매치되는 레코드들을 제시하며, 상기 사용자가 상기 검색 질의에 매치되는 레코드들로부터 레코드를 선택할 수 있게 하고, 상기 사용자가 상기 레코드를 선택하는 것에 응답하여, 상기 데이터 처리 장치는 상기 사용자에 의해 선택된 상기 레코드를 제시하기 위해서 상기 제3자 애플리케이션을 론칭하도록 동작가능한 장치.
KR1020127028487A 2010-04-07 2010-09-23 제3자 애플리케이션으로의 검색 확장성 KR101517659B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US32176410P 2010-04-07 2010-04-07
US61/321,764 2010-04-07
US12/829,209 US9098363B2 (en) 2010-04-07 2010-07-01 Search extensibility to third party applications
US12/829,209 2010-07-01
PCT/US2010/050075 WO2011126510A1 (en) 2010-04-07 2010-09-23 Search extensibility to third party applications

Publications (2)

Publication Number Publication Date
KR20130008058A true KR20130008058A (ko) 2013-01-21
KR101517659B1 KR101517659B1 (ko) 2015-05-04

Family

ID=44761677

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020127028487A KR101517659B1 (ko) 2010-04-07 2010-09-23 제3자 애플리케이션으로의 검색 확장성

Country Status (12)

Country Link
US (1) US9098363B2 (ko)
EP (1) EP2556431B1 (ko)
JP (2) JP5730985B2 (ko)
KR (1) KR101517659B1 (ko)
AU (1) AU2010350748B2 (ko)
BR (1) BR112012025578B1 (ko)
CA (1) CA2794715C (ko)
DE (1) DE112010005475T5 (ko)
HK (1) HK1163286A1 (ko)
MX (1) MX2012011616A (ko)
TW (1) TW201140436A (ko)
WO (1) WO2011126510A1 (ko)

Families Citing this family (48)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2410441A1 (en) * 2010-07-16 2012-01-25 Research In Motion Limited Registration of applications and unified media search
US9148429B2 (en) 2012-04-23 2015-09-29 Google Inc. Controlling access by web applications to resources on servers
US9262420B1 (en) 2012-04-23 2016-02-16 Google Inc. Third-party indexable text
US8751493B2 (en) * 2012-04-23 2014-06-10 Google Inc. Associating a file type with an application in a network storage service
US9176720B1 (en) 2012-04-23 2015-11-03 Google Inc. Installation of third-party web applications into a container
US9195840B2 (en) * 2012-04-23 2015-11-24 Google Inc. Application-specific file type generation and use
US8990183B2 (en) 2012-06-06 2015-03-24 Microsoft Technology Licensing, Llc Deep application crawling
US9317709B2 (en) 2012-06-26 2016-04-19 Google Inc. System and method for detecting and integrating with native applications enabled for web-based storage
CN103546358B (zh) * 2012-07-09 2016-05-04 腾讯科技(深圳)有限公司 面向第三方应用的即时通讯方法及系统
DE102012019063A1 (de) * 2012-09-28 2014-04-03 Audi Ag Verfahren und System zum Bereitstellen von Daten in einem Kraftwagen
US9135049B2 (en) * 2012-10-16 2015-09-15 Red Hat Israel, Ltd. Performing thin-provisioning operations on virtual disk images using native features of the storage domain
US9529785B2 (en) 2012-11-27 2016-12-27 Google Inc. Detecting relationships between edits and acting on a subset of edits
US9223870B2 (en) 2012-11-30 2015-12-29 Microsoft Technology Licensing, Llc Decoration of search results by third-party content providers
US9104787B2 (en) * 2012-12-14 2015-08-11 Microsoft Technology Licensing, Llc Augmenting search results with relevant third-party application content
US9632764B2 (en) * 2012-12-31 2017-04-25 Oracle International Corporation Defining configurable characteristics of a product and associating configuration with enterprise resources
US9002821B2 (en) 2013-01-16 2015-04-07 Google Inc. Indexing application pages of native applications
US9146972B2 (en) 2013-03-15 2015-09-29 Google Inc. Ranking of presentation modes for particular content
US9430578B2 (en) 2013-03-15 2016-08-30 Google Inc. System and method for anchoring third party metadata in a document
US8996520B2 (en) 2013-03-15 2015-03-31 Google Inc. Ranking of native application content
WO2014160934A1 (en) 2013-03-28 2014-10-02 Google Inc. System and method to store third-party metadata in a cloud storage system
US9461870B2 (en) 2013-05-14 2016-10-04 Google Inc. Systems and methods for providing third-party application specific storage in a cloud-based storage system
US9135346B2 (en) 2013-06-07 2015-09-15 Google Inc. Index data for native applications
US9971752B2 (en) 2013-08-19 2018-05-15 Google Llc Systems and methods for resolving privileged edits within suggested edits
US9311407B2 (en) 2013-09-05 2016-04-12 Google Inc. Native application search results
US9348803B2 (en) 2013-10-22 2016-05-24 Google Inc. Systems and methods for providing just-in-time preview of suggestion resolutions
US9720672B2 (en) * 2014-01-06 2017-08-01 Quixey, Inc. Searching and accessing application functionality
US9608870B1 (en) 2014-02-28 2017-03-28 Google Inc. Deep link verification for native applications
US9251224B2 (en) 2014-03-04 2016-02-02 Google Inc. Triggering and ranking of native applications
US9652508B1 (en) 2014-03-05 2017-05-16 Google Inc. Device specific adjustment based on resource utilities
US10061796B2 (en) 2014-03-11 2018-08-28 Google Llc Native application content verification
US9645980B1 (en) 2014-03-19 2017-05-09 Google Inc. Verification of native applications for indexing
US9524347B1 (en) 2014-04-01 2016-12-20 Google Inc. Automatically implementing an application in response to a search query
US9513961B1 (en) 2014-04-02 2016-12-06 Google Inc. Monitoring application loading
US9767159B2 (en) 2014-06-13 2017-09-19 Google Inc. Ranking search results
RU2710293C2 (ru) 2014-06-24 2019-12-25 Гугл Инк. Поисковые результаты для нативных приложений
US10013496B2 (en) 2014-06-24 2018-07-03 Google Llc Indexing actions for resources
US10210263B1 (en) 2014-06-24 2019-02-19 Google Llc Native application search results
US9892190B1 (en) 2014-06-25 2018-02-13 Google Inc. Search suggestions based on native application history
CN106663108B (zh) 2014-06-25 2020-08-04 谷歌有限责任公司 用于原生应用的深链接
US10049367B2 (en) * 2014-09-26 2018-08-14 General Electric Company Product compliance fulfillment portal system and method
US10769184B2 (en) 2015-06-05 2020-09-08 Apple Inc. Systems and methods for providing improved search functionality on a client device
US11423023B2 (en) 2015-06-05 2022-08-23 Apple Inc. Systems and methods for providing improved search functionality on a client device
US9348671B1 (en) 2015-07-23 2016-05-24 Google Inc. Monitoring application loading
CN107045510A (zh) * 2016-02-05 2017-08-15 优信拍(北京)信息科技有限公司 一种数据搜索方法及装置
US10862968B2 (en) * 2016-04-01 2020-12-08 Intel IP Corporation Sensor data search platform
US10931679B2 (en) 2016-06-07 2021-02-23 Microsoft Technology Licensing, Llc Service actions for digital assistants
KR102490426B1 (ko) 2018-01-31 2023-01-19 삼성전자주식회사 추천 어플리케이션을 실행하기 위한 전자 장치 및 그의 동작 방법
US11822699B1 (en) * 2021-10-21 2023-11-21 Secure Computing, Llc Preventing surreptitious access to file data by malware

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6279154B1 (en) 1998-10-13 2001-08-21 Hewlett-Packard Company Apparatus and method for an install system for third party applications
US6338056B1 (en) 1998-12-14 2002-01-08 International Business Machines Corporation Relational database extender that supports user-defined index types and user-defined search
JP2000322418A (ja) * 1999-05-07 2000-11-24 Fujitsu Ltd データベース装置
US7448042B1 (en) * 2003-05-06 2008-11-04 Apple Inc. Method and apparatus for providing inter-application accessibility
US20050091658A1 (en) * 2003-10-24 2005-04-28 Microsoft Corporation Operating system resource protection
EP1574970A1 (en) * 2004-03-09 2005-09-14 Exalead Computer program for accessing information records of different applications
US20060085401A1 (en) 2004-10-20 2006-04-20 Microsoft Corporation Analyzing operational and other data from search system or the like
US8677274B2 (en) * 2004-11-10 2014-03-18 Apple Inc. Highlighting items for search results
US10769215B2 (en) * 2005-07-14 2020-09-08 Conversant Wireless Licensing S.A R.L. Method, apparatus and computer program product providing an application integrated mobile device search solution using context information
AU2006280934B2 (en) * 2005-08-19 2012-06-28 Google Llc Software architecture for displaying information content from plug-in modules in a user interface
US7657585B2 (en) 2005-10-25 2010-02-02 Innternational Business Machines Corporation Automated process for identifying and delivering domain specific unstructured content for advanced business analysis
US8019632B2 (en) 2006-10-16 2011-09-13 Accenture Global Services Limited System and method of integrating enterprise applications
US7877368B2 (en) 2007-11-02 2011-01-25 Paglo Labs, Inc. Hosted searching of private local area network information with support for add-on applications
WO2009134430A1 (en) 2008-05-01 2009-11-05 Salesforce.Com, Inc. System, method and computer program product for generating a set of instructions to an on-demand database service

Also Published As

Publication number Publication date
JP2013527521A (ja) 2013-06-27
HK1163286A1 (zh) 2012-09-07
KR101517659B1 (ko) 2015-05-04
EP2556431B1 (en) 2024-01-24
US20110252038A1 (en) 2011-10-13
US9098363B2 (en) 2015-08-04
CA2794715C (en) 2016-04-12
JP2015015055A (ja) 2015-01-22
JP5730985B2 (ja) 2015-06-10
CA2794715A1 (en) 2011-10-13
BR112012025578A2 (pt) 2017-11-28
WO2011126510A1 (en) 2011-10-13
BR112012025578B1 (pt) 2021-01-12
AU2010350748B2 (en) 2014-03-20
AU2010350748A1 (en) 2012-11-01
MX2012011616A (es) 2012-11-30
EP2556431A1 (en) 2013-02-13
TW201140436A (en) 2011-11-16
DE112010005475T5 (de) 2013-01-31

Similar Documents

Publication Publication Date Title
KR101517659B1 (ko) 제3자 애플리케이션으로의 검색 확장성
KR101224721B1 (ko) 컨텍스트-인식 플랫폼을 위한 시스템 및 방법
US8498981B2 (en) Search capability implementation for a device
US8694981B2 (en) Shared resource dependencies
CN107329985B (zh) 一种页面的收藏方法、装置和移动终端
KR101452725B1 (ko) 휴대 단말기 및 그 데이터 동기화 방법
CN115454286B (zh) 应用数据的处理方法、装置和终端设备
KR101798697B1 (ko) 상이한 파일 호스트를 이용한 파일 액세스 기법
CN102214093B (zh) 向第三方应用的搜索扩展能力
US11416232B2 (en) Accelerating application and sub-package installations
CN108140039B (zh) 流式传输来自并行批次的数据库访问的记录
CN103309677B (zh) 内置资源管理方法、装置及终端
US8352468B2 (en) Top search hits based on learned user preferences
CN115481444A (zh) 文件保护方法及电子设备
EP3163475B1 (en) Electronic device and method of searching data records
EP2631818A1 (en) Method and apparatus for displaying files by categories in a graphical user interface
US20130227445A1 (en) Method and apparatus for operation of a computing device
WO2013124468A1 (en) Method and apparatus for displaying files by categories in a graphical user interface
KR101127451B1 (ko) 원격자원 제공 방법 및 원격자원 액세스 방법
JP2009031858A (ja) 情報処理装置およびプログラム

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20180328

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20190328

Year of fee payment: 5