KR101334468B1 - 분산 검색을 수행하는 방법 - Google Patents
분산 검색을 수행하는 방법 Download PDFInfo
- Publication number
- KR101334468B1 KR101334468B1 KR1020117001240A KR20117001240A KR101334468B1 KR 101334468 B1 KR101334468 B1 KR 101334468B1 KR 1020117001240 A KR1020117001240 A KR 1020117001240A KR 20117001240 A KR20117001240 A KR 20117001240A KR 101334468 B1 KR101334468 B1 KR 101334468B1
- Authority
- KR
- South Korea
- Prior art keywords
- search
- client device
- search result
- query
- network
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2471—Distributed queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q30/00—Commerce
- G06Q30/02—Marketing; Price estimation or determination; Fundraising
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Strategic Management (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Probability & Statistics with Applications (AREA)
- Mathematical Physics (AREA)
- Fuzzy Systems (AREA)
- Accounting & Taxation (AREA)
- Development Economics (AREA)
- Databases & Information Systems (AREA)
- Finance (AREA)
- Entrepreneurship & Innovation (AREA)
- Game Theory and Decision Science (AREA)
- Economics (AREA)
- Marketing (AREA)
- General Business, Economics & Management (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Information Transfer Between Computers (AREA)
- Computer And Data Communications (AREA)
Abstract
오퍼레이터는 모바일 통신 디바이스와 같은 클라이언트 디바이스의 모집단에, 오퍼레이터 포털을 통해 액세스된 검색 서비스를 포함하는 서비스를 제공한다. 검색 게이트웨이는, 사용자 프라이버시가 보호되는 검색 오브젝트를 분산된 트랜잭션 오브젝트 (투플) 공간에 배치한다. 공간을 모니터링하는 리졸버는 검색 디스크립터를 판독하고, 수행될 외부 검색을 공간에 역으로 배치된 결과 오브젝트로 조정한다. 게이트웨이는 공간으로부터 검색 결과 오브젝트를 제거하고, 이들을 클라이언트 디바이스의 사용자에게 보고하는 사용자 검색과 매칭한다. 이에 의해, 증가된 컨텐츠 양이 분산 시스템에 걸쳐 액세스가능하다.
Description
공동 계류중인 특허 출원에 대한 참조
배경
분야
설명된 양태들은 상호작용 작업공간 및 유비쿼터스 컴퓨팅에 관한 것이다. 더욱 구체적으로는, 분산 시스템에 위치된 하나 이상의 개별 검색 서비스를 쉽게 활용하기 위한 이종의 컴퓨팅 플랫폼의 모집단에 대한 인프라구조에 관한 것이다.
클라이언트 디바이스의 사용자의 모집단에 대한 오퍼레이터는 경쟁적으로 발전하는 통신 시장에서 경쟁한다. 특히, 분산 컴퓨터 시스템을 통해 다양한 서비스에 대한 사용자 기대를 충족시키는 것은 어렵다. 종종, 사용자 기대들은 상이한 선호하는 서비스 제공자를 갖기 때문에 서로 차이가 있고, 이것은 특히 검색에 대해 그러하다. 또한, 특정한 타입의 컨텐츠는 메타-검색을 방해하는 사설 검색 엔진을 갖는 분산 네트워크의 상이한 노드에서 분리될 수 있다.
인터넷과 같지만 인터넷에 제한되지 않는 분산 컴퓨터 시스템은, 다르고 지리적으로 다양한 프로세서의 큰 어레이상에서 동시에 실행하는 다수의 다른 프로세스 사이의 고속, 실시간 상호교환에 의해 특징화된다. 일반적으로, 분산 컴퓨터 시스템의 자원은 공간적으로 분리되고, 그것의 애플리케이션의 실행은 시간에서 광범위하게 분리될 수 있는 다중의 실행 스레드를 종종 수반한다.
다음은 본 개시물의 몇몇 양태들의 기본적인 이해를 제공하기 위한 단순화된 개요를 제공한다. 이러한 개요는 광범위한 오버뷰가 아니고, 이러한 양태들의 범위를 기술하지 않고 중요하거나 불가결한 엘리먼트를 식별하지 않도록 의도된다. 이후에 제공되는 더욱 상세한 설명에 대한 서두로서 단순화된 형태로 설명된 양태들의 몇몇 개념을 제공하는 것이 목적이다.
하나 이상의 양태 및 그것의 대응하는 개시물에 따르면, 다양한 특징들이 소결합 (loosely coupled) 분산 네트워크를 통해 컨텐츠를 검색하는 핸드헬드 통신 디바이스와 같은 클라이언트 디바이스의 사용과 관련하여 설명된다.
일 양태에서, 방법은 클라이언트 디바이스로부터 수신된 검색 문의의 분산 검색을 용이하게 한다. 클라이언트 디바이스로부터의 검색 문의로부터 생성된 검색 디스크립터를 포함하고, 검색 결과를 클라이언트 디바이스로 리턴하는데 충분한 사용자 데이터를 비공개적으로 포함하는 오브젝트 바디 (object body) 를 포함하는 검색 오브젝트가 투플 (touple) 공간에 배치된다. 검색 오브젝트에 응답하여 투플 공간에 배치된 검색 결과 오브젝트는 투플 매칭에 의해 검출된다. 검색 결과 오브젝트에서의 사용자 데이터 및 검색 결과는 검색 결과를 클라이언트 디바이스로 리턴하기 위해 검출된다.
다른 양태에서, 적어도 하나의 프로세서가 분산 검색을 용이하게 하는 방법을 수행하는 모듈을 포함한다. 컴퓨터 프로그램 제품이 분산 검색을 용이하게 하는 방법을 수행하는 명령들의 세트를 포함한다. 장치가 분산 검색을 용이하게 하는 방법을 수행하는 수단을 제공한다.
추가의 양태에서, 장치가 클라이언트 디바이스로부터 수신된 검색 문의의 분산 검색을 용이하게 한다. 포털이 클라이언트 디바이스로부터 검색 문의를 수신한다. 게이트웨이가 클라이언트 디바이스로부터의 검색 문의로부터 생성된 검색 디스크립터를 포함하고, 검색 결과를 클라이언트 디바이스로 리턴하는데 충분한 사용자 데이터를 비공개적으로 포함하는 오브젝트 바디를 포함하는 검색 오브젝트를 투플 공간에 배치한다. 포털은 검색 오브젝트에 응답하여 투플 공간에 배치된 검색 결과 오브젝트를 투플 매칭에 의해 검출하며, 검색 결과 오브젝트에서의 사용자 데이터 및 검색 결과를 검출한다. 통신 컴포넌트가 검색 결과를 클라이언트 디바이스로 리턴한다.
또 다른 양태에서, 방법이 클라이언트 디바이스의 사용자로부터 수용된 검색 문의의 분산 검색을 수행한다. 검색 문의는, 클라이언트 디바이스로부터의 검색 문의로부터 생성된 검색 디스크립터를 포함하고, 검색 결과를 클라이언트 디바이스로 리턴하는데 충분한 사용자 데이터를 비공개적으로 포함하는 오브젝트 바디를 포함하는 검색 오브젝트를 투플 공간에 배치하고, 검색 오브젝트에 응답하여 투플 공간에 배치된 검색 결과 오브젝트를 투플 매칭에 의해 검출하며, 검색 결과 오브젝트에서의 사용자 데이터 및 검색 결과를 검출하는 네트워크에 전송된다. 네트워크로부터의 검색 결과는 클라이언트 디바이스상에서 사용자에게 제공하기 위해 전송된다.
다른 양태에서, 적어도 하나의 프로세서가 분산 검색 요청 방법을 수행하는 모듈을 포함한다. 컴퓨터 프로그램 제품은 분산 검색 요청 방법을 수행하는 명령들의 세트를 포함한다. 장치가 분산 검색 요청 방법을 수행하는 수단을 제공한다.
또 다른 양태에서, 장치가 분산 검색을 용이하게 한다. 사용자 인터페이스가 클라이언트의 사용자로부터의 검색 문의를 수신한다. 통신 컴포넌트가, 클라이언트 디바이스로부터의 검색 문의로부터 생성된 검색 디스크립터를 포함하고, 검색 결과를 클라이언트 디바이스로 리턴하는데 충분한 사용자 데이터를 비공개적으로 포함하는 오브젝트 바디를 포함하는 검색 오브젝트를 투플 공간에 배치하고, 검색 오브젝트에 응답하여 투플 공간에 배치된 검색 결과 오브젝트를 투플 매칭에 의해 검출하며, 검색 결과 오브젝트에서의 사용자 데이터 및 검색 결과를 검출하는 네트워크에 검색 문의를 전송한다. 그 후, 사용자 인터페이스는 클라이언트 디바이스상에서 사용자에게 제공하기 위해 네트워크에 의해 리턴된 검색 결과를 수신한다.
상술한 관련 목적의 달성을 위해, 하나 이상의 양태들은 이하에서 전체적으로 설명되고 특히 청구범위에 지적된 특징들을 포함한다. 아래의 설명 및 첨부된 도면들은 특정한 예시적인 양태들을 상세히 설명하고 양태들의 원리 및 버전이 이용될 수도 있는 다양한 방식 중 몇몇을 나타낸다. 다른 이점들 및 신규한 특징들은 도면들과 함께 고려할 때 아래의 상세한 설명으로부터 명백해질 것이며, 개시된 버전들은 모든 이러한 양태들 및 이들의 등가물을 포함하도록 의도된다.
도 1 은 분산 네트워크에 걸쳐 하나 이상의 분리 검색 능력을 활용하기 위한 오퍼레이터에 대한 일 양태의 개략도이다.
도 2 는 도 1 의 시스템과 동작가능한 통신 네트워크의 일 양태의 개략도이다.
도 3 은 일 양태에 따른, 최적의 레이팅된 검색 결과가 배치된 예시적인 클라이언트 디바이스의 도면이다.
도 4 는 분산 네트워크의 하나 이상의 개별 검색 엔터티에 걸쳐 검색하고 검색 비드 (bid) 에 따라 결과 랭킹을 최적화하는 도 1 의 분산 네트워크에 의해 수행된 방법의 타이밍도이다.
도 5 는 일 양태에 따른, 도 1 의 오퍼레이터에 의해 수행된 분산 검색 및 결과 레이팅에 대한 방법의 흐름도이다.
도 2 는 도 1 의 시스템과 동작가능한 통신 네트워크의 일 양태의 개략도이다.
도 3 은 일 양태에 따른, 최적의 레이팅된 검색 결과가 배치된 예시적인 클라이언트 디바이스의 도면이다.
도 4 는 분산 네트워크의 하나 이상의 개별 검색 엔터티에 걸쳐 검색하고 검색 비드 (bid) 에 따라 결과 랭킹을 최적화하는 도 1 의 분산 네트워크에 의해 수행된 방법의 타이밍도이다.
도 5 는 일 양태에 따른, 도 1 의 오퍼레이터에 의해 수행된 분산 검색 및 결과 레이팅에 대한 방법의 흐름도이다.
오퍼레이터는 모바일 통신 디바이스와 같은 클라이언트 디바이스의 모집단에 서비스를 제공하고, 이 서비스는 오퍼레이터 포털을 통해 액세스된 검색 서비스를 포함한다. 검색 게이트웨이가 포털 입력으로부터 추출된 검색 디스크립터를 포함하는 검색 오브젝트를 배치한다. 사용자 프라이버시를 보호하는 검색 오브젝트는, 분산된 거래형 오브젝트 (투플) 공간에 배치된다. 공유된 메모리 공간을 모니터링하는 리졸버 (resolver) 가 검색 디스크립터를 판독하고, 외부 탐색이 수행되도록 조정하며, 결과 오프벡트가 공유된 메모리 공간에 다시 배치된다. 게이트웨이는 공유된 메모리 공간으로부터 검색 결과 오브젝트를 제거하고, 클라이언트 디바이스의 사용자에게 보고하기 위해 사용자 검색과 이들을 매칭한다. 이에 의해, 증가된 양의 컨텐츠가 분산 시스템에 걸쳐 액세스가능하다.
본 출원에서 사용된 바와 같이, 용어 "컴포넌트", "모듈", "시스템" 등은 컴퓨터 관련 엔터티, 하드웨어, 하드웨어와 소프트웨어의 조합, 소프트웨어, 또는 실행중인 소프트웨어를 지칭하도록 의도된다. 예를 들어, 컴포넌트는 프로세서상에서 구동하는 프로세스, 프로세서, 오브젝트, 실행가능, 실행의 스레드, 프로그램, 및/또는 컴퓨터일 수도 있지만, 이에 제한되지 않는다. 예시로서, 서버상에서 구동하는 애플리케이션 및 서버 양자는 컴포넌트일 수 있다. 하나 이상의 컴포넌트가 프로세스 및/또는 실행의 스레드내에 상주할 수도 있으며, 컴포넌트는 하나의 컴퓨터상에 로컬화될 수도 있고/있거나 2개 이상의 컴퓨터 사이에 분산될 수도 있다.
단어 "예시적인" 은 예, 경우, 또는 예시로서 작용하는 것을 의미하도록 여기에서 사용된다. 여기에 "예시적인" 으로서 설명된 임의의 양태 또는 설계가 다른 양태들 또는 설계들 보다 바람직하거나 유리한 것으로서 반드시 해석되지는 않는다.
또한, 하나 이상의 양태는, 소프트웨어, 펌웨어, 하드웨어, 또는 이들의 임의의 조합을 생성하여, 개시된 양태들을 구현하기 위해 컴퓨터를 제어하도록 표준 프로그래밍 및/또는 엔지니어링 기술을 사용하는 방법, 장치, 또는 제품으로서 구현될 수도 있다. 여기에서 사용된 바와 같은 용어 "제품" (또는 다르게는 "컴퓨터 프로그램 제품") 은 임의의 컴퓨터 판독가능한 디바이스, 캐리어, 또는 매체로부터 액세스가능한 컴퓨터 프로그램을 포함하도록 의도된다. 예를 들어, 컴퓨터 판독가능한 매체는 자기 저장 디바이스 (예를 들어, 하드 디스크, 플로피 디스크, 자기 스트립 등), 광학 디스크 (예를 들어, 컴팩트 디스크 (CD), 디브이디 (DVD) 등), 스마트 카드, 및 플래시 메모리 디바이스 (예를 들어, 카드, 스틱 등) 를 포함할 수 있지만, 이에 제한되지 않는다. 추가적으로, 반송파가 전자 메일을 송신 및 수신하고, 인터넷 또는 로컬 영역 네트워크 (LAN) 와 같은 네트워크에 액세스하는데 사용된 바와 같은 컴퓨터 판독가능한 전자 데이터를 반송하기 위해 이용될 수 있다는 것을 이해해야 한다. 물론, 당업자는 다수의 변형물이 개시된 양태들의 범위를 벗어나지 않고 이러한 구성에 대해 이루어질 수도 있다는 것을 인식할 것이다.
다수의 컴포넌트, 모듈 등을 포함할 수도 있는 시스템과 관련하여 다양한 양태가 제공될 것이다. 다양한 시스템이 추가의 컴포넌트, 모듈 등을 포함할 수도 있고/있거나 도면과 관련하여 논의된 모든 컴포넌트, 모듈 등을 포함하지 않을 수도 있다는 것을 이해해야 한다. 이들 접근방식의 조합이 또한 사용될 수도 있다. 여기에 개시된 다양한 양태들은 터치 스크린 디스플레이 기술 및/또는 마우스 및 키보드 타입 인터페이스를 활용하는 디바이스를 포함하는 전기 디바이스상에서 수행될 수 있다. 이러한 디바이스의 예가 컴퓨터 (데스크탑 및 모바일), 스마트 폰, 개인 휴대 정보 단말기 (PDA), 및 유선 및 무선 양자인 다른 전자 디바이스를 포함한다.
도 1 에서, 분산 시스템 (100) 은, 하나 이상의 검색 엔진 (110) 으로부터의 검색 결과에 액세스하기 위해 모바일 통신 디바이스와 같은 클라이언트 디바이스 (104) 의 사용자 (102) 가 오퍼레이터 (108) 의 포털 (106) 에 액세스하는 것을 허용한다. "오프-포털 (off-portal)" 컨텐츠의 도전과제를 다루기 위해, 오퍼레이터 (108) 는 린다 (Linda)-스타일 분산 거래형 시스템 ("투플 시스템") (116) 에 배치되는 검색 오브젝트 (114) 를 생성하는 검색 게이트웨이 (112) 를 활용한다. 검색 게이트웨이 (112) 는 실제 검색 항목 및 컨텐츠 매체 및 다른 검색 제약의 타입과 같은 추가적인 다른 파라미터를 포함할 수 있는 검색 디스크립터 (118) 를 생성함으로써 검색 오브젝트를 구성한다. 오브젝트 바디 (120) 가 사용자 (102) 의 식별 및 검색 결과를 사용자 (102) 에게 어떻게 리턴하는지를 캡처하지만, 이러한 정보는 검색 게이트웨이에게만 오직 보인다.
검색 오브젝트 (114) 는 요청된 검색, 및 어쩌면 비드, 정보를 수신하기 위해 다른 투플과 상호작용하는 투플이다. "공유된 메모리 공간" 은 글로벌하게 공유되고 연상적으로 어드레싱된 메모리 공간으로서, 상기 메모리 공간은 투플의 그룹핑으로서 조직된다. "투플" 은 공유된 메모리 공간 시스템의 기본 엘리먼트이다. 린다와 같은 공유된 메모리 공간 기반 조정과 관련하여, 투플은 특정한 타입의 필드 또는 값을 갖는 벡터이다. 더 넓은 의미에서, "투플" 은 정보 저장 시스템에서의 엔트리이다. 예를 들어, 관계형 데이터베이스에서의 로우 (row) 를 투플로서 칭할 수 있다.
린다형 언어에서, "템플릿" 이라 불리는 구조가 매칭 기술을 통해 투플을 연상적으로 다루기 위해 사용된다. 템플릿은, 동일한 수의 필드를 갖고, 각 템플릿 필드가 대응하는 투플 필드에 매칭하는 경우에 투플에 매칭한다.
공유된 메모리 공간 기반 조정 언어는, 병렬 및 분산 프로그래밍의 핵심인 프로세스간 통신 및 동기화를 위한 단순하지만 강력한 메카니즘을 제공한다. 공유를 위한 데이터와의 프로세스는 투플을 생성하고, 이것을 공유된 메모리 공간에 배치한다. 데이터를 요구하는 프로세스는 공유된 메모리 공간으로부터 투플을 단순히 요청한다.
공유된 메모리 공간 프로그램은 다음을 포함하는 다수의 이유로 기록하고 유지하는 것이 더 쉬울 수도 있다.
(1) 수신지 언커플링 (완전 익명의 통신) -- 투플의 생성기는 그 투플의 장래 사용 또는 그것의 수신지에 관한 어떠한 지식도 요구하지 않는다.
(2) 공간 언커플링 -- 투플이 연관 어드레싱 방식을 사용하여 검색되기 때문에, 다중의 어드레스-공간-디스조인트 (disjoint) 프로세스가 동일한 방식으로 투플에 액세스할 수 있다.
(3) 시간적 언커플링 -- 투플은, 투플을 판독할 수도 있는 임의의 프로세스 또는 투플을 생성하는 프로세스에 관계없이 그들 자체의 라이프 스팬을 갖는다. 이것은 시간-디스조인트 프로세스가 심리스하게 통신할 수 있게 한다.
공유된 메모리 공간의 구현은 "폐쇄" 또는 "개방" 일 수 있다. 폐쇄 구현은 매우 효율적인 폐쇄 프로그램을 제공하기 위해 오브젝트와 소스 코드의 컴파일 시간 분석을 사용한다. 개방 구현은 런-타임 시스템이 임의의 사전 지식을 요구하지 않는 공유된 메모리 공간을 통해 프로세스, 에이전트, 및 프로그램이 조정하는 것을 허용한다. 본질적으로, 개방 구현은 영구적 데이터 저장을 제공한다.
린다 언어는 3개의 표준 명령들 또는 프리미티브 (primitive) 를 사용한다. (인포멀 의미를 갖는) 이들은 다음과 같다.
(1) out(tuple) 투플을 공유된 메모리 공간에 삽입.
(2) in(template) 템플릿에 매치하는 투플이 존재하면, 투플을 제거하고 인 (in) 을 수행하는 에이전트에 리턴한다. 매칭하는 투플이 이용가능하지 않으면, 매칭 투플이 이용가능할 때 까지 프리미티브가 블록킹.
(3) rd(template) 템플릿에 매치하는 투플이 존재하면, 투플의 카피를 rd 를 수행한 에이전트로 리턴. 매칭하는 투플이 없으면, 매칭 투플이 이용가능할 때 까지 프리미티브가 블록킹.
도 1 로 돌아가서, 공유된 메모리 공간 (116) 은 데이터 저장부를 포함하고, 검색 게이트웨이 (112) 에 의해 공유된 메모리 공간 (116) 에 배치된 검색 오브젝트 (데이터 투플) (114) 및 공유된 메모리 공간 (116) 에서의 예시적인 서비스 투플 (124) 각각은 은 투플 타입 (126) 및 투플 속성 (128) 을 포함하는 데이터의 순서화된 세트를 갖는 오브젝트를 각각 포함한다. 또한, 투플 속성 (128) 은 투플 타입 (126) 에 따라 변화할 수도 있다. 공유된 메모리 공간 (116) 은 데이터 오브젝트, 예를 들어, 투플 (124) 을 수신하도록 동작가능한 추상 공간 (abstract space) 을 포함하며, 그 공간내에서 수행될 수 있는 소정의 세트의 동작을 포함한다. 예를 들어, 소정의 세트의 함수가, "in" 함수 및 "rd" 함수를 포함할 수도 있고, 이 양자는 제공된 위치의 입력 파라미터를 공유된 메모리 공간내에 존재하는 값들과 매칭함으로써 공간에서 특정 투플의 선택을 허용하는 입력 파라미터를 취한다. 또한, "in" 및 "rd" 함수 양자는 넌-블록킹 등가물 (inp 및 rdp) 을 가질 수도 있다. 일부 양태에서, 소정의 세트의 함수는 공유된 메모리 공간 (116) 및 투플 (124) 양자에 대해 수행될 수도 있는 JAVA 방법과 같은 동작의 세트를 포함할 수도 있다.
또한, 특정한 예에서, 각 투플 (124) 은 com.qualcomm.qspaces.linda.Tuple 클래스 또는 서브클래스의 인스턴스이며, 투플 (124) 이 구성될 때 특정되는 오브젝트의 어레이에 의해 정의된 속성 (128) 의 세트와 생성된다. 어레이는 제로 길이일 수 있지만, 일부 양태에서는, 어레이는 널이 아닐 수도 있다. 또한, 일부 양태에서, 널일 수도 있는 어레이에서의 개별 속성 오브젝트는 없다.
일부 양태에서, 투플 (124) 이 먼저 구성될 때 및 각각의 속성 (128) 이 각각의 투플로부터 검색될 때 마다, 오브젝트의 어레이는 초고속 형태의 인-메모리 직렬화를 사용하여 수동으로 카피될 수도 있다. 이러한 프로세스는 투플 (124) 이 불변이도록 허용하며, 따라서, 투플 (124) 이 상주하는 공유된 메모리 공간 (116) 의 무결성을 보장한다.
상기 논의한 양태에서, 투플 균일성 (equality) 은, t1.equals(t2) 이면 t2.equals(t1) 이라고 하는 대칭 룰을 포함하는, 임의의 JAVA 오브젝트의 동일한 균일성 원리를 고수한다.
구체적으로는, 템플릿으로서 알려진 t2 가 아래의 기준을 충족하면, 투플은 다른 투플, 예를 들어, t1.equals(t2) 과 동일하다.
1) 템플릿 t2 의 타입 (126) 은 투플 t1 과 동일한 타입 (126) 이다.
2) 템플릿 t2 의 속성 (128) 은 투플 t1 의 속성 (128) 과 동일하고, 이것은, t2 의 속성 (128) 이 그들의 순서에 관계없이 t1 의 속성 (128) 과 동일하다는 것을 의미한다.
다른 양태에서, 템플릿으로서 알려진 t2 가 다음의 기준을 충족하면, 투플은 다른 투플, 예를 들어, t1.matches(t2) 에 매치한다.
1) 템플릿 t2 의 타입 (126) 은 투플 t1 과 동일한 타입 (126) 또는 투플 t1 의 수퍼 클래스이다.
2) 템플릿 t2 의 속성 (128) 은 투플 t1 의 속성 (128) 에 매치하고, 이것은 t2 의 속성 (128) 이 그들의 순서에 관계없이 t1 의 속성 (128) 의 동일한 세트 또는 서브세트이다는 것을 의미한다.
하나의 투플이 다른 투플과 매칭할 때, 대칭 룰은 적용되지 않고, 그래서, t1.matches(t2) 는 t2.matches(t1) 과 반드시 동일하지 않다.
일부 양태에서, 투플 속성 (128) 의 하나의 세트와 다른 세트의 비교는 정상 오브젝트 균일성 룰을 사용하여서, 투플 속성 (128) 으로서 사용된 임의의 오브젝트가 object.equals(Object obj) 및 object.hashcode() 방법을 구현할 수 있다.
투플 (124) 이 리스 (lease; 130) 와 함께 공유된 메모리 공간 (116) 에 추가된다. 리스 (130) 는 예를 들어, 밀리초에서 특정된 기간이고, 이것은 투플이 각각의 공유된 메모리 공간 (116) 에서 얼마나 길게 유지될지를 정의한다. 예를 들어, 제로 값을 갖는 리스 (130) 는, 각각의 투플이 결코 만료되지 않는다는 것을 나타낸다. 리스 (130) 가 각각의 투플에 대해 만료되면, 투플은 공유된 메모리 공간 (116) 으로부터 자동으로 제거된다.
도시된 투플 (124) 은 검색 오브젝트 (114) 와 같은 데이터 투플 이외의 서비스 투플일 수 있다. 서비스 투플 (124) 은 게이트웨이 (112) 와 같은 공유된 메모리 공간 (116) 의 클라이언트와 상호작용하는 서비스를 나타낸다. 또한, 서비스 투플 (124) 은 또한, 공유된 메모리 공간 (116) 및 그 공간의 다른 투플과 또한 상호작용할 수도 있는 독립적으로 자율적인 "라이브 (live)" JAVA 오브젝트이다. 서비스 투플 (124) 은 예를 들어, 투플 타입 (126) 과 속성 (128) 을 매칭함으로써 다른 투플과 동일한 방식으로 발견될 수도 있다. 일부 양태에서, 서비스 투플 (124) 은 이러한 방식으로 사용되지 않을 수도 있지만, 오히려, 서비스 투플 (106) 은 데이터 투플 (114) 과 같은 다른 투플을 공유된 메모리 공간 (116) 에 배치함으로써 간접적으로 상호작용된다.
예를 들어, 각각의 게이트웨이 (112) 와 같은 클라이언트는 속성 "abc" 및 "123" 을 갖는 타입 A 의 데이터 투플 (124) 을 생성할 수도 있으며, 투플을 공유된 메모리 공간 (116) 에 배치한다. 이와 같이, 데이터 투플 (124) 은 다음의 표기를 사용하여 설명될 수 있다.
(A, "abc", 123)
서비스 투플 (124) 은 클라이언트 애플리케이션과 동일한 방식으로 공유된 메모리 공간 (116) 과 상호작용할 수 있는 라이브 오브젝트이다. 이와 같이, 이러한 예에서, 서비스 투플 (124) 이 예시되었고, 타입 A 에 대한 매칭 템플릿 (126) 및 임의의 속성을 갖는 임의의 투플에 대한 공유된 메모리 공간 (116) 으로부터의 판독에 대한 블록킹이다. 이러한 매칭 기준은 다음과 같이 기재될 수 있다.
(A, ?s, ?x)
여기서, ?s 및 ?x 는, 스트링 s 및 정수 x 의 값이 매칭될 것이라는 것을 의미한다. 따라서, 공유된 메모리 공간 (116) 은 서비스 투플 (124) 로부터의 템플릿에 매치하며, 그 후, 공유된 메모리 공간 (116) 으로부터 투플 (114) 을 판독할 것이다. 이러한 방식으로, 설명된 양태는 투플의 형태의 파라미터를 서비스로 패스한다.
또한, 시스템 (100) 에서, 사용자 인터페이스를 나타내는 오브젝트를 서비스 오브젝트 자체로 임베드할 수 있다. 다음의 사용자 인터페이스 서비스 투플 :
(A, [Java], [Flash], [uiOne])
을 고려한다.
이러한 서비스 투플 (미도시) 은 캘리포니아 샌디에고 소재의 QUALCOMM Incorporated 의 JAVA™, ADOBE FLASH, 및 uiOne™ 기술에 정의된 3개의 사용자 인터페이스 오브젝트를 포함한다. 이동성의 컨텍스트에서, 본 양태는 광범위한 다양한 무선 디바이스에 걸친 서비스의 제공을 가능하게 하며, 각 무선 디바이스는, Java, Flash 또는 uiOne 과 같은 상이한 기술의 지원에 관한 것이든, 심지어 단일 기술의 다중의 변형에 관한 것이든, 스크린 사이즈 또는 다른 디바이스 특정 특성에 대한 최적화를 선택적으로 포함하는 그것의 자체 특정 요건을 갖는다. 따라서, 사용자 인터페이스 서비스 오브젝트를 위치시키고, 그 후, 그것으로부터 사용자 인터페이스 컴포넌트를 로딩시킴으로써 공유된 메모리 공간 (116) 에 표현된 분산 컴퓨팅 엔터티와 쉽게 통신하기 위한 능력이 강화된다.
다시 도 1 을 참조하면, 하나 이상의 검색 리졸버 (132) 가 아마도 동적으로 공유된 메모리 공간 (116) 에 접속된다. 리졸버 (132) 는 검색 모니터 투플 (134) 로 검색 오브젝트 (114) 에 대해 공유된 메모리 공간 (116) 을 모니터링할 때 도시된다. 리졸버 (132) 는 각각의 검색 엔진 (110) 에 대한 접근 검색 문의 포맷으로 검색 디스크립터 (118) 를 포맷하기 위한 커스텀 검색 메카니즘으로서 기능한다. 일부 경우에서, 디스크립터 (118) 는 추구되지 않는 미디어 컨텐츠 (예를 들어, 오디오 MP3 파일) 의 특수화된 데이터베이스에 전용된 검색 엔진과 같은 검색에 대해 특정한 검색 엔진을 적절하게 렌더링하는 제한을 제안한다. 따라서, 검색 엔진 (110) 의 다양한 조합 및 수가 검색을 수행하기 위해 동적으로 얻어질 수도 있다. 각각의 검색의 완료시에, 각 검색 리졸버 (132) 는 공유된 메모리 공간 (116) 에 역으로 배치되는 검색 결과 투플 (136) 을 생성한다.
오퍼레이터 (108) 의 검색 게이트웨이 (112) 는, 클라이언트 디바이스 (104) 의 다른 사용자 (102) 에 대한 다수의 다른 펜딩 검색 및 이러한 검색의 결과에 대해 공유된 메모리 공간 (116) 을 모니터링한다. 이러한 모니터링은 결과/비드 모니터 투플 (138) 에 의해 도시된다. 예를 들어, 서비스 투플이 모든 검색에 대한 결과를 볼 수 있거나, 커스텀 데이터 투플이 검색에 대해 할당된 시간 지속기간 동안 선택된 리스 (130) 를 아마도 갖는 각 펜딩 검색을 위해 공간 (116) 에 배치될 수 있다. 검색 결과 투플 (136) 의 검출시에, 게이트웨이 (112) 는 이들 투플이 공간 (116) 으로부터 제거되게 한다. 각 검색 결과 투플 (136) 에 포함된 사설 오브젝트 바디 (120) 는, 검색 결과의 하나 이상의 세트가 수집되어 포털 (106) 을 통해 정확한 사용자 (102) 에게 리턴될 수 있도록 추출된다.
오브젝트 바디 (120) 가 사용자 (102) 를 단독으로 식별하고, 대응하는 클라이언트 디바이스 (104) 에 결과를 전송하는데 충분할 수 있다는 것을 이해해야 한다. 다르게는, 증가된 프라이버시 및/또는 감소된 메시지 사이즈 또는 다른 이유로, 오브젝트 바디 (120) 는 오퍼레이터 (108) 에 의해 유지된 펜딩 검색 데이터 구조 (140) 에 레퍼런싱될 수 있는 고유 코드에 제한될 수 있다. 또한, 포털 (106) 의 사용은 오퍼레이터 (108) 에 의해 유지된 사용자 데이터베이스 (142) 를 참조하여 제한되거나 (예를 들어, 인가된 사용자) 빌링 (billing) (예를 들어, 검색 당 요금) 을 위해 모니터링될 수 있다.
사용자 (102) 에 대한 큰 적용가능성을 갖는 방식으로 검색 결과를 바람직하게 랭킹하고/하거나 검색 서비스를 제공함으로써 생성된 수입을 강화하기 위한 방식으로서, 게이트웨이 (112) 는 검색 오브젝트 (114) 를 공간 (116) 에 배치하는 부분으로서 레이팅 비드를 요청할 수 있다. 이러한 장치는, 이전부터 존재하고 있을 수 있고 묵시적일 수 있다. 다르게는 또는 또한, 각 검색 오브젝트 (114) 는 검색 리졸버 (132) 에 의해 선택적으로 동작되는 비드 팩터 속성 (144) 을 통합함으로써 비드를 요청할 수 있다. 예를 들어, 비드 팩터 속성 (144) 은 보고될 비드 파라미터 (예를 들어, 비더 (bidder) 의 아이덴티티, 상위 배치를 위한 비드 값, 제 1 의 5개의 리스팅내의 배치를 위한 비드 값, 제약된 모바일 디바이스 디스플레이의 제 1 스크린내의 배치를 위한 비드 값 등) 를 특정할 수 있다. 비드 팩터 속성 (144) 은 광고자에 의해 견적될 수 있는 사용자에 관한 데모그래픽 정보 (예를 들어, 위치, 나이 그룹, 사회경제적 클래스 등) 를 포함할 수 있다. 따라서, 검색 리졸버 (132) 는 검색 결과 (136) 의 일부로서 비드 응답 속성 (146) 을 포함할 수 있다.
다르게는 또는 또한, 광고자 (148) 와 같은 제 3 자가 비드를 결과/비드 모니터 (138) 에 제공하는 상품/서비스 비드 투플 (150) 로 적용가능한 검색 오브젝트 (114) 및/또는 검색 결과 오브젝트 (136) 에 대해 공간 (116) 을 모니터링할 수 있다. 따라서, 게이트웨이 (112) 는 이들 비드를 적절한 검색과 관련시키고, 비드/랭킹 최적화 프로세스 (152) 를 수행하여, 후속 빌링 이벤트에 대한 빌링 컴포넌트에서 비드의 수용을 나타낸다.
도 2 를 참조하면, 예를 들어, 통신 네트워크 (300) 가 네트워크 디바이스 또는 서버 (308) 및/또는 저장 디바이스 (310) 및/또는 데이터 소스 (312) 를 갖는 유선 네트워크 (306) (예를 들어, 로컬 영역 네트워크 (LAN)) 와 통신하기 위해 무선 네트워크 (304) 를 활용하는 하나 또는 복수의 클라이언트 디바이스 (302), 이 경우에서는 무선 전화 디바이스를 포함한다. 네트워크 디바이스/서버 (308) 및/또는 저장 디바이스 (310) 중 하나 또는 양자는 시스템 (100) 의 상기 논의된 컴포넌트의 일부 부분 및 공유된 메모리 공간 (116) 을 포함할 수도 있다. 또한, 데이터 소스 (312) 는 프로세서 및 그 프로세서와 통신하는 메모리를 포함할 수도 있고, 여기서, 메모리는 웹 기반 트랜잭션 서비스와 같은 알려지지 않은 서비스와 쉽게 인터페이스하도록 동작가능한 임의의 데이터의 소스로부터 복수의 데이터 투플을 생성하도록 동작가능한 투플 생성 로직을 갖는 투플 생성 모듈을 포함한다. 특히, 무선 디바이스 (102) 는 공유된 메모리 공간 (116) 에 위치되는 포털 (106) (도 1) 을 사용하는데 충분한 클라이언트 식별 컴포넌트 (322) 및 검색 서비스 인터페이스 (324) 와 같은 임의의 상주 애플리케이션과의 상호작용을 가능하게 하는 애플리케이션 프로그래밍 인터페이스 (API; 320) 를 통해서와 같이, 프로세서 (318) 와 통신하는 메모리 (316) 를 갖는 컴퓨터 플랫폼 (314) 을 포함한다.
또한, 네트워크 디바이스 또는 서버 (308) 및/또는 저장 디바이스 (310) 및/또는 데이터 소스 (312) 는 프로세서 및 그 프로세서와 통신하는 메모리, 뿐만 아니라 메모리 내에 저장되고 프로세서에 의해 실행가능한 인터페이싱, 검색 및 레이팅 모듈 (미도시) 을 포함할 수도 있고, 여기서, 인터페이스, 검색 및 레이팅 모듈은 상술한 공유된 메모리 공간 (116), 검색 서비스 투플 (106), 및 레이팅 서비스 투플 (118) 을 포함한다. 무선 네트워크 (304) 는 캐리어 네트워크 (326) 를 통해 유선 네트워크 (306) 에 접속된다. 네트워크 디바이스 또는 서버 (308) 및/또는 저장 디바이스 (310) 및/또는 데이터 소스 (312) 는 커뮤니티 관리 능력 및/또는 셀룰러 통신 서비스를 제공하기를 소망하는 임의의 다른 네트워크 컴포넌트와 통신 네트워크 (300) 상에 제공될 수도 있다. 네트워크 디바이스 또는 서버 (308) 및/또는 저장 디바이스 (310) 및/또는 데이터 소스 (312) 는 인터넷, 고정 LAN, WAN, 또는 다른 네트워크와 같은 데이터 링크일 수도 있는 데이터 링크 (328 및 330) 를 통해 캐리어 네트워크 (326) 와 통신할 수도 있다. 캐리어 네트워크 (326) 는 모바일 스위칭 센터 (MSC; 332) 로 전송된 메시지 (일반적으로, 데이터 패킷임) 를 제어한다. 또한, 캐리어 네트워크 (326) 는 인터넷 및/또는 POTS (plain old telephone service) 와 같은 네트워크 (330) 에 의해 MSC (332) 와 통신한다. 예를 들어, 네트워크 (330) 에서, 네트워크, 또는 인터넷 부분은 데이터를 전송하고, POTS 부분은 음성 정보를 전송한다. MSC (332) 는 데이터 네트워크 및/또는 데이터 전송용 인터넷 부분 및 음성 정보용 POTS 부분과 같은 다른 네트워크 (336) 에 의해 다중 기지국 (BTS; 334) 에 접속될 수도 있다. BTS (334) 는 예를 들어, 코드 분할 다중 액세스 (CDMA) 및 단문 메시징 서비스 (SMS) 각각, 또는 임의의 다른 OTA (over-the-air) 방법과 같은 소정의 음성 및/또는 데이터 패킷 서비스를 사용하여 무선 통신 디바이스 (302) 에 무선으로 매시지를 궁극적으로 브로드캐스트한다. 따라서, 시스템 (100; 도 1) 과 결합하여, 통신 네트워크 (300) 는 검색 개시 및 공유된 메모리 공간 (116) 에서의 데이터 오브젝트 사이의 보고를 허용한다.
도 2 가 본 시스템의 일 양태의 엘리먼트의 상호관계 및 무선 통신 네트워크의 컴포넌트를 더욱 완전하게 예시하는 대표도이다는 것에 유의해야 한다. 통신 네트워크 (300) 는 단지 예시적이고, 임의의 시스템을 포함할 수 있어서, 무선 통신 디바이스 (302) 와 같은 원격 모듈이 무선 네트워크 캐리어 및/또는 서비스를 제한하지 않고 포함하는 무선 및/또는 유선 네트워크 서로 사이 및/또는 다른 컴포넌트 사이에서 방송으로 통신한다.
도 6 에서, 예시적인 모바일 통신 디바이스 (400) 는 4개의 커서 키 (406) 및 선택 버튼 (408), 및 좌측, 중간 및 우측 메뉴 버튼 (410, 412 및 414) 을 갖는 다이얼 톤 멀티 기능 (DTMF) 키패드 (404) 와 같은 물리적 제어부를 포함할 수 있는 그래픽 사용자 인터페이스 (GUI; 402) 를 통해 인터페이스, 검색 및 레이팅 서비스에 원격으로 액세스하고 이를 제어하는 클라이언트 디바이스로서 기능한다. GUI (402) 는 도시된 바와 같이 디스플레이 (416) 를 포함할 수 있다. 다르게는, 터치 스크린 능력을 갖는 디스플레이가 소프트 입력 제어부 (미도시) 를 제공하기 위해 또한 사용될 수 있다. 디스플레이 (416) 는 검색 탭 (420), 플레이어 탭 (422), 찾기 (로컬) 탭 (424) 및 링크 탭 (426) 의 탭들의 계층하에서 구성된 동적 인덱스 (418) 를 나타낼 수 있다. 인덱스 (418) 는 유료 배치 A 및 B 엔트리 (428 및 430) 에 후속하는 무료 검색 결과 A 및 B 엔트리 (432 및 434) 의 랭킹을 포함할 수 있다. 상호작용할 수 있는 광고 배너 (436) 가 바람직하게는, 도시된 리스팅에 관련된 미디어 구매 기회 또는 부대 서비스에 대응하도록 선택된다.
도 7 에서, 서비스를 인터페이스하고, 검색하며 레이팅하는 예시적인 방법 (500) 이 블록 502 에서 시작하고, 클라이언트 디바이스로부터의 검색 데이터 투플이 공유된 메모리 공간에 수신된다. 블록 504 에서, 검색 서비스는 클라이언트 디바이스가 공유된 메모리 공간에서 서비스와 상호작용하는 것을 허용하는 인터페이스 속성을 제공한다. 블록 506 에서, 검색 요청이 서비스 투플로부터 하나 이상의 검색 엔진으로 패스되고, 이것은 블록 508 에서 검색 결과 데이터 투플을 공유된 메모리 공간에 배치한다. 레이팅 서비스가 블록 510 에서 검색 결과를 수신하며 블록 512 에서 비드에 대한 결과를 광고자에게 포워딩한다. 비드는 블록 514 에서 수신되고 최적화된다 (예를 들어, 그리디 알고리즘에 의한 수입 최대화). 비드의 수용은 수입을 고정하기 위해 블록 516 에서 트랙킹하는 레이팅 데이터 투플로서 보고될 수 있다. 블록 518 에서, 레이팅된 결과는 인터페이스 타입 마다 포맷되고 검색하기 위해 클라이언트 디바이스에 대해 블록 520 에서 공유된 메모리 공간에 배치된다.
도 3 에서, 예시적인 모바일 통신 디바이스 (400) 는 4개의 커서 키 (406) 및 선택 버튼 (408), 및 좌측, 중간 및 우측 메뉴 버튼 (410, 412 및 414) 을 갖는 다이얼 톤 멀티 기능 (DTMF) 키패드 (404) 와 같은 물리적 제어부를 포함할 수 있는 그래픽 사용자 인터페이스 (GUI; 402) 를 통해 인터페이스, 검색 및 레이팅 서비스에 원격으로 액세스하고 이를 제어하는 클라이언트 디바이스로서 기능한다. GUI (402) 는 도시된 바와 같이 디스플레이 (416) 를 포함할 수 있다. 다르게는, 터치 스크린 능력을 갖는 디스플레이가 소프트 입력 제어부 (미도시) 를 제공하기 위해 또한 사용될 수 있다. 디스플레이 (416) 는 검색 탭 (420), 플레이어 탭 (422), 찾기 (로컬) 탭 (424) 및 링크 탭 (426) 의 탭들의 계층하에서 구성된 동적 인덱스 (418) 를 나타낼 수 있다. 인덱스 (418) 는 유료 배치 A 및 B 엔트리 (428 및 430) 에 후속하는 무료 검색 결과 A 및 B 엔트리 (432 및 434) 의 랭킹을 포함할 수 있다. 상호작용할 수 있는 광고 배너 (436) 가 바람직하게는, 도시된 리스팅에 관련된 미디어 구매 기회 또는 부대 서비스에 대응하도록 선택된다.
도 4 에서, 소결합 네트워크상에서 분산 검색을 수행하는 방법 (600) 이, 모바일 디바이스 (602), 오퍼레이터 포털 (604), 오퍼레이터 검색 게이트웨이 (606), 린다-타입 분산 (예를 들어, 투플) 공간 서버 (608), 하나 이상의 검색 리졸버 (610), 및 각각의 검색 엔진 (612) 의 네트워크 엔터티들 사이의 콜로서 도시되어 있다. 가입자는 검색 요청을 오퍼레이터 포털 (604) 로 전송하기 위해 (블록 620) 모바일 디바이스 (602) 를 사용한다. 예를 들어, 검색 용어가 마돈나 또는 "광선 (ray of light)" 일 수 있다. 오퍼레이터 포털 (604) 은 검색 결과를 사용자에게 리턴하기에 충분한 정보 및 디스크립터를 포함하는 검색 문의를 검색 게이트웨이 (606) 에 포워딩한다 (블록 622). 차례로, 검색 게이트웨이 (606) 는 검색 결과 랭킹/포함에 대한 비드를 요청하기 위한 비드 팩터를 바람직하게 포함할 수 있는 검색 디스크립터로 사설 오브젝트 바디를 캡슐화한다 (블록 624). 검색 오브젝트 (626) 는 공유된 메모리 공간 서버 (608) 에 의해 유지된 공유된 메모리 공간에 배치되고, 검색 게이트웨이는 검색 요청의 결과에 대해 서버 (608) 를 모니터링한다 (블록 628).
리졸버 (610) 를 변경하는 다른 접속, 또는 리졸버(들) (610) 에 의한 공유된 메모리 공간의 기존의 모니터링 (블록 630) 은 검색 오브젝트 (626) 의 검색 디스크립터의 매치 (블록 632) 를 발생시킨다. 검색 리졸버 (블록 610) 는 검색을 각각의 검색 엔진 (612) 에 인터페이스하기 위해 검색 문의를 포맷한다 (블록 634). 그 후, 검색 엔진 (612) 은 검색을 수행하고 (블록 636), 검색 결과를 리졸버 (610) 로 리턴한다 (블록 638). 리졸버 (610) 는, 수신될 때 리졸버 (610) 에 보이지는 않지만 다른 원래의 사용자 검색으로 역으로의 트레이스를 보존하는 오브젝트 바디를 포함하는 투플 오브젝트에 검색 결과를 통합한다 (블록 640). 결과 오브젝트를 배치하는 것에 추가하여, 리졸버 (610) 는 투플 서버 (608) 에 의해 유지된 공간에 배치되는 결과/비드 오브젝트 (644) 를 형성하기 위한 예약 비드 (bespeak bid) 을 포함할 수 있다 (642).
게이트웨이 (606) 는 검색 결과를 매치하고, 공간에 배치된 다른 검색 결과 오브젝트에 따라 공간으로부터 오브젝트 (644) 를 제거한다 (블록 646). 검색 게이트웨이 (606) 는 오브젝트 바디와 상관하는 하나 이상의 검색 결과 오브젝트로부터 검색 결과를 수집하기 위해 오브젝트 (644) 를 언랩 (unwrap) 한다 (블록 648). 비드가 포함되는 예에 대해, 이러한 정보는 검색 결과를 레이팅 및/또는 랭크할 뿐만 아니라 수용되는 비드에 대해 비더에 빌링하기 위해 활용된다 (블록 650). 포털 (604) 은 랭킹된 검색 결과를 사용자에게 리턴한다 (블록 652).
도 5 에서, 분산 검색으로부터의 검색 결과의 수집은 제 3 자 (예를 들어, 검색 엔진, 광고자 등) 에 의한 결과 레이팅 비드에 대해 방법 (700) 을 통합함으로써 더욱 강화될 수 있다. 블록 702 에서, 사용자 검색 문의가 수신된다. 블록 704 에서, 사용자가 인증된다. 블록 706 에서, 검색 디스크립터가 형성된다. 예를 들어, 검색 문의 용어는 정확한 어구, 특정한 근접성 이내의 논리 조합, 문의에 명시적으로 추가된 복수의 형태, 문의에 추가된 동의어 등으로서 논리적으로 정의될 수 있다. 사용자의 특정한 분류가 검색 결과에 대한 사용자 선호도를 추론하기 위해 추가될 수 있다. 바람직하게는, 이들 사용자 데모그래픽은 또한 블록 708 에서 검색 결과 배치에 대한 요청된 비드의 일부일 수 있다. 검색이 제안된 사용자 선호도 또는 예상으로 리파인될 뿐만 아니라, 검색 결과의 제공자 또는 제 3 자가 리스팅의 상부 또는 그 리스팅의 상부에 대한 특정한 근접성내에 특정한 검색 결과를 배치하는 값에 대해 비딩할 수 있다.
블록 710 에서, 사용자 및/또는 클라이언트 디바이스의 특정한 식별을 허용하는 정보가 비공개적으로 렌더링되고, 검색 결과를 가지고 후속 리턴을 위해 보안 오브젝트 바디에 추가된다. 그 후, 검색 오브젝트는 블록 712 에서 린다 타입 분산 공간 ("공유된 메모리 공간") 에 배치된다. 그 후, 오퍼레이터에 대한 검색 게이트웨이는 결과에 대해 블록 714 에서 공유된 메모리 공간을 모니터링할 수 있다. 블록 716 에서 검색 결과 오브젝트의 검색 디스크립터에 대해 투플 매치가 발견되면, 검색 결과 오브젝트는 공유된 메모리 공간으로부터 제거된다 (718). 그 후, 블록 720 에서 검색 결과를 대기하는 시간이 만료되었는지에 관한 추가 결정이 이루어진다. 이러한 시간 만료는, 결과가 검출되지 않은 경우에 특정된 더 긴 지속기간 및 적어도 하나의 결과 오브젝트가 검출되는 경우에 더 짧은 지속기간을 갖는 범위일 수 있다. 블록 720 에서 만료되지 않으면, 프로세싱은 블록 716 으로 리턴한다. 블록 720 에서 만료되면, 사용자 검색에 대한 결과는 블록 722 에서 수집된다.
비드와 관련된 이들 결과에 대해, 비드는 블록 724 에서 검증된다. 검증은 아래의 검사 중 하나 이상을 포함할 수 있다. 첫째, 비딩하는 것이 허용되는 엔터티에 대해 사전심사 (prequalification) 리스트가 참조될 수 있어서, 평판이 안 좋은 엔터티가 검색 결과 랭킹을 부적절하게 지배하는 것을 회피할 수 있다. 둘째, 기준은 검색 문의와 불량하게 상관하는 특정한 아이템이 많이 배치되는 것을 배제할 수 있다. 예를 들어, 제 3 자는, 구두에 관한 무엇이 구두 문의에 있는지에 관계없이, 모든 리스트의 상부에 구두를 구매하기 위한 링크를 배치하기를 원할 수 있다. 독립적인 상관이 이루어질 수도 있거나 신뢰하는 검색 엔진의 리스트가 이러한 가짜 비드를 필터링하는데 충분하다. 셋째, 특정한 타입의 결과를 배제하기 위해 사용자 선호도에 대해 사용자 인증이 참조될 수 있다. 예를 들어, 특정한 사용자는 이들이 비드와 관련된 검색 결과를 수용하기를 원하면 더 낮은 서브스크립션 레이트를 수용할 수도 있다. 다른 사용자는 검색 서비스에 대한 프리미엄 서브스크립션 레이트에 대한 반응으로 비드에 기초하여 랭킹 결과를 배제할 수도 있다. 넷째, 비드는 특히, 자동 검색의 제한된 시간 제약내에서 수용으로부터 배제되는 전제조건을 포함할 수 있다.
그 후, 검증된 비드가 블록 726 에서 랭킹에 대해 최적화된다. 이러한 최적화는 수입 최대화를 추구하는 그리디 알고리즘을 따를 수 있다. 수입 생성 검색 결과를 디스플레이의 특정 부분 또는 특정 수치적 카운터 (예를 들어, 1 내지 3 리스팅) 에 제한하기 위한 제약이 포함될 수 있다. 강조를 위해, 수용된 비드가 리스팅 이외의 광고 배너와 같은 하이라이트된 방식으로 디스플레이될 수 있다. 그 후, 수용된 이들 비드는 블록 728 에서 장래 빌링 간격 동안 나타난다. 이러한 빌링은, 리스팅이 비드의 값을 높이기 위해, 또는 비드에 대한 조건으로서 사용자에 의해 활성화되는지를 반영할 수 있다. 여기에 개시된 양태들과 관련하여 설명한 다양한 예시적인 로직, 논리 블록, 모듈, 및 회로는, 범용 프로세서, 디지털 신호 프로세서 (DSP), 응용 주문형 집적 회로 (ASIC), 필드 프로그래머블 게이트 어레이 (FPGA) 또는 다른 프로그래머블 로직 디바이스, 개별 게이트 또는 트랜지스터 로직, 개별 하드웨어 컴포넌트, 또는 여기에 설명된 기능들을 수행하도록 설계된 이들의 임의의 조합으로 구현되거나 수행될 수도 있다. 범용 프로세서는 마이크로프로세서일 수도 있지만, 다르게는, 프로세서는 임의의 종래의 프로세서, 제어기, 마이크로제어기, 또는 상태 머신일 수도 있다. 프로세서는 또한, 컴퓨팅 디바이스의 조합, 예를 들어, DSP 와 마이크로프로세서의 조합, 복수의 마이크로프로세서, DSP 와 결합한 하나 이상의 마이크로프로세서, 또는 임의의 다른 이러한 구성으로서 구현될 수도 있다. 추가로, 적어도 하나의 프로세서가 상술한 단계들 및/또는 액션들 중 하나 이상을 수행하도록 동작가능한 하나 이상의 모듈을 포함할 수도 있다.
또한, 여기에 개시된 양태들과 관련하여 설명한 방법 또는 알고리즘의 단계들 및/또는 액션들은 하드웨어, 프로세서에 의해 실행된 소프트웨어 모듈, 또는 이들의 조합에서 직접적으로 구현될 수도 있다. 소프트웨어 모듈은, RAM 메모리, 플래시 메모리, ROM 메모리, EPROM 메모리, EEPROM 메모리, 레지스터, 하드 디스크, 착탈식 디스크, CD-ROM, 또는 당업계에 공지되어 있는 임의의 다른 형태의 저장 매체에 상주할 수도 있다. 예시적인 저장 매체가 프로세서에 커플링될 수도 있어서, 이 프로세서는 저장 매체로부터 정보를 판독할 수 있고 저장 매체에 정보를 기록할 수 있다. 다르게는, 저장 매체는 프로세서와 일체형일 수도 있다. 또한, 일부 양태에서, 프로세서 및 저장 매체는 ASIC 에 상주할 수도 있다. 추가적으로, ASIC 는 사용자 단말기에 상주할 수도 있다. 다르게는, 프로세서 및 저장 매체는 사용자 단말기에 개별 컴포넌트로서 상주할 수도 있다. 추가적으로, 일부 양태에서, 방법 또는 알고리즘의 단계들 및/또는 액션들은 컴퓨터 프로그램 제품으로 통합될 수도 있는 머신 판독가능한 매체 및/또는 컴퓨터 판독가능한 매체상에 코드들 및/또는 명령들 중 하나 또는 임의의 조합 또는 세트로서 상주할 수도 있다.
상술한 개시물이 예시적인 양태들 및/또는 버전들을 논의하지만, 다양한 변경 및 변형이 첨부한 청구범위에 의해 정의된 바와 같은 설명한 양태들 및/또는 양태들의 범위로부터 벗어나지 않고 여기에서 이루어질 수 있다는 것에 유의해야 한다. 또한, 설명한 양태들 및/또는 양태들의 엘리먼트들이 단수로 기재되거나 청구될 수도 있지만, 단수에 대한 제한이 명백하게 지정되지 않으면 복수가 의도된다. 추가로, 임의의 양태 및/또는 양태의 모두 또는 일부는 다르게 지정되지 않으면, 임의의 다른 양태 및/또는 양태의 모두 또는 일부와 활용될 수도 있다.
상기 설명한 예시적인 시스템의 관점에서, 개시한 주제에 따라 구현될 수도 있는 방법을 여러 흐름도를 참조하여 설명하였다. 설명의 간략화를 위해, 이 방법이 일련의 블록으로서 나타내고 설명되었지만, 일부 블록이 여기에 도시되고 설명된 것과 상이한 순서로 및/또는 다른 블록과 함께 발생할 수도 있기 때문에 청구물이 블록들의 순서에 의해 제한되지 않는다는 것을 이해해야 한다. 또한, 여기에 설명한 방법을 구현하는데 모든 예시된 블록들이 필요하지 않을 수도 있다. 추가로, 여기에 개시된 방법은 컴퓨터로의 이러한 방법의 전송 및 전달을 용이하게 하기 위해 제품상에 저장될 수 있다는 것을 더 이해해야 한다. 여기에 사용된 바와 같은, 용어 제품은, 임의의 컴퓨터 판독가능한 디바이스, 캐리어, 또는 매체로부터 액세스가능한 컴퓨터 프로그램을 포함하는 것으로 의도된다.
여기에 참조에 의해 통합되는 임의의 특허, 공보, 또는 다른 개시물 자료는 전체적으로 또는 부분적으로, 통합된 자료가 본 개시물에 설명된 기존의 정의, 스테이트먼트, 또는 다른 개시물 자료와 상반되지 않는 범위까지만 여기에 통합된다는 것을 이해해야 한다. 이와 같이 및 필요한 범위까지, 여기에 명백하게 설명된 바와 같은 본 개시물은 참조에 의해 여기에 통합된 임의의 상반하는 자료를 필요 없게 한다. 여기에 참조에 의해 통합되지만, 여기에 설명된 기존의 정의, 스테이트먼트, 또는 다른 개시물 자료와 상반되는 임의의 자료, 또는 그것의 일부는 그 통합된 자료와 기존의 개시물 자료 사이에 상반이 발생하지 않는 범위까지만 통합될 것이다.
본 출원에서 사용된 바와 같이, 용어 "컴포넌트", "모듈", "시스템" 등은 컴퓨터 관련 엔터티, 하드웨어, 하드웨어와 소프트웨어의 조합, 소프트웨어, 또는 실행중인 소프트웨어를 지칭하도록 의도된다. 예를 들어, 컴포넌트는 프로세서상에서 구동하는 프로세스, 프로세서, 오브젝트, 실행가능, 실행의 스레드, 프로그램, 및/또는 컴퓨터일 수도 있지만, 이에 제한되지 않는다. 예시로서, 서버상에서 구동하는 애플리케이션 및 서버 양자는 컴포넌트일 수 있다. 하나 이상의 컴포넌트가 프로세스 및/또는 실행의 스레드내에 상주할 수도 있으며, 컴포넌트는 하나의 컴퓨터상에 로컬화될 수도 있고/있거나 2개 이상의 컴퓨터 사이에 분산될 수도 있다.
단어 "예시적인" 은 예, 경우, 또는 예시로서 작용하는 것을 의미하도록 여기에서 사용된다. 여기에 "예시적인" 으로서 설명된 임의의 양태 또는 설계가 다른 양태들 또는 설계들 보다 바람직하거나 유리한 것으로서 반드시 해석되지는 않는다.
또한, 하나 이상의 양태는, 소프트웨어, 펌웨어, 하드웨어, 또는 이들의 임의의 조합을 생성하여, 개시된 양태들을 구현하기 위해 컴퓨터를 제어하도록 표준 프로그래밍 및/또는 엔지니어링 기술을 사용하는 방법, 장치, 또는 제품으로서 구현될 수도 있다. 여기에서 사용된 바와 같은 용어 "제품" (또는 다르게는 "컴퓨터 프로그램 제품") 은 임의의 컴퓨터 판독가능한 디바이스, 캐리어, 또는 매체로부터 액세스가능한 컴퓨터 프로그램을 포함하도록 의도된다. 예를 들어, 컴퓨터 판독가능한 매체는 자기 저장 디바이스 (예를 들어, 하드 디스크, 플로피 디스크, 자기 스트립 등), 광학 디스크 (예를 들어, 컴팩트 디스크 (CD), 디브이디 (DVD) 등), 스마트 카드, 및 플래시 메모리 디바이스 (예를 들어, 카드, 스틱 등) 를 포함할 수 있지만, 이에 제한되지 않는다. 추가적으로, 반송파가 전자 메일을 송신 및 수신하고, 인터넷 또는 로컬 영역 네트워크 (LAN) 와 같은 네트워크에 액세스하는데 사용된 바와 같은 컴퓨터 판독가능한 전자 데이터를 반송하기 위해 이용될 수 있다는 것을 이해해야 한다. 물론, 당업자는 다수의 변형물이 개시된 양태들의 범위를 벗어나지 않고 이러한 구성에 대해 이루어질 수도 있다는 것을 인식할 것이다.
다수의 컴포넌트, 모듈 등을 포함할 수도 있는 시스템과 관련하여 다양한 양태가 제공될 것이다. 다양한 시스템이 추가의 컴포넌트, 모듈 등을 포함할 수도 있고/있거나 도면과 관련하여 논의된 모든 컴포넌트, 모듈 등을 포함하지 않을 수도 있다는 것을 이해해야 한다. 이들 접근방식의 조합이 또한 사용될 수도 있다. 여기에 개시된 다양한 양태들은 터치 스크린 디스플레이 기술 및/또는 마우스 및 키보드 타입 인터페이스를 활용하는 디바이스를 포함하는 전기 디바이스상에서 수행될 수 있다. 이러한 디바이스의 예가 컴퓨터 (데스크탑 및 모바일), 스마트 폰, 개인 휴대 정보 단말기 (PDA), 및 유선 및 무선 양자인 다른 전자 디바이스를 포함한다.
도 1 에서, 분산 시스템 (100) 은, 하나 이상의 검색 엔진 (110) 으로부터의 검색 결과에 액세스하기 위해 모바일 통신 디바이스와 같은 클라이언트 디바이스 (104) 의 사용자 (102) 가 오퍼레이터 (108) 의 포털 (106) 에 액세스하는 것을 허용한다. "오프-포털 (off-portal)" 컨텐츠의 도전과제를 다루기 위해, 오퍼레이터 (108) 는 린다 (Linda)-스타일 분산 거래형 시스템 ("투플 시스템") (116) 에 배치되는 검색 오브젝트 (114) 를 생성하는 검색 게이트웨이 (112) 를 활용한다. 검색 게이트웨이 (112) 는 실제 검색 항목 및 컨텐츠 매체 및 다른 검색 제약의 타입과 같은 추가적인 다른 파라미터를 포함할 수 있는 검색 디스크립터 (118) 를 생성함으로써 검색 오브젝트를 구성한다. 오브젝트 바디 (120) 가 사용자 (102) 의 식별 및 검색 결과를 사용자 (102) 에게 어떻게 리턴하는지를 캡처하지만, 이러한 정보는 검색 게이트웨이에게만 오직 보인다.
검색 오브젝트 (114) 는 요청된 검색, 및 어쩌면 비드, 정보를 수신하기 위해 다른 투플과 상호작용하는 투플이다. "공유된 메모리 공간" 은 글로벌하게 공유되고 연상적으로 어드레싱된 메모리 공간으로서, 상기 메모리 공간은 투플의 그룹핑으로서 조직된다. "투플" 은 공유된 메모리 공간 시스템의 기본 엘리먼트이다. 린다와 같은 공유된 메모리 공간 기반 조정과 관련하여, 투플은 특정한 타입의 필드 또는 값을 갖는 벡터이다. 더 넓은 의미에서, "투플" 은 정보 저장 시스템에서의 엔트리이다. 예를 들어, 관계형 데이터베이스에서의 로우 (row) 를 투플로서 칭할 수 있다.
린다형 언어에서, "템플릿" 이라 불리는 구조가 매칭 기술을 통해 투플을 연상적으로 다루기 위해 사용된다. 템플릿은, 동일한 수의 필드를 갖고, 각 템플릿 필드가 대응하는 투플 필드에 매칭하는 경우에 투플에 매칭한다.
공유된 메모리 공간 기반 조정 언어는, 병렬 및 분산 프로그래밍의 핵심인 프로세스간 통신 및 동기화를 위한 단순하지만 강력한 메카니즘을 제공한다. 공유를 위한 데이터와의 프로세스는 투플을 생성하고, 이것을 공유된 메모리 공간에 배치한다. 데이터를 요구하는 프로세스는 공유된 메모리 공간으로부터 투플을 단순히 요청한다.
공유된 메모리 공간 프로그램은 다음을 포함하는 다수의 이유로 기록하고 유지하는 것이 더 쉬울 수도 있다.
(1) 수신지 언커플링 (완전 익명의 통신) -- 투플의 생성기는 그 투플의 장래 사용 또는 그것의 수신지에 관한 어떠한 지식도 요구하지 않는다.
(2) 공간 언커플링 -- 투플이 연관 어드레싱 방식을 사용하여 검색되기 때문에, 다중의 어드레스-공간-디스조인트 (disjoint) 프로세스가 동일한 방식으로 투플에 액세스할 수 있다.
(3) 시간적 언커플링 -- 투플은, 투플을 판독할 수도 있는 임의의 프로세스 또는 투플을 생성하는 프로세스에 관계없이 그들 자체의 라이프 스팬을 갖는다. 이것은 시간-디스조인트 프로세스가 심리스하게 통신할 수 있게 한다.
공유된 메모리 공간의 구현은 "폐쇄" 또는 "개방" 일 수 있다. 폐쇄 구현은 매우 효율적인 폐쇄 프로그램을 제공하기 위해 오브젝트와 소스 코드의 컴파일 시간 분석을 사용한다. 개방 구현은 런-타임 시스템이 임의의 사전 지식을 요구하지 않는 공유된 메모리 공간을 통해 프로세스, 에이전트, 및 프로그램이 조정하는 것을 허용한다. 본질적으로, 개방 구현은 영구적 데이터 저장을 제공한다.
린다 언어는 3개의 표준 명령들 또는 프리미티브 (primitive) 를 사용한다. (인포멀 의미를 갖는) 이들은 다음과 같다.
(1) out(tuple) 투플을 공유된 메모리 공간에 삽입.
(2) in(template) 템플릿에 매치하는 투플이 존재하면, 투플을 제거하고 인 (in) 을 수행하는 에이전트에 리턴한다. 매칭하는 투플이 이용가능하지 않으면, 매칭 투플이 이용가능할 때 까지 프리미티브가 블록킹.
(3) rd(template) 템플릿에 매치하는 투플이 존재하면, 투플의 카피를 rd 를 수행한 에이전트로 리턴. 매칭하는 투플이 없으면, 매칭 투플이 이용가능할 때 까지 프리미티브가 블록킹.
도 1 로 돌아가서, 공유된 메모리 공간 (116) 은 데이터 저장부를 포함하고, 검색 게이트웨이 (112) 에 의해 공유된 메모리 공간 (116) 에 배치된 검색 오브젝트 (데이터 투플) (114) 및 공유된 메모리 공간 (116) 에서의 예시적인 서비스 투플 (124) 각각은 은 투플 타입 (126) 및 투플 속성 (128) 을 포함하는 데이터의 순서화된 세트를 갖는 오브젝트를 각각 포함한다. 또한, 투플 속성 (128) 은 투플 타입 (126) 에 따라 변화할 수도 있다. 공유된 메모리 공간 (116) 은 데이터 오브젝트, 예를 들어, 투플 (124) 을 수신하도록 동작가능한 추상 공간 (abstract space) 을 포함하며, 그 공간내에서 수행될 수 있는 소정의 세트의 동작을 포함한다. 예를 들어, 소정의 세트의 함수가, "in" 함수 및 "rd" 함수를 포함할 수도 있고, 이 양자는 제공된 위치의 입력 파라미터를 공유된 메모리 공간내에 존재하는 값들과 매칭함으로써 공간에서 특정 투플의 선택을 허용하는 입력 파라미터를 취한다. 또한, "in" 및 "rd" 함수 양자는 넌-블록킹 등가물 (inp 및 rdp) 을 가질 수도 있다. 일부 양태에서, 소정의 세트의 함수는 공유된 메모리 공간 (116) 및 투플 (124) 양자에 대해 수행될 수도 있는 JAVA 방법과 같은 동작의 세트를 포함할 수도 있다.
또한, 특정한 예에서, 각 투플 (124) 은 com.qualcomm.qspaces.linda.Tuple 클래스 또는 서브클래스의 인스턴스이며, 투플 (124) 이 구성될 때 특정되는 오브젝트의 어레이에 의해 정의된 속성 (128) 의 세트와 생성된다. 어레이는 제로 길이일 수 있지만, 일부 양태에서는, 어레이는 널이 아닐 수도 있다. 또한, 일부 양태에서, 널일 수도 있는 어레이에서의 개별 속성 오브젝트는 없다.
일부 양태에서, 투플 (124) 이 먼저 구성될 때 및 각각의 속성 (128) 이 각각의 투플로부터 검색될 때 마다, 오브젝트의 어레이는 초고속 형태의 인-메모리 직렬화를 사용하여 수동으로 카피될 수도 있다. 이러한 프로세스는 투플 (124) 이 불변이도록 허용하며, 따라서, 투플 (124) 이 상주하는 공유된 메모리 공간 (116) 의 무결성을 보장한다.
상기 논의한 양태에서, 투플 균일성 (equality) 은, t1.equals(t2) 이면 t2.equals(t1) 이라고 하는 대칭 룰을 포함하는, 임의의 JAVA 오브젝트의 동일한 균일성 원리를 고수한다.
구체적으로는, 템플릿으로서 알려진 t2 가 아래의 기준을 충족하면, 투플은 다른 투플, 예를 들어, t1.equals(t2) 과 동일하다.
1) 템플릿 t2 의 타입 (126) 은 투플 t1 과 동일한 타입 (126) 이다.
2) 템플릿 t2 의 속성 (128) 은 투플 t1 의 속성 (128) 과 동일하고, 이것은, t2 의 속성 (128) 이 그들의 순서에 관계없이 t1 의 속성 (128) 과 동일하다는 것을 의미한다.
다른 양태에서, 템플릿으로서 알려진 t2 가 다음의 기준을 충족하면, 투플은 다른 투플, 예를 들어, t1.matches(t2) 에 매치한다.
1) 템플릿 t2 의 타입 (126) 은 투플 t1 과 동일한 타입 (126) 또는 투플 t1 의 수퍼 클래스이다.
2) 템플릿 t2 의 속성 (128) 은 투플 t1 의 속성 (128) 에 매치하고, 이것은 t2 의 속성 (128) 이 그들의 순서에 관계없이 t1 의 속성 (128) 의 동일한 세트 또는 서브세트이다는 것을 의미한다.
하나의 투플이 다른 투플과 매칭할 때, 대칭 룰은 적용되지 않고, 그래서, t1.matches(t2) 는 t2.matches(t1) 과 반드시 동일하지 않다.
일부 양태에서, 투플 속성 (128) 의 하나의 세트와 다른 세트의 비교는 정상 오브젝트 균일성 룰을 사용하여서, 투플 속성 (128) 으로서 사용된 임의의 오브젝트가 object.equals(Object obj) 및 object.hashcode() 방법을 구현할 수 있다.
투플 (124) 이 리스 (lease; 130) 와 함께 공유된 메모리 공간 (116) 에 추가된다. 리스 (130) 는 예를 들어, 밀리초에서 특정된 기간이고, 이것은 투플이 각각의 공유된 메모리 공간 (116) 에서 얼마나 길게 유지될지를 정의한다. 예를 들어, 제로 값을 갖는 리스 (130) 는, 각각의 투플이 결코 만료되지 않는다는 것을 나타낸다. 리스 (130) 가 각각의 투플에 대해 만료되면, 투플은 공유된 메모리 공간 (116) 으로부터 자동으로 제거된다.
도시된 투플 (124) 은 검색 오브젝트 (114) 와 같은 데이터 투플 이외의 서비스 투플일 수 있다. 서비스 투플 (124) 은 게이트웨이 (112) 와 같은 공유된 메모리 공간 (116) 의 클라이언트와 상호작용하는 서비스를 나타낸다. 또한, 서비스 투플 (124) 은 또한, 공유된 메모리 공간 (116) 및 그 공간의 다른 투플과 또한 상호작용할 수도 있는 독립적으로 자율적인 "라이브 (live)" JAVA 오브젝트이다. 서비스 투플 (124) 은 예를 들어, 투플 타입 (126) 과 속성 (128) 을 매칭함으로써 다른 투플과 동일한 방식으로 발견될 수도 있다. 일부 양태에서, 서비스 투플 (124) 은 이러한 방식으로 사용되지 않을 수도 있지만, 오히려, 서비스 투플 (106) 은 데이터 투플 (114) 과 같은 다른 투플을 공유된 메모리 공간 (116) 에 배치함으로써 간접적으로 상호작용된다.
예를 들어, 각각의 게이트웨이 (112) 와 같은 클라이언트는 속성 "abc" 및 "123" 을 갖는 타입 A 의 데이터 투플 (124) 을 생성할 수도 있으며, 투플을 공유된 메모리 공간 (116) 에 배치한다. 이와 같이, 데이터 투플 (124) 은 다음의 표기를 사용하여 설명될 수 있다.
(A, "abc", 123)
서비스 투플 (124) 은 클라이언트 애플리케이션과 동일한 방식으로 공유된 메모리 공간 (116) 과 상호작용할 수 있는 라이브 오브젝트이다. 이와 같이, 이러한 예에서, 서비스 투플 (124) 이 예시되었고, 타입 A 에 대한 매칭 템플릿 (126) 및 임의의 속성을 갖는 임의의 투플에 대한 공유된 메모리 공간 (116) 으로부터의 판독에 대한 블록킹이다. 이러한 매칭 기준은 다음과 같이 기재될 수 있다.
(A, ?s, ?x)
여기서, ?s 및 ?x 는, 스트링 s 및 정수 x 의 값이 매칭될 것이라는 것을 의미한다. 따라서, 공유된 메모리 공간 (116) 은 서비스 투플 (124) 로부터의 템플릿에 매치하며, 그 후, 공유된 메모리 공간 (116) 으로부터 투플 (114) 을 판독할 것이다. 이러한 방식으로, 설명된 양태는 투플의 형태의 파라미터를 서비스로 패스한다.
또한, 시스템 (100) 에서, 사용자 인터페이스를 나타내는 오브젝트를 서비스 오브젝트 자체로 임베드할 수 있다. 다음의 사용자 인터페이스 서비스 투플 :
(A, [Java], [Flash], [uiOne])
을 고려한다.
이러한 서비스 투플 (미도시) 은 캘리포니아 샌디에고 소재의 QUALCOMM Incorporated 의 JAVA™, ADOBE FLASH, 및 uiOne™ 기술에 정의된 3개의 사용자 인터페이스 오브젝트를 포함한다. 이동성의 컨텍스트에서, 본 양태는 광범위한 다양한 무선 디바이스에 걸친 서비스의 제공을 가능하게 하며, 각 무선 디바이스는, Java, Flash 또는 uiOne 과 같은 상이한 기술의 지원에 관한 것이든, 심지어 단일 기술의 다중의 변형에 관한 것이든, 스크린 사이즈 또는 다른 디바이스 특정 특성에 대한 최적화를 선택적으로 포함하는 그것의 자체 특정 요건을 갖는다. 따라서, 사용자 인터페이스 서비스 오브젝트를 위치시키고, 그 후, 그것으로부터 사용자 인터페이스 컴포넌트를 로딩시킴으로써 공유된 메모리 공간 (116) 에 표현된 분산 컴퓨팅 엔터티와 쉽게 통신하기 위한 능력이 강화된다.
다시 도 1 을 참조하면, 하나 이상의 검색 리졸버 (132) 가 아마도 동적으로 공유된 메모리 공간 (116) 에 접속된다. 리졸버 (132) 는 검색 모니터 투플 (134) 로 검색 오브젝트 (114) 에 대해 공유된 메모리 공간 (116) 을 모니터링할 때 도시된다. 리졸버 (132) 는 각각의 검색 엔진 (110) 에 대한 접근 검색 문의 포맷으로 검색 디스크립터 (118) 를 포맷하기 위한 커스텀 검색 메카니즘으로서 기능한다. 일부 경우에서, 디스크립터 (118) 는 추구되지 않는 미디어 컨텐츠 (예를 들어, 오디오 MP3 파일) 의 특수화된 데이터베이스에 전용된 검색 엔진과 같은 검색에 대해 특정한 검색 엔진을 적절하게 렌더링하는 제한을 제안한다. 따라서, 검색 엔진 (110) 의 다양한 조합 및 수가 검색을 수행하기 위해 동적으로 얻어질 수도 있다. 각각의 검색의 완료시에, 각 검색 리졸버 (132) 는 공유된 메모리 공간 (116) 에 역으로 배치되는 검색 결과 투플 (136) 을 생성한다.
오퍼레이터 (108) 의 검색 게이트웨이 (112) 는, 클라이언트 디바이스 (104) 의 다른 사용자 (102) 에 대한 다수의 다른 펜딩 검색 및 이러한 검색의 결과에 대해 공유된 메모리 공간 (116) 을 모니터링한다. 이러한 모니터링은 결과/비드 모니터 투플 (138) 에 의해 도시된다. 예를 들어, 서비스 투플이 모든 검색에 대한 결과를 볼 수 있거나, 커스텀 데이터 투플이 검색에 대해 할당된 시간 지속기간 동안 선택된 리스 (130) 를 아마도 갖는 각 펜딩 검색을 위해 공간 (116) 에 배치될 수 있다. 검색 결과 투플 (136) 의 검출시에, 게이트웨이 (112) 는 이들 투플이 공간 (116) 으로부터 제거되게 한다. 각 검색 결과 투플 (136) 에 포함된 사설 오브젝트 바디 (120) 는, 검색 결과의 하나 이상의 세트가 수집되어 포털 (106) 을 통해 정확한 사용자 (102) 에게 리턴될 수 있도록 추출된다.
오브젝트 바디 (120) 가 사용자 (102) 를 단독으로 식별하고, 대응하는 클라이언트 디바이스 (104) 에 결과를 전송하는데 충분할 수 있다는 것을 이해해야 한다. 다르게는, 증가된 프라이버시 및/또는 감소된 메시지 사이즈 또는 다른 이유로, 오브젝트 바디 (120) 는 오퍼레이터 (108) 에 의해 유지된 펜딩 검색 데이터 구조 (140) 에 레퍼런싱될 수 있는 고유 코드에 제한될 수 있다. 또한, 포털 (106) 의 사용은 오퍼레이터 (108) 에 의해 유지된 사용자 데이터베이스 (142) 를 참조하여 제한되거나 (예를 들어, 인가된 사용자) 빌링 (billing) (예를 들어, 검색 당 요금) 을 위해 모니터링될 수 있다.
사용자 (102) 에 대한 큰 적용가능성을 갖는 방식으로 검색 결과를 바람직하게 랭킹하고/하거나 검색 서비스를 제공함으로써 생성된 수입을 강화하기 위한 방식으로서, 게이트웨이 (112) 는 검색 오브젝트 (114) 를 공간 (116) 에 배치하는 부분으로서 레이팅 비드를 요청할 수 있다. 이러한 장치는, 이전부터 존재하고 있을 수 있고 묵시적일 수 있다. 다르게는 또는 또한, 각 검색 오브젝트 (114) 는 검색 리졸버 (132) 에 의해 선택적으로 동작되는 비드 팩터 속성 (144) 을 통합함으로써 비드를 요청할 수 있다. 예를 들어, 비드 팩터 속성 (144) 은 보고될 비드 파라미터 (예를 들어, 비더 (bidder) 의 아이덴티티, 상위 배치를 위한 비드 값, 제 1 의 5개의 리스팅내의 배치를 위한 비드 값, 제약된 모바일 디바이스 디스플레이의 제 1 스크린내의 배치를 위한 비드 값 등) 를 특정할 수 있다. 비드 팩터 속성 (144) 은 광고자에 의해 견적될 수 있는 사용자에 관한 데모그래픽 정보 (예를 들어, 위치, 나이 그룹, 사회경제적 클래스 등) 를 포함할 수 있다. 따라서, 검색 리졸버 (132) 는 검색 결과 (136) 의 일부로서 비드 응답 속성 (146) 을 포함할 수 있다.
다르게는 또는 또한, 광고자 (148) 와 같은 제 3 자가 비드를 결과/비드 모니터 (138) 에 제공하는 상품/서비스 비드 투플 (150) 로 적용가능한 검색 오브젝트 (114) 및/또는 검색 결과 오브젝트 (136) 에 대해 공간 (116) 을 모니터링할 수 있다. 따라서, 게이트웨이 (112) 는 이들 비드를 적절한 검색과 관련시키고, 비드/랭킹 최적화 프로세스 (152) 를 수행하여, 후속 빌링 이벤트에 대한 빌링 컴포넌트에서 비드의 수용을 나타낸다.
도 2 를 참조하면, 예를 들어, 통신 네트워크 (300) 가 네트워크 디바이스 또는 서버 (308) 및/또는 저장 디바이스 (310) 및/또는 데이터 소스 (312) 를 갖는 유선 네트워크 (306) (예를 들어, 로컬 영역 네트워크 (LAN)) 와 통신하기 위해 무선 네트워크 (304) 를 활용하는 하나 또는 복수의 클라이언트 디바이스 (302), 이 경우에서는 무선 전화 디바이스를 포함한다. 네트워크 디바이스/서버 (308) 및/또는 저장 디바이스 (310) 중 하나 또는 양자는 시스템 (100) 의 상기 논의된 컴포넌트의 일부 부분 및 공유된 메모리 공간 (116) 을 포함할 수도 있다. 또한, 데이터 소스 (312) 는 프로세서 및 그 프로세서와 통신하는 메모리를 포함할 수도 있고, 여기서, 메모리는 웹 기반 트랜잭션 서비스와 같은 알려지지 않은 서비스와 쉽게 인터페이스하도록 동작가능한 임의의 데이터의 소스로부터 복수의 데이터 투플을 생성하도록 동작가능한 투플 생성 로직을 갖는 투플 생성 모듈을 포함한다. 특히, 무선 디바이스 (102) 는 공유된 메모리 공간 (116) 에 위치되는 포털 (106) (도 1) 을 사용하는데 충분한 클라이언트 식별 컴포넌트 (322) 및 검색 서비스 인터페이스 (324) 와 같은 임의의 상주 애플리케이션과의 상호작용을 가능하게 하는 애플리케이션 프로그래밍 인터페이스 (API; 320) 를 통해서와 같이, 프로세서 (318) 와 통신하는 메모리 (316) 를 갖는 컴퓨터 플랫폼 (314) 을 포함한다.
또한, 네트워크 디바이스 또는 서버 (308) 및/또는 저장 디바이스 (310) 및/또는 데이터 소스 (312) 는 프로세서 및 그 프로세서와 통신하는 메모리, 뿐만 아니라 메모리 내에 저장되고 프로세서에 의해 실행가능한 인터페이싱, 검색 및 레이팅 모듈 (미도시) 을 포함할 수도 있고, 여기서, 인터페이스, 검색 및 레이팅 모듈은 상술한 공유된 메모리 공간 (116), 검색 서비스 투플 (106), 및 레이팅 서비스 투플 (118) 을 포함한다. 무선 네트워크 (304) 는 캐리어 네트워크 (326) 를 통해 유선 네트워크 (306) 에 접속된다. 네트워크 디바이스 또는 서버 (308) 및/또는 저장 디바이스 (310) 및/또는 데이터 소스 (312) 는 커뮤니티 관리 능력 및/또는 셀룰러 통신 서비스를 제공하기를 소망하는 임의의 다른 네트워크 컴포넌트와 통신 네트워크 (300) 상에 제공될 수도 있다. 네트워크 디바이스 또는 서버 (308) 및/또는 저장 디바이스 (310) 및/또는 데이터 소스 (312) 는 인터넷, 고정 LAN, WAN, 또는 다른 네트워크와 같은 데이터 링크일 수도 있는 데이터 링크 (328 및 330) 를 통해 캐리어 네트워크 (326) 와 통신할 수도 있다. 캐리어 네트워크 (326) 는 모바일 스위칭 센터 (MSC; 332) 로 전송된 메시지 (일반적으로, 데이터 패킷임) 를 제어한다. 또한, 캐리어 네트워크 (326) 는 인터넷 및/또는 POTS (plain old telephone service) 와 같은 네트워크 (330) 에 의해 MSC (332) 와 통신한다. 예를 들어, 네트워크 (330) 에서, 네트워크, 또는 인터넷 부분은 데이터를 전송하고, POTS 부분은 음성 정보를 전송한다. MSC (332) 는 데이터 네트워크 및/또는 데이터 전송용 인터넷 부분 및 음성 정보용 POTS 부분과 같은 다른 네트워크 (336) 에 의해 다중 기지국 (BTS; 334) 에 접속될 수도 있다. BTS (334) 는 예를 들어, 코드 분할 다중 액세스 (CDMA) 및 단문 메시징 서비스 (SMS) 각각, 또는 임의의 다른 OTA (over-the-air) 방법과 같은 소정의 음성 및/또는 데이터 패킷 서비스를 사용하여 무선 통신 디바이스 (302) 에 무선으로 매시지를 궁극적으로 브로드캐스트한다. 따라서, 시스템 (100; 도 1) 과 결합하여, 통신 네트워크 (300) 는 검색 개시 및 공유된 메모리 공간 (116) 에서의 데이터 오브젝트 사이의 보고를 허용한다.
도 2 가 본 시스템의 일 양태의 엘리먼트의 상호관계 및 무선 통신 네트워크의 컴포넌트를 더욱 완전하게 예시하는 대표도이다는 것에 유의해야 한다. 통신 네트워크 (300) 는 단지 예시적이고, 임의의 시스템을 포함할 수 있어서, 무선 통신 디바이스 (302) 와 같은 원격 모듈이 무선 네트워크 캐리어 및/또는 서비스를 제한하지 않고 포함하는 무선 및/또는 유선 네트워크 서로 사이 및/또는 다른 컴포넌트 사이에서 방송으로 통신한다.
도 6 에서, 예시적인 모바일 통신 디바이스 (400) 는 4개의 커서 키 (406) 및 선택 버튼 (408), 및 좌측, 중간 및 우측 메뉴 버튼 (410, 412 및 414) 을 갖는 다이얼 톤 멀티 기능 (DTMF) 키패드 (404) 와 같은 물리적 제어부를 포함할 수 있는 그래픽 사용자 인터페이스 (GUI; 402) 를 통해 인터페이스, 검색 및 레이팅 서비스에 원격으로 액세스하고 이를 제어하는 클라이언트 디바이스로서 기능한다. GUI (402) 는 도시된 바와 같이 디스플레이 (416) 를 포함할 수 있다. 다르게는, 터치 스크린 능력을 갖는 디스플레이가 소프트 입력 제어부 (미도시) 를 제공하기 위해 또한 사용될 수 있다. 디스플레이 (416) 는 검색 탭 (420), 플레이어 탭 (422), 찾기 (로컬) 탭 (424) 및 링크 탭 (426) 의 탭들의 계층하에서 구성된 동적 인덱스 (418) 를 나타낼 수 있다. 인덱스 (418) 는 유료 배치 A 및 B 엔트리 (428 및 430) 에 후속하는 무료 검색 결과 A 및 B 엔트리 (432 및 434) 의 랭킹을 포함할 수 있다. 상호작용할 수 있는 광고 배너 (436) 가 바람직하게는, 도시된 리스팅에 관련된 미디어 구매 기회 또는 부대 서비스에 대응하도록 선택된다.
도 7 에서, 서비스를 인터페이스하고, 검색하며 레이팅하는 예시적인 방법 (500) 이 블록 502 에서 시작하고, 클라이언트 디바이스로부터의 검색 데이터 투플이 공유된 메모리 공간에 수신된다. 블록 504 에서, 검색 서비스는 클라이언트 디바이스가 공유된 메모리 공간에서 서비스와 상호작용하는 것을 허용하는 인터페이스 속성을 제공한다. 블록 506 에서, 검색 요청이 서비스 투플로부터 하나 이상의 검색 엔진으로 패스되고, 이것은 블록 508 에서 검색 결과 데이터 투플을 공유된 메모리 공간에 배치한다. 레이팅 서비스가 블록 510 에서 검색 결과를 수신하며 블록 512 에서 비드에 대한 결과를 광고자에게 포워딩한다. 비드는 블록 514 에서 수신되고 최적화된다 (예를 들어, 그리디 알고리즘에 의한 수입 최대화). 비드의 수용은 수입을 고정하기 위해 블록 516 에서 트랙킹하는 레이팅 데이터 투플로서 보고될 수 있다. 블록 518 에서, 레이팅된 결과는 인터페이스 타입 마다 포맷되고 검색하기 위해 클라이언트 디바이스에 대해 블록 520 에서 공유된 메모리 공간에 배치된다.
도 3 에서, 예시적인 모바일 통신 디바이스 (400) 는 4개의 커서 키 (406) 및 선택 버튼 (408), 및 좌측, 중간 및 우측 메뉴 버튼 (410, 412 및 414) 을 갖는 다이얼 톤 멀티 기능 (DTMF) 키패드 (404) 와 같은 물리적 제어부를 포함할 수 있는 그래픽 사용자 인터페이스 (GUI; 402) 를 통해 인터페이스, 검색 및 레이팅 서비스에 원격으로 액세스하고 이를 제어하는 클라이언트 디바이스로서 기능한다. GUI (402) 는 도시된 바와 같이 디스플레이 (416) 를 포함할 수 있다. 다르게는, 터치 스크린 능력을 갖는 디스플레이가 소프트 입력 제어부 (미도시) 를 제공하기 위해 또한 사용될 수 있다. 디스플레이 (416) 는 검색 탭 (420), 플레이어 탭 (422), 찾기 (로컬) 탭 (424) 및 링크 탭 (426) 의 탭들의 계층하에서 구성된 동적 인덱스 (418) 를 나타낼 수 있다. 인덱스 (418) 는 유료 배치 A 및 B 엔트리 (428 및 430) 에 후속하는 무료 검색 결과 A 및 B 엔트리 (432 및 434) 의 랭킹을 포함할 수 있다. 상호작용할 수 있는 광고 배너 (436) 가 바람직하게는, 도시된 리스팅에 관련된 미디어 구매 기회 또는 부대 서비스에 대응하도록 선택된다.
도 4 에서, 소결합 네트워크상에서 분산 검색을 수행하는 방법 (600) 이, 모바일 디바이스 (602), 오퍼레이터 포털 (604), 오퍼레이터 검색 게이트웨이 (606), 린다-타입 분산 (예를 들어, 투플) 공간 서버 (608), 하나 이상의 검색 리졸버 (610), 및 각각의 검색 엔진 (612) 의 네트워크 엔터티들 사이의 콜로서 도시되어 있다. 가입자는 검색 요청을 오퍼레이터 포털 (604) 로 전송하기 위해 (블록 620) 모바일 디바이스 (602) 를 사용한다. 예를 들어, 검색 용어가 마돈나 또는 "광선 (ray of light)" 일 수 있다. 오퍼레이터 포털 (604) 은 검색 결과를 사용자에게 리턴하기에 충분한 정보 및 디스크립터를 포함하는 검색 문의를 검색 게이트웨이 (606) 에 포워딩한다 (블록 622). 차례로, 검색 게이트웨이 (606) 는 검색 결과 랭킹/포함에 대한 비드를 요청하기 위한 비드 팩터를 바람직하게 포함할 수 있는 검색 디스크립터로 사설 오브젝트 바디를 캡슐화한다 (블록 624). 검색 오브젝트 (626) 는 공유된 메모리 공간 서버 (608) 에 의해 유지된 공유된 메모리 공간에 배치되고, 검색 게이트웨이는 검색 요청의 결과에 대해 서버 (608) 를 모니터링한다 (블록 628).
리졸버 (610) 를 변경하는 다른 접속, 또는 리졸버(들) (610) 에 의한 공유된 메모리 공간의 기존의 모니터링 (블록 630) 은 검색 오브젝트 (626) 의 검색 디스크립터의 매치 (블록 632) 를 발생시킨다. 검색 리졸버 (블록 610) 는 검색을 각각의 검색 엔진 (612) 에 인터페이스하기 위해 검색 문의를 포맷한다 (블록 634). 그 후, 검색 엔진 (612) 은 검색을 수행하고 (블록 636), 검색 결과를 리졸버 (610) 로 리턴한다 (블록 638). 리졸버 (610) 는, 수신될 때 리졸버 (610) 에 보이지는 않지만 다른 원래의 사용자 검색으로 역으로의 트레이스를 보존하는 오브젝트 바디를 포함하는 투플 오브젝트에 검색 결과를 통합한다 (블록 640). 결과 오브젝트를 배치하는 것에 추가하여, 리졸버 (610) 는 투플 서버 (608) 에 의해 유지된 공간에 배치되는 결과/비드 오브젝트 (644) 를 형성하기 위한 예약 비드 (bespeak bid) 을 포함할 수 있다 (642).
게이트웨이 (606) 는 검색 결과를 매치하고, 공간에 배치된 다른 검색 결과 오브젝트에 따라 공간으로부터 오브젝트 (644) 를 제거한다 (블록 646). 검색 게이트웨이 (606) 는 오브젝트 바디와 상관하는 하나 이상의 검색 결과 오브젝트로부터 검색 결과를 수집하기 위해 오브젝트 (644) 를 언랩 (unwrap) 한다 (블록 648). 비드가 포함되는 예에 대해, 이러한 정보는 검색 결과를 레이팅 및/또는 랭크할 뿐만 아니라 수용되는 비드에 대해 비더에 빌링하기 위해 활용된다 (블록 650). 포털 (604) 은 랭킹된 검색 결과를 사용자에게 리턴한다 (블록 652).
도 5 에서, 분산 검색으로부터의 검색 결과의 수집은 제 3 자 (예를 들어, 검색 엔진, 광고자 등) 에 의한 결과 레이팅 비드에 대해 방법 (700) 을 통합함으로써 더욱 강화될 수 있다. 블록 702 에서, 사용자 검색 문의가 수신된다. 블록 704 에서, 사용자가 인증된다. 블록 706 에서, 검색 디스크립터가 형성된다. 예를 들어, 검색 문의 용어는 정확한 어구, 특정한 근접성 이내의 논리 조합, 문의에 명시적으로 추가된 복수의 형태, 문의에 추가된 동의어 등으로서 논리적으로 정의될 수 있다. 사용자의 특정한 분류가 검색 결과에 대한 사용자 선호도를 추론하기 위해 추가될 수 있다. 바람직하게는, 이들 사용자 데모그래픽은 또한 블록 708 에서 검색 결과 배치에 대한 요청된 비드의 일부일 수 있다. 검색이 제안된 사용자 선호도 또는 예상으로 리파인될 뿐만 아니라, 검색 결과의 제공자 또는 제 3 자가 리스팅의 상부 또는 그 리스팅의 상부에 대한 특정한 근접성내에 특정한 검색 결과를 배치하는 값에 대해 비딩할 수 있다.
블록 710 에서, 사용자 및/또는 클라이언트 디바이스의 특정한 식별을 허용하는 정보가 비공개적으로 렌더링되고, 검색 결과를 가지고 후속 리턴을 위해 보안 오브젝트 바디에 추가된다. 그 후, 검색 오브젝트는 블록 712 에서 린다 타입 분산 공간 ("공유된 메모리 공간") 에 배치된다. 그 후, 오퍼레이터에 대한 검색 게이트웨이는 결과에 대해 블록 714 에서 공유된 메모리 공간을 모니터링할 수 있다. 블록 716 에서 검색 결과 오브젝트의 검색 디스크립터에 대해 투플 매치가 발견되면, 검색 결과 오브젝트는 공유된 메모리 공간으로부터 제거된다 (718). 그 후, 블록 720 에서 검색 결과를 대기하는 시간이 만료되었는지에 관한 추가 결정이 이루어진다. 이러한 시간 만료는, 결과가 검출되지 않은 경우에 특정된 더 긴 지속기간 및 적어도 하나의 결과 오브젝트가 검출되는 경우에 더 짧은 지속기간을 갖는 범위일 수 있다. 블록 720 에서 만료되지 않으면, 프로세싱은 블록 716 으로 리턴한다. 블록 720 에서 만료되면, 사용자 검색에 대한 결과는 블록 722 에서 수집된다.
비드와 관련된 이들 결과에 대해, 비드는 블록 724 에서 검증된다. 검증은 아래의 검사 중 하나 이상을 포함할 수 있다. 첫째, 비딩하는 것이 허용되는 엔터티에 대해 사전심사 (prequalification) 리스트가 참조될 수 있어서, 평판이 안 좋은 엔터티가 검색 결과 랭킹을 부적절하게 지배하는 것을 회피할 수 있다. 둘째, 기준은 검색 문의와 불량하게 상관하는 특정한 아이템이 많이 배치되는 것을 배제할 수 있다. 예를 들어, 제 3 자는, 구두에 관한 무엇이 구두 문의에 있는지에 관계없이, 모든 리스트의 상부에 구두를 구매하기 위한 링크를 배치하기를 원할 수 있다. 독립적인 상관이 이루어질 수도 있거나 신뢰하는 검색 엔진의 리스트가 이러한 가짜 비드를 필터링하는데 충분하다. 셋째, 특정한 타입의 결과를 배제하기 위해 사용자 선호도에 대해 사용자 인증이 참조될 수 있다. 예를 들어, 특정한 사용자는 이들이 비드와 관련된 검색 결과를 수용하기를 원하면 더 낮은 서브스크립션 레이트를 수용할 수도 있다. 다른 사용자는 검색 서비스에 대한 프리미엄 서브스크립션 레이트에 대한 반응으로 비드에 기초하여 랭킹 결과를 배제할 수도 있다. 넷째, 비드는 특히, 자동 검색의 제한된 시간 제약내에서 수용으로부터 배제되는 전제조건을 포함할 수 있다.
그 후, 검증된 비드가 블록 726 에서 랭킹에 대해 최적화된다. 이러한 최적화는 수입 최대화를 추구하는 그리디 알고리즘을 따를 수 있다. 수입 생성 검색 결과를 디스플레이의 특정 부분 또는 특정 수치적 카운터 (예를 들어, 1 내지 3 리스팅) 에 제한하기 위한 제약이 포함될 수 있다. 강조를 위해, 수용된 비드가 리스팅 이외의 광고 배너와 같은 하이라이트된 방식으로 디스플레이될 수 있다. 그 후, 수용된 이들 비드는 블록 728 에서 장래 빌링 간격 동안 나타난다. 이러한 빌링은, 리스팅이 비드의 값을 높이기 위해, 또는 비드에 대한 조건으로서 사용자에 의해 활성화되는지를 반영할 수 있다. 여기에 개시된 양태들과 관련하여 설명한 다양한 예시적인 로직, 논리 블록, 모듈, 및 회로는, 범용 프로세서, 디지털 신호 프로세서 (DSP), 응용 주문형 집적 회로 (ASIC), 필드 프로그래머블 게이트 어레이 (FPGA) 또는 다른 프로그래머블 로직 디바이스, 개별 게이트 또는 트랜지스터 로직, 개별 하드웨어 컴포넌트, 또는 여기에 설명된 기능들을 수행하도록 설계된 이들의 임의의 조합으로 구현되거나 수행될 수도 있다. 범용 프로세서는 마이크로프로세서일 수도 있지만, 다르게는, 프로세서는 임의의 종래의 프로세서, 제어기, 마이크로제어기, 또는 상태 머신일 수도 있다. 프로세서는 또한, 컴퓨팅 디바이스의 조합, 예를 들어, DSP 와 마이크로프로세서의 조합, 복수의 마이크로프로세서, DSP 와 결합한 하나 이상의 마이크로프로세서, 또는 임의의 다른 이러한 구성으로서 구현될 수도 있다. 추가로, 적어도 하나의 프로세서가 상술한 단계들 및/또는 액션들 중 하나 이상을 수행하도록 동작가능한 하나 이상의 모듈을 포함할 수도 있다.
또한, 여기에 개시된 양태들과 관련하여 설명한 방법 또는 알고리즘의 단계들 및/또는 액션들은 하드웨어, 프로세서에 의해 실행된 소프트웨어 모듈, 또는 이들의 조합에서 직접적으로 구현될 수도 있다. 소프트웨어 모듈은, RAM 메모리, 플래시 메모리, ROM 메모리, EPROM 메모리, EEPROM 메모리, 레지스터, 하드 디스크, 착탈식 디스크, CD-ROM, 또는 당업계에 공지되어 있는 임의의 다른 형태의 저장 매체에 상주할 수도 있다. 예시적인 저장 매체가 프로세서에 커플링될 수도 있어서, 이 프로세서는 저장 매체로부터 정보를 판독할 수 있고 저장 매체에 정보를 기록할 수 있다. 다르게는, 저장 매체는 프로세서와 일체형일 수도 있다. 또한, 일부 양태에서, 프로세서 및 저장 매체는 ASIC 에 상주할 수도 있다. 추가적으로, ASIC 는 사용자 단말기에 상주할 수도 있다. 다르게는, 프로세서 및 저장 매체는 사용자 단말기에 개별 컴포넌트로서 상주할 수도 있다. 추가적으로, 일부 양태에서, 방법 또는 알고리즘의 단계들 및/또는 액션들은 컴퓨터 프로그램 제품으로 통합될 수도 있는 머신 판독가능한 매체 및/또는 컴퓨터 판독가능한 매체상에 코드들 및/또는 명령들 중 하나 또는 임의의 조합 또는 세트로서 상주할 수도 있다.
상술한 개시물이 예시적인 양태들 및/또는 버전들을 논의하지만, 다양한 변경 및 변형이 첨부한 청구범위에 의해 정의된 바와 같은 설명한 양태들 및/또는 양태들의 범위로부터 벗어나지 않고 여기에서 이루어질 수 있다는 것에 유의해야 한다. 또한, 설명한 양태들 및/또는 양태들의 엘리먼트들이 단수로 기재되거나 청구될 수도 있지만, 단수에 대한 제한이 명백하게 지정되지 않으면 복수가 의도된다. 추가로, 임의의 양태 및/또는 양태의 모두 또는 일부는 다르게 지정되지 않으면, 임의의 다른 양태 및/또는 양태의 모두 또는 일부와 활용될 수도 있다.
상기 설명한 예시적인 시스템의 관점에서, 개시한 주제에 따라 구현될 수도 있는 방법을 여러 흐름도를 참조하여 설명하였다. 설명의 간략화를 위해, 이 방법이 일련의 블록으로서 나타내고 설명되었지만, 일부 블록이 여기에 도시되고 설명된 것과 상이한 순서로 및/또는 다른 블록과 함께 발생할 수도 있기 때문에 청구물이 블록들의 순서에 의해 제한되지 않는다는 것을 이해해야 한다. 또한, 여기에 설명한 방법을 구현하는데 모든 예시된 블록들이 필요하지 않을 수도 있다. 추가로, 여기에 개시된 방법은 컴퓨터로의 이러한 방법의 전송 및 전달을 용이하게 하기 위해 제품상에 저장될 수 있다는 것을 더 이해해야 한다. 여기에 사용된 바와 같은, 용어 제품은, 임의의 컴퓨터 판독가능한 디바이스, 캐리어, 또는 매체로부터 액세스가능한 컴퓨터 프로그램을 포함하는 것으로 의도된다.
여기에 참조에 의해 통합되는 임의의 특허, 공보, 또는 다른 개시물 자료는 전체적으로 또는 부분적으로, 통합된 자료가 본 개시물에 설명된 기존의 정의, 스테이트먼트, 또는 다른 개시물 자료와 상반되지 않는 범위까지만 여기에 통합된다는 것을 이해해야 한다. 이와 같이 및 필요한 범위까지, 여기에 명백하게 설명된 바와 같은 본 개시물은 참조에 의해 여기에 통합된 임의의 상반하는 자료를 필요 없게 한다. 여기에 참조에 의해 통합되지만, 여기에 설명된 기존의 정의, 스테이트먼트, 또는 다른 개시물 자료와 상반되는 임의의 자료, 또는 그것의 일부는 그 통합된 자료와 기존의 개시물 자료 사이에 상반이 발생하지 않는 범위까지만 통합될 것이다.
Claims (46)
- 오퍼레이터에서 분산 검색을 용이하게 하는 방법으로서,
클라이언트 디바이스로부터 검색 문의를 수신하는 단계;
상기 클라이언트 디바이스로부터의 상기 검색 문의로부터 생성된 검색 디스크립터를 포함하고, 상기 클라이언트 디바이스에 검색 결과를 리턴하기 위한 사용자 데이터를 비공개적으로 포함하는 오브젝트 바디 (object body) 를 포함하는 검색 오브젝트를 공유된 메모리 공간에 배치하는 단계;
상기 검색 오브젝트에 응답하여 상기 공유된 메모리 공간에 배치된 제 1 검색 결과 오브젝트를 투플 매칭에 의해 검출하는 단계;
상기 제 1 검색 결과 오브젝트에서 검색 결과 및 상기 사용자 데이터를 검출하는 단계; 및
상기 검색 결과를 상기 클라이언트 디바이스에 리턴하는 단계를 포함하는, 분산 검색을 용이하게 하는 방법. - 제 1 항에 있어서,
셀룰러 전화 네트워크를 통해, 상기 검색 문의를 수신하는 단계 및 상기 검색 결과를 상기 클라이언트 디바이스에 리턴하는 단계를 더 포함하는, 분산 검색을 용이하게 하는 방법. - 제 1 항에 있어서,
상기 검색 오브젝트를 모니터링하기 위해 상기 공유된 메모리 공간에 검색 엔진 리졸버 (resolver) 를 접속하는 투플 타입을 정의하는 단계를 더 포함하는, 분산 검색을 용이하게 하는 방법. - 제 1 항에 있어서,
상기 검색 오브젝트에 응답하여 상기 공유된 메모리 공간에 배치된 제 2 검색 결과 오브젝트를 투플 매칭에 의해 검출하는 단계;
상기 제 2 검색 결과 오브젝트에서 검색 결과 및 상기 사용자 데이터를 검출하는 단계;
제 1 검색 결과 오브젝트로부터의 상기 검색 결과를 상기 제 2 검색 결과 오브젝트로부터의 상기 검색 결과와 결합하는 단계; 및
상기 결합된 검색 결과를 상기 클라이언트 디바이스에 리턴하는 단계를 더 포함하는, 분산 검색을 용이하게 하는 방법. - 제 1 항에 있어서,
검색을 수행하는 요건으로서, 상기 클라이언트 디바이스의 사용자를 인증하는 단계를 더 포함하는, 분산 검색을 용이하게 하는 방법. - 제 1 항에 있어서,
검색을 수행하는 것과 관련된 상기 클라이언트 디바이스에 대한 빌링 (billing) 이벤트를 생성하는 단계를 더 포함하는, 분산 검색을 용이하게 하는 방법. - 제 1 항에 있어서,
상기 검색 디스크립터에 검색 제약을 추가하는 단계를 더 포함하는, 분산 검색을 용이하게 하는 방법. - 제 1 항에 있어서,
상기 클라이언트 디바이스로부터의 상기 검색 문의를 영숫자 스트링으로서 수신하는 단계를 더 포함하는, 분산 검색을 용이하게 하는 방법. - 제 1 항에 있어서,
타이머가 만료할 때까지, 상기 공유된 메모리 공간으로 배치될 추가의 검색 결과 오브젝트를 대기하는 단계를 더 포함하는, 분산 검색을 용이하게 하는 방법. - 제 9 항에 있어서,
검색 결과 오브젝트가 검출되지 않으면 상기 타이머를 연장하는 단계를 더 포함하는, 분산 검색을 용이하게 하는 방법. - 분산 검색을 용이하게 하도록 구성된 적어도 하나의 프로세서로서,
클라이언트 디바이스로부터 검색 문의를 수신하는 제 1 모듈;
상기 클라이언트 디바이스로부터의 상기 검색 문의로부터 생성된 검색 디스크립터를 포함하고, 상기 클라이언트 디바이스에 검색 결과를 리턴하기 위한 사용자 데이터를 비공개적으로 포함하는 오브젝트 바디 (object body) 를 포함하는 검색 오브젝트를 공유된 메모리 공간에 배치하는 제 2 모듈;
상기 검색 오브젝트에 응답하여 상기 공유된 메모리 공간에 배치된 검색 결과 오브젝트를 투플 매칭에 의해 검출하는 제 3 모듈;
상기 검색 결과 오브젝트에서 검색 결과 및 상기 사용자 데이터를 검출하는 제 4 모듈; 및
상기 검색 결과를 상기 클라이언트 디바이스에 리턴하는 제 5 모듈을 포함하는, 적어도 하나의 프로세서. - 분산 검색을 용이하게 하기 위한, 컴퓨터 판독가능한 매체로서,
상기 컴퓨터 판독가능한 매체는,
컴퓨터로 하여금, 클라이언트 디바이스로부터 검색 문의를 수신하게 하는 적어도 하나의 명령;
상기 컴퓨터로 하여금, 상기 클라이언트 디바이스로부터의 상기 검색 문의로부터 생성된 검색 디스크립터를 포함하고, 상기 클라이언트 디바이스에 검색 결과를 리턴하기 위한 사용자 데이터를 비공개적으로 포함하는 오브젝트 바디 (object body) 를 포함하는 검색 오브젝트를 공유된 메모리 공간에 배치하게 하는 적어도 하나의 명령;
상기 컴퓨터로 하여금, 상기 검색 오브젝트에 응답하여 상기 공유된 메모리 공간에 배치된 검색 결과 오브젝트를 투플 매칭에 의해 검출하게 하는 적어도 하나의 명령;
상기 컴퓨터로 하여금, 상기 검색 결과 오브젝트에서 검색 결과 및 상기 사용자 데이터를 검출하게 하는 적어도 하나의 명령; 및
상기 컴퓨터로 하여금, 상기 검색 결과를 상기 클라이언트 디바이스에 리턴하게 하는 적어도 하나의 명령을 포함하는, 컴퓨터 판독가능한 매체. - 분산 검색을 용이하게 하는 장치로서,
클라이언트 디바이스로부터 검색 문의를 수신하는 수단;
상기 클라이언트 디바이스로부터의 상기 검색 문의로부터 생성된 검색 디스크립터를 포함하고, 상기 클라이언트 디바이스에 검색 결과를 리턴하기 위한 사용자 데이터를 비공개적으로 포함하는 오브젝트 바디 (object body) 를 포함하는 검색 오브젝트를 공유된 메모리 공간에 배치하는 수단;
상기 검색 오브젝트에 응답하여 상기 공유된 메모리 공간에 배치된 검색 결과 오브젝트를 투플 매칭에 의해 검출하는 수단;
상기 검색 결과 오브젝트에서 검색 결과 및 상기 사용자 데이터를 검출하는 수단; 및
상기 검색 결과를 상기 클라이언트 디바이스에 리턴하는 수단을 포함하는, 분산 검색을 용이하게 하는 장치. - 분산 검색을 용이하게 하는 장치로서,
클라이언트 디바이스로부터 검색 문의를 수신하는 포털;
상기 클라이언트 디바이스로부터의 상기 검색 문의로부터 생성된 검색 디스크립터를 포함하고, 상기 클라이언트 디바이스에 검색 결과를 리턴하기 위한 사용자 데이터를 비공개적으로 포함하는 오브젝트 바디 (object body) 를 포함하는 검색 오브젝트를 공유된 메모리 공간에 배치하는 게이트웨이로서, 상기 포털은, 상기 검색 오브젝트에 응답하여 상기 공유된 메모리 공간에 배치된 제 1 검색 결과 오브젝트를 투플 매칭에 의해 검출하며, 상기 제 1 검색 결과 오브젝트에서 검색 결과 및 상기 사용자 데이터를 검출하는, 상기 게이트웨이; 및
상기 검색 결과를 상기 클라이언트 디바이스에 리턴하는 통신 컴포넌트를 포함하는, 분산 검색을 용이하게 하는 장치. - 제 14 항에 있어서,
상기 통신 컴포넌트는 셀룰러 전화 네트워크를 통해, 상기 검색 문의를 수신하고, 상기 검색 결과를 상기 클라이언트 디바이스에 리턴하는 것을 더 포함하는, 분산 검색을 용이하게 하는 장치. - 제 14 항에 있어서,
상기 검색 오브젝트를 모니터링하기 위해 상기 공유된 메모리 공간에 검색 엔진 리졸버 (resolver) 를 접속하는 투플 타입을 정의하는 상기 게이트웨이를 더 포함하는, 분산 검색을 용이하게 하는 장치. - 제 14 항에 있어서,
상기 검색 오브젝트에 응답하여 상기 공유된 메모리 공간에 배치된 제 2 검색 결과 오브젝트를 투플 매칭에 의해 검출하고, 상기 제 2 검색 결과 오브젝트에서 검색 결과 및 상기 사용자 데이터를 검출하며, 제 1 검색 결과 오브젝트로부터의 상기 검색 결과를 상기 제 2 검색 결과 오브젝트로부터의 상기 검색 결과와 결합하는 상기 게이트웨이; 및
상기 결합된 검색 결과를 상기 클라이언트 디바이스에 리턴하는 상기 통신 컴포넌트를 더 포함하는, 분산 검색을 용이하게 하는 장치. - 제 14 항에 있어서,
상기 게이트웨이는 검색을 수행하는 요건으로서, 상기 클라이언트 디바이스의 사용자를 인증하는 것을 더 포함하는, 분산 검색을 용이하게 하는 장치. - 제 14 항에 있어서,
상기 게이트웨이는 검색을 수행하는 것과 관련된 상기 클라이언트 디바이스에 대한 빌링 (billing) 이벤트를 생성하는 것을 더 포함하는, 분산 검색을 용이하게 하는 장치. - 제 14 항에 있어서,
상기 게이트웨이는 상기 검색 디스크립터에 검색 제약을 추가하는 것을 더 포함하는, 분산 검색을 용이하게 하는 장치. - 제 14 항에 있어서,
상기 포털은 상기 검색 문의를 영숫자 스트링으로서 수신하는 것을 더 포함하는, 분산 검색을 용이하게 하는 장치. - 제 14 항에 있어서,
상기 게이트웨이는 타이머가 만료할 때까지, 상기 공유된 메모리 공간으로 배치될 추가의 검색 결과 오브젝트를 대기하는 것을 더 포함하는, 분산 검색을 용이하게 하는 장치. - 제 22 항에 있어서,
상기 게이트웨이는 검색 결과 오브젝트가 검출되지 않으면 상기 타이머를 연장하는 것을 더 포함하는, 분산 검색을 용이하게 하는 장치. - 오퍼레이터에서 분산 검색을 요청하는 방법으로서,
클라이언트 디바이스의 사용자로부터 검색 문의를 수용하는 단계;
상기 클라이언트 디바이스로부터의 상기 검색 문의로부터 생성된 검색 디스크립터를 포함하고, 상기 클라이언트 디바이스에 검색 결과를 리턴하기 위한 사용자 데이터를 비공개적으로 포함하는 오브젝트 바디 (object body) 를 포함하는 검색 오브젝트를 공유된 메모리 공간에 배치하고, 상기 검색 오브젝트에 응답하여 상기 공유된 메모리 공간에 배치된 제 1 검색 결과 오브젝트를 투플 매칭에 의해 검출하며, 상기 제 1 검색 결과 오브젝트에서 검색 결과 및 상기 사용자 데이터를 검출하는 네트워크에 상기 검색 문의를 전송하는 단계; 및
상기 클라이언트 디바이스상에서 상기 사용자에게 제공하기 위해 상기 네트워크로부터 상기 검색 결과를 수신하는 단계를 포함하는, 분산 검색을 요청하는 방법. - 제 24 항에 있어서,
셀룰러 전화 네트워크를 통해, 상기 검색 문의를 전송하는 단계 및 상기 검색 결과를 수신하는 단계를 더 포함하는, 분산 검색을 요청하는 방법. - 제 24 항에 있어서,
상기 검색 오브젝트를 모니터링하기 위해 상기 공유된 메모리 공간에 검색 엔진 리졸버 (resolver) 를 접속하는 투플 타입을 정의하는 상기 네트워크에 상기 검색 문의를 전송하는 단계를 더 포함하는, 분산 검색을 요청하는 방법. - 제 24 항에 있어서,
상기 검색 오브젝트에 응답하여 상기 공유된 메모리 공간에 배치된 제 2 검색 결과 오브젝트를 투플 매칭에 의해 검출하고, 상기 제 2 검색 결과 오브젝트에서 검색 결과 및 상기 사용자 데이터를 검출하고, 제 1 검색 결과 오브젝트로부터의 상기 검색 결과를 상기 제 2 검색 결과 오브젝트로부터의 상기 검색 결과와 결합하며, 상기 결합된 검색 결과를 상기 클라이언트 디바이스에 리턴하는 상기 네트워크에 상기 검색 문의를 전송하는 단계를 더 포함하는, 분산 검색을 요청하는 방법. - 제 24 항에 있어서,
검색을 수행하는 요건으로서, 상기 클라이언트 디바이스의 사용자를 인증하는 상기 네트워크에 상기 검색 문의를 전송하는 단계를 더 포함하는, 분산 검색을 요청하는 방법. - 제 24 항에 있어서,
검색을 수행하는 것과 관련된 상기 클라이언트 디바이스에 대한 빌링 (billing) 이벤트를 생성하는 상기 네트워크에 상기 검색 문의를 전송하는 단계를 더 포함하는, 분산 검색을 요청하는 방법. - 제 24 항에 있어서,
상기 검색 디스크립터에 검색 제약을 추가하는 상기 네트워크에 상기 검색 문의를 전송하는 단계를 더 포함하는, 분산 검색을 요청하는 방법. - 제 24 항에 있어서,
상기 검색 문의를 영숫자 스트링으로서 수신하는 단계를 더 포함하는, 분산 검색을 요청하는 방법. - 제 24 항에 있어서,
타이머가 만료할 때까지, 상기 공유된 메모리 공간으로 배치될 추가의 검색 결과 오브젝트를 대기하는 상기 네트워크에 상기 검색 문의를 전송하는 단계를 더 포함하는, 분산 검색을 요청하는 방법. - 제 32 항에 있어서,
검색 결과 오브젝트가 검출되지 않으면 상기 타이머를 연장하는 상기 네트워크에 상기 검색 문의를 전송하는 단계를 더 포함하는, 분산 검색을 요청하는 방법. - 분산 검색을 요청하도록 구성된 적어도 하나의 프로세서로서,
클라이언트 디바이스의 사용자로부터 검색 문의를 수용하는 제 1 모듈;
상기 클라이언트 디바이스로부터의 상기 검색 문의로부터 생성된 검색 디스크립터를 포함하고, 상기 클라이언트 디바이스에 검색 결과를 리턴하기 위한 사용자 데이터를 비공개적으로 포함하는 오브젝트 바디 (object body) 를 포함하는 검색 오브젝트를 공유된 메모리 공간에 배치하고, 상기 검색 오브젝트에 응답하여 상기 공유된 메모리 공간에 배치된 검색 결과 오브젝트를 투플 매칭에 의해 검출하며, 상기 검색 결과 오브젝트에서 검색 결과 및 상기 사용자 데이터를 검출하는 네트워크에 상기 검색 문의를 전송하는 제 2 모듈; 및
상기 클라이언트 디바이스상에서 상기 사용자에게 제공하기 위해 상기 네트워크로부터 상기 검색 결과를 수신하는 제 3 모듈을 포함하는, 적어도 하나의 프로세서. - 분산 검색을 요청하기 위한, 컴퓨터 판독가능한 매체로서,
상기 컴퓨터 판독가능한 매체는,
컴퓨터로 하여금, 클라이언트 디바이스의 사용자로부터 검색 문의를 수용하게 하는 적어도 하나의 명령;
상기 컴퓨터로 하여금, 상기 클라이언트 디바이스로부터의 상기 검색 문의로부터 생성된 검색 디스크립터를 포함하고, 상기 클라이언트 디바이스에 검색 결과를 리턴하기 위한 사용자 데이터를 비공개적으로 포함하는 오브젝트 바디 (object body) 를 포함하는 검색 오브젝트를 공유된 메모리 공간에 배치하고, 상기 검색 오브젝트에 응답하여 상기 공유된 메모리 공간에 배치된 검색 결과 오브젝트를 투플 매칭에 의해 검출하며, 상기 검색 결과 오브젝트에서 검색 결과 및 상기 사용자 데이터를 검출하는 네트워크에 상기 검색 문의를 전송하게 하는 적어도 하나의 명령; 및
상기 컴퓨터로 하여금, 상기 클라이언트 디바이스상에서 상기 사용자에게 제공하기 위해 상기 네트워크로부터 상기 검색 결과를 수신하게 하는 적어도 하나의 명령을 포함하는, 컴퓨터 판독가능한 매체. - 분산 검색을 요청하는 장치로서,
클라이언트 디바이스의 사용자로부터 검색 문의를 수용하는 수단;
상기 클라이언트 디바이스로부터의 상기 검색 문의로부터 생성된 검색 디스크립터를 포함하고, 상기 클라이언트 디바이스에 검색 결과를 리턴하기 위한 사용자 데이터를 비공개적으로 포함하는 오브젝트 바디 (object body) 를 포함하는 검색 오브젝트를 공유된 메모리 공간에 배치하고, 상기 검색 오브젝트에 응답하여 상기 공유된 메모리 공간에 배치된 검색 결과 오브젝트를 투플 매칭에 의해 검출하며, 상기 검색 결과 오브젝트에서 검색 결과 및 상기 사용자 데이터를 검출하는 네트워크에 상기 검색 문의를 전송하는 수단; 및
상기 클라이언트 디바이스상에서 상기 사용자에게 제공하기 위해 상기 네트워크로부터 상기 검색 결과를 수신하는 수단을 포함하는, 분산 검색을 요청하는 장치. - 분산 검색을 용이하게 하는 장치로서,
클라이언트 디바이스의 사용자로부터 검색 문의를 수신하는 사용자 인터페이스;
상기 클라이언트 디바이스로부터의 상기 검색 문의로부터 생성된 검색 디스크립터를 포함하고, 상기 클라이언트 디바이스에 검색 결과를 리턴하기 위한 사용자 데이터를 비공개적으로 포함하는 오브젝트 바디 (object body) 를 포함하는 검색 오브젝트를 공유된 메모리 공간에 배치하고, 상기 검색 오브젝트에 응답하여 상기 공유된 메모리 공간에 배치된 제 1 검색 결과 오브젝트를 투플 매칭에 의해 검출하며, 상기 제 1 검색 결과 오브젝트에서 검색 결과 및 상기 사용자 데이터를 검출하는 네트워크에 상기 검색 문의를 전송하는 통신 컴포넌트; 및
상기 클라이언트 디바이스상에서 상기 사용자에게 제공하기 위해 상기 네트워크에 의해 리턴된 상기 검색 결과를 수신하는 사용자 인터페이스를 포함하는, 분산 검색을 용이하게 하는 장치. - 제 37 항에 있어서,
상기 통신 컴포넌트는 셀룰러 전화 네트워크를 통해, 상기 검색 문의를 수신하고, 상기 검색 결과를 상기 클라이언트 디바이스에 리턴하는 것을 더 포함하는, 분산 검색을 용이하게 하는 장치. - 제 37 항에 있어서,
상기 통신 컴포넌트는 상기 검색 오브젝트를 모니터링하기 위해 상기 공유된 메모리 공간에 검색 엔진 리졸버 (resolver) 를 접속하는 투플 타입을 정의하는 상기 네트워크에 상기 검색 문의를 전송하는 것을 더 포함하는, 분산 검색을 용이하게 하는 장치. - 제 37 항에 있어서,
상기 통신 컴포넌트는 상기 검색 오브젝트에 응답하여 상기 공유된 메모리 공간에 배치된 제 2 검색 결과 오브젝트를 투플 매칭에 의해 검출하고, 상기 제 2 검색 결과 오브젝트에서 검색 결과 및 상기 사용자 데이터를 검출하고, 제 1 검색 결과 오브젝트로부터의 상기 검색 결과를 상기 제 2 검색 결과 오브젝트로부터의 상기 검색 결과와 결합하며, 상기 결합된 검색 결과를 상기 클라이언트 디바이스에 리턴하는 상기 네트워크에 상기 검색 문의를 전송하는 것을 더 포함하는, 분산 검색을 용이하게 하는 장치. - 제 37 항에 있어서,
상기 통신 컴포넌트는 검색을 수행하는 요건으로서, 상기 클라이언트 디바이스의 사용자를 인증하는 상기 네트워크에 상기 검색 문의를 전송하는 것을 더 포함하는, 분산 검색을 용이하게 하는 장치. - 제 37 항에 있어서,
상기 통신 컴포넌트는 검색을 수행하는 것과 관련된 상기 클라이언트 디바이스에 대한 빌링 (billing) 이벤트를 생성하는 상기 네트워크에 상기 검색 문의를 전송하는 것을 더 포함하는, 분산 검색을 용이하게 하는 장치. - 제 37 항에 있어서,
상기 통신 컴포넌트는 상기 검색 디스크립터에 검색 제약을 추가하는 상기 네트워크에 상기 검색 문의를 전송하는 것을 더 포함하는, 분산 검색을 용이하게 하는 장치. - 제 37 항에 있어서,
상기 사용자 인터페이스는 상기 검색 문의를 영숫자 스트링으로서 수신하는 것을 더 포함하는, 분산 검색을 용이하게 하는 장치. - 제 37 항에 있어서,
상기 통신 컴포넌트는 타이머가 만료할 때까지, 상기 공유된 메모리 공간으로 배치될 추가의 검색 결과 오브젝트를 대기하는 상기 네트워크에 상기 검색 문의를 전송하는 것을 더 포함하는, 분산 검색을 용이하게 하는 장치. - 제 45 항에 있어서,
상기 통신 컴포넌트는 검색 결과 오브젝트가 검출되지 않으면 상기 타이머를 연장하는 상기 네트워크에 상기 검색 문의를 전송하는 것을 더 포함하는, 분산 검색을 용이하게 하는 장치.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/141,502 | 2008-06-18 | ||
US12/141,502 US20090320097A1 (en) | 2008-06-18 | 2008-06-18 | Method for carrying out a distributed search |
PCT/US2009/047231 WO2009155218A1 (en) | 2008-06-18 | 2009-06-12 | Method for carrying out a distributed search |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20110031333A KR20110031333A (ko) | 2011-03-25 |
KR101334468B1 true KR101334468B1 (ko) | 2013-12-12 |
Family
ID=41086796
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020117001240A KR101334468B1 (ko) | 2008-06-18 | 2009-06-12 | 분산 검색을 수행하는 방법 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20090320097A1 (ko) |
EP (1) | EP2304612A1 (ko) |
JP (1) | JP5442726B2 (ko) |
KR (1) | KR101334468B1 (ko) |
CN (2) | CN102057376B (ko) |
WO (1) | WO2009155218A1 (ko) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090063423A1 (en) * | 2007-06-19 | 2009-03-05 | Jackson Bruce Kelly | User interfaces for service object located in a distributed system |
US20090077480A1 (en) * | 2007-06-19 | 2009-03-19 | Caunter Mark Leslie | Apparatus and method of managing electronic communities of users |
US8700447B2 (en) * | 2008-06-06 | 2014-04-15 | Yellowpages.Com Llc | Systems and methods to present search results of business listings |
US20090319385A1 (en) * | 2008-06-18 | 2009-12-24 | Jackson Bruce Kelly | Monetizing and prioritizing results of a distributed search |
US8060603B2 (en) * | 2008-06-18 | 2011-11-15 | Qualcomm Incorporated | Persistent personal messaging in a distributed system |
US9092491B2 (en) | 2011-07-11 | 2015-07-28 | International Business Machines Corporation | Searching documentation across interconnected nodes in a distributed network |
CN104205862B (zh) * | 2012-03-31 | 2019-01-22 | 英特尔公司 | 动态搜索服务 |
US9471639B2 (en) * | 2013-09-19 | 2016-10-18 | International Business Machines Corporation | Managing a grouping window on an operator graph |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH09325895A (ja) * | 1996-06-06 | 1997-12-16 | Mitsubishi Electric Corp | タプルスペース通信監視装置およびその監視方法 |
Family Cites Families (73)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5812865A (en) * | 1993-12-03 | 1998-09-22 | Xerox Corporation | Specifying and establishing communication data paths between particular media devices in multiple media device computing systems based on context of a user or users |
US5796393A (en) * | 1996-11-08 | 1998-08-18 | Compuserve Incorporated | System for intergrating an on-line service community with a foreign service |
US6366956B1 (en) * | 1997-01-29 | 2002-04-02 | Microsoft Corporation | Relevance access of Internet information services |
US5974420A (en) * | 1998-01-27 | 1999-10-26 | International Business Machines Corporation | Information exchange operator for a tuplespace |
US7110993B2 (en) * | 1999-05-28 | 2006-09-19 | Overture Services, Inc. | System and method for influencing a position on a search result list generated by a computer network search engine |
US7835943B2 (en) * | 1999-05-28 | 2010-11-16 | Yahoo! Inc. | System and method for providing place and price protection in a search result list generated by a computer network search engine |
US6269361B1 (en) * | 1999-05-28 | 2001-07-31 | Goto.Com | System and method for influencing a position on a search result list generated by a computer network search engine |
GB2353612B (en) * | 1999-08-24 | 2003-11-12 | Mitel Corp | Processing by use of synchronised tuple spaces and assertions |
GB2355140B (en) * | 1999-10-05 | 2003-09-03 | Mitel Corp | Security mechanism and architecture for collaborative software systems using tuple space |
EP1107512A1 (en) * | 1999-12-03 | 2001-06-13 | Sony International (Europe) GmbH | Communication device and software for operating multimedia applications |
US6751619B1 (en) * | 2000-03-15 | 2004-06-15 | Microsoft Corporation | Methods and apparatus for tuple management in data processing system |
US6625611B1 (en) * | 2000-03-15 | 2003-09-23 | Cadence Design Systems, Inc. | Method and apparatus for representing multidimensional data |
US20020032750A1 (en) * | 2000-05-16 | 2002-03-14 | Kanefsky Steven T. | Methods and systems for searching and managing information on wireless data devices |
KR100656150B1 (ko) * | 2000-06-09 | 2006-12-12 | 안종선 | 커뮤니티 자동 생성 시스템 및 방법 |
US7363320B2 (en) * | 2000-10-04 | 2008-04-22 | Intel Corporation | Method and system for correlating data from multiple sources without compromising confidentiality requirements |
US20020120714A1 (en) * | 2001-02-26 | 2002-08-29 | Borislav Agapiev | Distributed-code, custom-generated dynamic internet inclusion agent |
GB2375264B (en) * | 2001-05-02 | 2004-10-13 | Mitel Knowledge Corp | Remote assembly of messages for distributed applications |
US6766323B2 (en) * | 2001-05-22 | 2004-07-20 | International Business Machines Corporation | System, method and computer program for application support in a data processing system |
US8005870B1 (en) * | 2001-06-19 | 2011-08-23 | Microstrategy Incorporated | System and method for syntax abstraction in query language generation |
US7188150B2 (en) * | 2001-08-21 | 2007-03-06 | International Business Machines Corporation | System and method for sharing, searching, and retrieving web-based educational resources |
US7194543B2 (en) * | 2001-11-12 | 2007-03-20 | Mci, Llc | System and method for creating and managing survivable, service hosting networks |
US6983370B2 (en) * | 2001-11-27 | 2006-01-03 | Motorola, Inc. | System for providing continuity between messaging clients and method therefor |
GB0200746D0 (en) * | 2002-01-14 | 2002-02-27 | Mitel Knowledge Corp | Method and apparatus for establishing and maintaining voice communication among a community of interest |
US7716199B2 (en) * | 2005-08-10 | 2010-05-11 | Google Inc. | Aggregating context data for programmable search engines |
US20030200168A1 (en) * | 2002-04-10 | 2003-10-23 | Cullen Andrew A. | Computer system and method for facilitating and managing the project bid and requisition process |
US20040019465A1 (en) * | 2002-05-13 | 2004-01-29 | Kerr James W. | Event router and method for handling events in distributing computing applications |
US7316016B2 (en) * | 2002-07-03 | 2008-01-01 | Tripwire, Inc. | Homogeneous monitoring of heterogeneous nodes |
GB0218707D0 (en) * | 2002-08-12 | 2002-09-18 | Mitel Knowledge Corp | Role-based presence enabled service for communication system |
US20040034807A1 (en) * | 2002-08-14 | 2004-02-19 | Gnp Computers, Inc. | Roving servers in a clustered telecommunication distributed computer system |
US7555485B2 (en) * | 2002-08-22 | 2009-06-30 | Yahoo! Inc. | System and method for conducting an auction-based ranking of search results on a computer network |
JP2004102547A (ja) * | 2002-09-06 | 2004-04-02 | Nec Corp | コミュニケーションシステム、コミュニケーションサーバ、及び、コミュニケーション方法 |
FR2846499B1 (fr) * | 2002-10-25 | 2005-03-11 | Inst Nat Rech Inf Automat | Dispositif et procede de gestion de donnees entre equipements de communication en vue de l'obtention d'un service |
US20040122803A1 (en) * | 2002-12-19 | 2004-06-24 | Dom Byron E. | Detect and qualify relationships between people and find the best path through the resulting social network |
US7523165B2 (en) * | 2002-12-24 | 2009-04-21 | Telefonaktiebolaget L M Ericsson (Publ) | Transmission of application information and commands using presence technology |
US7269623B2 (en) * | 2003-01-09 | 2007-09-11 | Raytheon Company | System and method for distributed multimodal collaboration using a tuple-space |
EP1588230A4 (en) * | 2003-01-10 | 2008-05-07 | Nexaweb Technologies Inc | NETWORK ORIENTED COMPUTING SYSTEM AND METHOD |
US20040186766A1 (en) * | 2003-03-19 | 2004-09-23 | International Business Machines Corporation | Apparatus and method for marketing to instant messaging service users |
US20040225897A1 (en) * | 2003-05-07 | 2004-11-11 | Norton Derk D. | Client-server architecture incorporating secure tuple space |
US20070112574A1 (en) * | 2003-08-05 | 2007-05-17 | Greene William S | System and method for use of mobile policy agents and local services, within a geographically distributed service grid, to provide greater security via local intelligence and life-cycle management for RFlD tagged items |
US7328217B2 (en) * | 2003-11-26 | 2008-02-05 | Symantec Operating Corporation | System and method for detecting and storing file identity change information within a file system |
US7269590B2 (en) * | 2004-01-29 | 2007-09-11 | Yahoo! Inc. | Method and system for customizing views of information associated with a social network user |
US6976029B2 (en) * | 2004-02-10 | 2005-12-13 | Microsoft Corporation | System and method for providing user defined types in a database system |
WO2005101206A2 (en) * | 2004-04-12 | 2005-10-27 | Teeznar Corporation | Peer-to-peer distributed computational system and method |
US20060031206A1 (en) * | 2004-08-06 | 2006-02-09 | Christian Deubel | Searching for data objects |
US20060036633A1 (en) * | 2004-08-11 | 2006-02-16 | Oracle International Corporation | System for indexing ontology-based semantic matching operators in a relational database system |
US8930400B2 (en) * | 2004-11-22 | 2015-01-06 | Hewlett-Packard Development Company, L. P. | System and method for discovering knowledge communities |
US8996486B2 (en) * | 2004-12-15 | 2015-03-31 | Applied Invention, Llc | Data store with lock-free stateless paging capability |
US7356567B2 (en) * | 2004-12-30 | 2008-04-08 | Aol Llc, A Delaware Limited Liability Company | Managing instant messaging sessions on multiple devices |
US20060212434A1 (en) * | 2005-03-11 | 2006-09-21 | Sallie Mae, Inc. | System and method for customization and streamlining of Web site navigation |
US20060218153A1 (en) * | 2005-03-28 | 2006-09-28 | Voon George H H | Building social networks using shared content data relating to a common interest |
US8719250B2 (en) * | 2005-04-18 | 2014-05-06 | Oracle International Corporation | Integrating RDF data into a relational database system |
US20070005654A1 (en) * | 2005-05-20 | 2007-01-04 | Avichai Schachar | Systems and methods for analyzing relationships between entities |
US20060271460A1 (en) * | 2005-05-31 | 2006-11-30 | Ebay Inc. | Method and system to provide user created social networks in a distributed commerce system |
US20070005725A1 (en) * | 2005-06-30 | 2007-01-04 | Morris Robert P | Method and apparatus for browsing network resources using an asynchronous communications protocol |
US7747639B2 (en) * | 2005-08-24 | 2010-06-29 | Yahoo! Inc. | Alternative search query prediction |
US20080009268A1 (en) * | 2005-09-14 | 2008-01-10 | Jorey Ramer | Authorized mobile content search results |
US20070106627A1 (en) * | 2005-10-05 | 2007-05-10 | Mohit Srivastava | Social discovery systems and methods |
US8180789B1 (en) * | 2005-12-05 | 2012-05-15 | Teradata Us, Inc. | Techniques for query generation, population, and management |
KR20080085142A (ko) * | 2005-12-19 | 2008-09-23 | 스트랜즈, 아이엔씨. | 사용자 대 사용자 추천자 |
JP2007172490A (ja) * | 2005-12-26 | 2007-07-05 | Sony Computer Entertainment Inc | 情報処理方法、情報処理システム、およびサーバ |
US7797722B2 (en) * | 2006-05-26 | 2010-09-14 | Sony Corporation | System and method for content delivery |
US20070288473A1 (en) * | 2006-06-08 | 2007-12-13 | Rajat Mukherjee | Refining search engine data based on client requests |
US20080010605A1 (en) * | 2006-06-12 | 2008-01-10 | Metacarta, Inc. | Systems and methods for generating and correcting location references extracted from text |
US20070299830A1 (en) * | 2006-06-26 | 2007-12-27 | Christopher Muenchhoff | Display of search results |
US20080065685A1 (en) * | 2006-08-04 | 2008-03-13 | Metacarta, Inc. | Systems and methods for presenting results of geographic text searches |
US20080010266A1 (en) * | 2006-07-10 | 2008-01-10 | Brunn Jonathan F | A Context-Centric Method of Automated Introduction and Community Building |
US8190724B2 (en) * | 2006-10-13 | 2012-05-29 | Yahoo! Inc. | Systems and methods for establishing or maintaining a personalized trusted social network |
US20090077480A1 (en) * | 2007-06-19 | 2009-03-19 | Caunter Mark Leslie | Apparatus and method of managing electronic communities of users |
US20090063423A1 (en) * | 2007-06-19 | 2009-03-05 | Jackson Bruce Kelly | User interfaces for service object located in a distributed system |
US8977710B2 (en) * | 2008-06-18 | 2015-03-10 | Qualcomm, Incorporated | Remote selection and authorization of collected media transmission |
US20090319385A1 (en) * | 2008-06-18 | 2009-12-24 | Jackson Bruce Kelly | Monetizing and prioritizing results of a distributed search |
US8060603B2 (en) * | 2008-06-18 | 2011-11-15 | Qualcomm Incorporated | Persistent personal messaging in a distributed system |
US8224839B2 (en) * | 2009-04-07 | 2012-07-17 | Microsoft Corporation | Search query extension |
-
2008
- 2008-06-18 US US12/141,502 patent/US20090320097A1/en not_active Abandoned
-
2009
- 2009-06-12 KR KR1020117001240A patent/KR101334468B1/ko not_active IP Right Cessation
- 2009-06-12 JP JP2011514721A patent/JP5442726B2/ja not_active Expired - Fee Related
- 2009-06-12 EP EP09767528A patent/EP2304612A1/en not_active Ceased
- 2009-06-12 CN CN200980122067XA patent/CN102057376B/zh not_active Expired - Fee Related
- 2009-06-12 CN CN2013102501062A patent/CN103279576A/zh active Pending
- 2009-06-12 WO PCT/US2009/047231 patent/WO2009155218A1/en active Application Filing
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH09325895A (ja) * | 1996-06-06 | 1997-12-16 | Mitsubishi Electric Corp | タプルスペース通信監視装置およびその監視方法 |
Non-Patent Citations (1)
Title |
---|
Computer Networks 35(2001, 457-472페이지, 제목:Hitting the distributed computing sweet spot with TSpaces) * |
Also Published As
Publication number | Publication date |
---|---|
JP2011525281A (ja) | 2011-09-15 |
JP5442726B2 (ja) | 2014-03-12 |
CN103279576A (zh) | 2013-09-04 |
KR20110031333A (ko) | 2011-03-25 |
WO2009155218A1 (en) | 2009-12-23 |
EP2304612A1 (en) | 2011-04-06 |
CN102057376A (zh) | 2011-05-11 |
US20090320097A1 (en) | 2009-12-24 |
CN102057376B (zh) | 2013-07-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101334531B1 (ko) | 분산 검색 결과의 모네타이징 및 우선순위화 | |
KR101334468B1 (ko) | 분산 검색을 수행하는 방법 | |
US11645286B2 (en) | Dynamic data processor for streaming and batch queries | |
US11836148B1 (en) | Data source correlation user interface | |
US20160371390A1 (en) | Computerized systems and methods for generating a dynamic web page based on retrieved content | |
US20090063423A1 (en) | User interfaces for service object located in a distributed system | |
US9218503B2 (en) | Collection and analysis of customer data from application programming interface usage | |
US8074234B2 (en) | Web service platform for keyword technologies | |
JP2024524462A (ja) | 目標推薦方法、装置及び記憶媒体 | |
JP5591962B2 (ja) | 分散型システム中に配置されたサービスオブジェクトのためのユーザインターフェース | |
WO2024061060A1 (zh) | 资讯推送方法、电子设备以及存储介质 | |
WO2022245339A1 (en) | Indexing application actions for voice-based execution |
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: 20161028 Year of fee payment: 4 |
|
LAPS | Lapse due to unpaid annual fee |