KR20120045017A - 분산형 네트워크에서 다중 키워드 문의들을 효율적으로 프로세싱하기 위한 방법 및 장치 - Google Patents

분산형 네트워크에서 다중 키워드 문의들을 효율적으로 프로세싱하기 위한 방법 및 장치 Download PDF

Info

Publication number
KR20120045017A
KR20120045017A KR1020127003900A KR20127003900A KR20120045017A KR 20120045017 A KR20120045017 A KR 20120045017A KR 1020127003900 A KR1020127003900 A KR 1020127003900A KR 20127003900 A KR20127003900 A KR 20127003900A KR 20120045017 A KR20120045017 A KR 20120045017A
Authority
KR
South Korea
Prior art keywords
query
bloom filter
keyword
node
computing
Prior art date
Application number
KR1020127003900A
Other languages
English (en)
Inventor
아쉬윈 스와미나탄
란지쓰 에스. 자야람
비드야 나라야난
Original Assignee
콸콤 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 콸콤 인코포레이티드 filed Critical 콸콤 인코포레이티드
Publication of KR20120045017A publication Critical patent/KR20120045017A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/33Querying
    • G06F16/335Filtering based on additional data, e.g. user or group profiles
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/40Information retrieval; Database structures therefor; File system structures therefor of multimedia data, e.g. slideshows comprising image and additional audio data
    • G06F16/43Querying
    • G06F16/435Filtering based on additional data, e.g. user or group profiles
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/33Querying
    • G06F16/3331Query processing
    • G06F16/334Query execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/951Indexing; Web crawling techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/953Querying, e.g. by the use of web search engines
    • G06F16/9535Search customisation based on user profiles and personalisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/953Querying, e.g. by the use of web search engines
    • G06F16/9538Presentation of query results
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • H04L67/1061Peer-to-peer [P2P] networks using node-based peer discovery mechanisms
    • H04L67/1068Discovery involving direct consultation or announcement among potential requesting and potential source peers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/51Discovery or management thereof, e.g. service location protocol [SLP] or web services

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Multimedia (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

다중 키워드들을 이용하여 AND/OR 탐색을 수행하기 위한 방법들 및 장치가 본 명세서에 설명된다. 다중 키워드들을 갖는 문의는 네트워크의 제 1 노드에서 수신된다. 제 1 노드는, 제 1 의 다중 키워드들에 매칭하는 문서들의 세트를 결정하고, 이 키워드들을 표현하기 위한 이상적인 블룸 필터를 컴퓨팅한다. 제 1 노드는 문의 및 블룸 필터를 제 2 노드로 전송하고, 제 2 노드는, 블룸 필터에 따라 제 2 의 다중 키워드들에 대한 자신의 탐색 결과들을 결정한다.

Description

분산형 네트워크에서 다중 키워드 문의들을 효율적으로 프로세싱하기 위한 방법 및 장치{METHODS AND APPARATUS FOR EFFICIENTLY PROCESSING MULTIPLE KEYWORD QUERIES ON A DISTRIBUTED NETWORK}
본 출원은, 2009년 7월 14일 출원된 "Methods and Apparatus for Performing Searches in a Peer-to-Peer Distributed Network"란 명칭의 가출원 제 61/225,505 호에 대해 우선권을 주장하며, 이 가출원은 본 양수인에게 양도되고 본 명세서에 참조로 명백히 통합되었다.
본 출원은 모바일 운영 환경에 관한 것이고, 더 상세하게는, 분산형 네트워크들, 및 분산형 네트워크에서 AND 및 OR 문의(query)들과 같은 다중 키워드 문의들에 대한 방법 및 장치에 관한 것이다.
오버레이 네트워크는 기존의 네트워크의 상위에 구축되는 논리 링크들 및 노드들의 가상 네트워크이다. 오버레이 네트워크의 예들은 인터넷, Chord, CAN(Content Addressable Network), Pastry 및 Viceroy를 포함하지만 이에 한정되지 않는다. 몇몇 오버레이 네트워크들에서, 각각의 노드는 파티션으로 지칭되는 오버레이 네트워크 데이터의 일부를 저장할 수 있어서, 데이터의 저장 및 리트리브에서 네트워크 효율을 증가시키기 위해 이 데이터를 네트워크를 통해 분산시킬 수 있다
오버레이 네트워크에 참여하는 디바이스 또는 노드는 오버레이 네트워크의 다른 디바이스 또는 노드로부터 서비스를 획득하기를 원할 수 있다. 이러한 서비스들은 복수의 서비스 디스크립션 언어들 중 임의의 언어를 이용하여 오버레이 네트워크에 공개되고, 복수의 서비스 디스크립션 언어들 각각은 공개된 서비스를 발견하기 위해 이용되는 대응하는 서비스 발견 프로토콜을 갖는다. 위키피디아(Wikipedia)에 의해 제공되는 서비스 발견의 정의는 다음과 같다: "서비스 발견 프로토콜들은, 컴퓨터 네트워크 상에서 디바이스들 및 이 디바이스들에 의해 제공되는 서비스들의 자동 검출을 허용하는 네트워크 프로토콜들이다". 즉, 서비스 발견은 요청된 서비스에 대한 서비스 제공자를 발견하는 동작이다. 요구된 서비스의 위치(통상적으로 서비스 제공자의 어드레스)가 리트리브되는 경우, 사용자는 추가로 이를 액세스하고 이용할 수 있다.
일반적으로, 서비스 발견 프로토콜들은 2개의 엔티티들, 즉, (a) 서비스 제공자 ? 누가 오버레이 상에 서비스를 제공하는가, 및 (b) 클라이언트 ? 누가 서비스를 이용하는가를 포함한다. 일 양상에서, 서비스 제공자의 예들은, 프린팅, 스캐닝, 팩스, 저장, 음악 공유, 파일 공유, 게임들과 같은 서비스들, 및 영화표들, 호텔들, 항공표들의 예약 또는 온라인 게이밍 등과 같은 웹 서비스들을 제공하는 노드들을 포함한다. 또한, 네트워크의 임의의 노드가 클라이언트로 동작할 수 있다. 따라서, 서비스 발견의 목적은, 관심있는 특정 서비스에 대한 (이러한 서비스가 존재한다면) 서비스 제공자를 클라이언트가 발견할 수 있게 돕는 것이다.
피어-투-피어 오버레이 네트워크에서 서비스 발견이 성공적이기 위해, 서비스 제공자는 서비스 디스크립션 언어를 이용하여 자신의 서비스(들)를 특정해야 하고, 서비스에 대한 메타데이터가 몇몇 탐색가능한 형태로 오버레이의 노드들 상에 저장되어야 하고, 클라이언트들은, 대응하는 서비스들을 발견하는 것을 돕기 위해, 문의하는(querying) 시스템에 전달되는 탐색가능한 키워드들을 이용하여 서비스 요청들을 표현할 수 있어야 한다.
공개 프로세스의 일부로서, 키워드들은 서비스 디스크립션 문서로부터 추출되고, 분산형 네트워크를 통해 분산형 방식으로 개별적으로 공개된다. 다음으로, 키워드들 및/또는 서비스들을 발견하기 위해 개별 노드들에 의해 문의들이 발행될 수 있다. 통상적으로, 2개 이상의 키워드들에 대한 탐색을 수행하는 것은 AND 탐색을 수행하는 것을 수반하고, 여기서, 문의는 키워드들 중 하나를 포함하는 각각의 노드에 전송된다. 유사하게, 문의를 형성하는 다중 키워드들 중 하나 이상을 포함하는 각각의 노드에 문의를 전송함으로써, OR 탐색이 수행된다. 이러한 통상적인 탐색들은 높은 통신 비용과 연관된다.
따라서, 다중 키워드 문의들을 더 효율적으로, 그리고 최적화된 통신비로 처리하는 방법을 갖는 것이 바람직할 것이다.
하기 설명은 이러한 양상들의 기본적인 이해를 제공하기 위해서 하나 이상의 양상들의 간략화된 개요를 제공한다. 이 개요는 모든 고려되는 양상들에 대한 포괄적인 개요는 아니며, 모든 양상들의 중요하거나 핵심적인 엘리먼트를 식별하거나, 임의의 또는 모든 양상들의 범위를 커버하고자 할 의도도 아니다. 그 유일한 목적은 후에 제시되는 더 상세한 설명에 대한 도입부로서 간략화된 형태로 하나 이상의 양상들의 몇몇 개념들을 제공하기 위함이다.
일 양상에 따르면, 오버레이 네트워크에서 탐색하는 방법은, 분산형 네트워크의 제 1 노드에서 문의를 수신하는 단계 ?문의는 제 1 키워드 및 제 2 키워드를 포함함?; 제 1 키워드를 포함하는 제 1 수의 문서들의 제 1 세트를 발견하는 단계; 제 1 세트에서 제 1 수의 문서들의 함수로서, 최적의 제 1 블룸(Bloom) 필터 길이 및 대응하는 해시(hash) 함수들의 제 1 수를 컴퓨팅하는 단계; 및 제 1 세트의 제 1 블룸 필터를, 제 2 키워드를 해시함으로써 식별되는, 분산형 네트워크의 제 2 노드에 전송하는 단계를 포함하고, 제 1 블룸 필터는 제 1 블룸 필터 길이 및 해시 함수들의 제 1 수를 포함한다.
또 다른 양상은, 네트워크에서 서비스들을 공개 또는 발견하도록 구성되는 적어도 하나의 프로세서와 관련되며, 적어도 하나의 프로세서는, 분산형 네트워크의 제 1 노드에서 문의를 수신하기 위한 제 1 모듈 ?문의는 제 1 키워드 및 제 2 키워드를 포함함?; 제 1 키워드를 포함하는 제 1 수의 문서들의 제 1 세트를 발견하기 위한 제 2 모듈; 제 1 세트에서 제 1 수의 문서들의 함수로서, 최적의 제 1 블룸 필터 길이 및 대응하는 해시 함수들의 제 1 수를 컴퓨팅하기 위한 제 3 모듈; 및 제 1 세트의 제 1 블룸 필터를, 제 2 키워드를 해시함으로써 식별되는, 분산형 네트워크의 제 2 노드에 전송하기 위한 제 4 모듈을 포함하고, 제 1 블룸 필터는 제 1 블룸 필터 길이 및 해시 함수들의 제 1 수를 포함한다.
또 다른 양상은 컴퓨터 판독가능 매체를 포함하는 컴퓨터 프로그램 물건과 관련되며, 컴퓨터 판독가능 매체는, 컴퓨터로 하여금 분산형 네트워크의 제 1 노드에서 문의를 수신하게 하기 위한 코드들의 제 1 세트 ?문의는 제 1 키워드 및 제 2 키워드를 포함함?; 컴퓨터로 하여금 제 1 키워드를 포함하는 제 1 수의 문서들의 제 1 세트를 발견하게 하기 위한 코드들의 제 2 세트; 컴퓨터로 하여금, 제 1 세트에서 제 1 수의 문서들의 함수로서, 최적의 제 1 블룸 필터 길이 및 대응하는 해시 함수들의 제 1 수를 컴퓨팅하게 하기 위한 코드들의 제 3 세트; 및 컴퓨터로 하여금, 제 1 세트의 제 1 블룸 필터를, 제 2 키워드를 해시함으로써 식별되는, 분산형 네트워크의 제 2 노드에 전송하게 하기 위한 코드들의 제 4 세트를 포함하고, 제 1 블룸 필터는 제 1 블룸 필터 길이 및 해시 함수들의 제 1 수를 포함한다.
또 다른 양상은, 분산형 네트워크의 제 1 노드에서 문의를 수신하기 위한 수단 ?문의는 제 1 키워드 및 제 2 키워드를 포함함?; 제 1 키워드를 포함하는 제 1 수의 문서들의 제 1 세트를 발견하기 위한 수단; 제 1 세트에서 제 1 수의 문서들의 함수로서, 최적의 제 1 블룸(Bloom) 필터 길이 및 대응하는 해시 함수들의 제 1 수를 컴퓨팅하기 위한 수단; 및 제 1 세트의 제 1 블룸 필터를, 제 2 키워드를 해시함으로써 식별되는, 분산형 네트워크의 제 2 노드에 전송하기 위한 수단을 포함하고, 제 1 블룸 필터는 제 1 블룸 필터 길이 및 해시 함수들의 제 1 수를 포함하는 장치와 관련된다.
또 다른 양상은 분산형 네트워크에서 다중 키워드 탐색들을 수행하기 위한 장치와 관련되고, 이 장치는, 제 1 키워드 및 제 2 키워드를 포함하는 문의를 수신하도록 구성되는 수신기; 제 1 키워드를 포함하는 제 1 수의 문서들의 제 1 세트를 발견하도록 구성되는 키워드 세트 결정 컴포넌트; 및 제 1 세트에서 제 1 수의 문서들의 함수로서, 최적의 제 1 블룸 필터 길이 및 대응하는 해시 함수들의 제 1 수를 컴퓨팅하고, 제 1 세트의 제 1 블룸 필터를, 제 2 키워드를 해시함으로써 식별되는, 분산형 네트워크의 제 2 노드에 전송하도록 구성되는 블룸 필터 계산 컴포넌트를 포함하고, 제 1 블룸 필터는 제 1 블룸 필터 길이 및 해시 함수들의 제 1 수를 포함한다.
상술한 목적 및 관련된 목적들의 달성을 위해서, 하나 이상의 양상들이 아래에서 설명되고, 특히 청구항에서 특정되는 특징들을 포함한다. 하기 설명 및 관련 도면들은 하나 이상의 양상들의 예시적인 특징들을 보다 상세히 설명한다. 그러나, 이러한 특징들은, 다양한 양상들의 원리가 이용될 수 있는 다양한 방법들 중 일부만을 나타내며, 이 설명은 모든 이러한 양상들 및 이러한 양상들의 균등물들을 포함하도록 의도된다.
이하, 개시된 양상들은 첨부된 도면들과 관련하여 설명될 것이고, 첨부된 도면들은 개시된 양상들을 예시하도록 제공되고, 제한하려는 것이 아니며, 유사한 지정들은 유사한 엘리먼트들을 나타낸다.
도 1은 피어-투-피어 네트워크의 일 양상의 블록도이다.
도 2는 네트워크에서, 다양한 상이한 서비스 디스크립션 언어들을 지원하는, 서비스 공개를 위한 시스템의 일 양상의 개략도이다.
도 3은 설명된 기능을 수행하도록 구성되는 컴퓨팅 디바이스의 일 양상의 개략도이다.
도 4는 다중 키워드 탐색을 수행하는 방법의 일 양상의 흐름도이다.
도 5a 및 5b는 다중 키워드 탐색을 수행하는 방법의 추가적 양상들의 흐름도들이다.
도 6은 다중 키워드 탐색을 수행하기 위한 시스템의 일 양상의 개략도이다.
이제, 다양한 양상들이 도면들을 참조하여 설명된다. 하기 설명에서는, 설명을 위해, 하나 이상의 양상들의 철저한 이해를 제공하도록 다수의 특정 세부사항들이 기술된다. 그러나, 이 특정 세부사항들 없이도 이러한 양상(들)이 실시될 수 있음은 자명할 것이다.
피어-투-피어 네트워크들과 같은 분산형 네트워크들은 컴퓨터 네트워크 상에서 디바이스들, 및 이 디바이스들에 의해 제공되는 서비스들을 발견할 수 있는 능력에 의존한다. 서비스를 설명하기 위해 다양한 서비스 디스크립션 언어 스키마들이 이용될 수 있다. 본 명세서에서 설명되는 시스템들 및 방법들은 분산형 네트워크에 공개되는 문서들을 탐색하기 위한 시스템들 및 방법들을 제공한다. 더 상세하게는, 설명되는 시스템들 및 방법들은 AND 및 OR 탐색들 모두에 대한 블룸 필터의 최적의 파라미터들(해시 함수들의 사이즈 및 수)을 발견하는 것을 포함한다.
도 1을 참조하면, 피어-투-피어 오버레이 네트워크(100)의 블록도가 제공된다. 네트워크(100)는 인터넷 프로토콜 네트워크와 같은 임의의 유형의 네트워크를 포함하는 기본(underlying) 네트워크(102)를 포함한다. 기본 네트워크(102)는 단일 엔티티로서 도시되어 있지만, 기본 네트워크는 WAN들, LAN들, 무선 네트워크들 또는 임의의 다른 유형의 네트워크와 같은 임의의 수 또는 유형들의 네트워크들을 포함할 수 있다. 도 1은 피어-투-피어 오버레이 네트워크를 도시하지만, 본 출원은 오버레이 네트워크들에 한정되지 않는다. 피어-투-피어 오버레이 네트워크(100)는 본 명세서에서 설명되는 방법들 및 장치를 구현하는데 이용될 수 있는 하나의 예시적인 유형의 분산형 네트워크이다. 다른 유형들의 분산형 네트워크들이 또한 이용될 수 있다. 또한, 본 명세서에서 설명되는 시스템들 및 방법들은 중앙집중형 네트워크를 포함하는 임의의 다른 유형의 네트워크에도 동등하게 적용될 수 있다. 예를 들어, 네트워크(100)는 발견 서비스들을 제공하는 서버를 포함할 수 있다. 이러한 경우, 서버는 발견과 관련된 정보를 호스팅하는 디렉토리로서 동작할 수 있다. 예를 들어, 서버는 키워드들, 및 네트워크의 노드들에 의해 공개되는 대응하는 정보를 호스팅할 수 있다. 노드들은 이 정보를 서버에 공개할 수 있고, 문의들이 또한 서버에 전송될 수 있다.
일 양상에서, 기본 네트워크(102)는 다수의 피어-투-피어 네트워크들(104, 106 및 108)을 포함한다. 피어-투-피어 네트워크들(104, 106 및 108) 각각은 기본 네트워크(102)의 노드들의 서브세트를 포함하고, 이 노드들이 통신하는 것을 허용하기 위해 기본 네트워크(102)의 서비스들을 이용하여 동작한다. 예를 들어, 피어-투-피어 네트워크들(104, 106 및 108)에서, 노드들은 원하는 라우팅 경로들을 형성하기 위해 기본 네트워크(102)에 의해 제공되는 통신 링크들에 의해 접속된다. 피어-투-피어 네트워크들(104, 106 및 108)은 임의의 라우팅 구성을 인에이블시키기 위해 임의의 토폴로지 또는 아키텍쳐를 가질 수 있으며, 도 1에 도시된 구성에 한정되지 않는다.
네트워크들(104, 106 및 108)과 같은 피어-투-피어 네트워크들 내에서, 각각의 노드는 서비스 제공자 및/또는 클라이언트로서 동작할 수 있다. 즉, 노드는 오버레이에 서비스들을 제공할 수 있고, 하나 이상의 다른 노드들의 서비스들을 이용할 수 있다. 이러한 서비스들은, 예를 들어, 프린팅, 스캐닝, 팩스, 저장, 음악 공유, 파일 공유, 게임들, 및 영화표들, 호텔들, 항공표들의 예약 또는 온라인 게이밍 등과 같은 웹 서비스들을 포함할 수 있다. 그러나, 이러한 서비스들의 예들은 비제한적이고, 실제 서비스들은 나열된 서비스들 외에 더 많거나 더 적은 서비스들을 포함할 수 있음을 유의한다. 각각의 노드는, 예를 들어, 개인용 컴퓨터, 랩탑 컴퓨터, 무선 통신 디바이스, 모바일 전화, 개인 휴대 정보 단말, 프린터, 팩스 머신 및/또는 임의의 다른 네트워크-접속가능 컴퓨팅 디바이스와 같은 컴퓨팅 디바이스를 포함할 수 있다.
관심있는 특정한 서비스에 대한 서비스 제공자를 발견할 때, 클라이언트로서 동작하는 노드를 보조하기 위해 서비스 발견 프로토콜이 이용될 수 있다. 서비스 제공자는, 예를 들어, XML(eXtensible Markup Language), RDF(Research Description Format), RDF-S, WSDL(Web Service Description Language), WSDL-S, OWL(Ontology Web Language), OWL-S(Ontology Web Language for Services), UDDI(Universal Description Discovery and Integration), UPnP(Universal Plug and Play) 및/또는 다른 서비스 디스크립션 언어들과 같은 서비스 디스크립션 언어를 이용하여 자신의 서비스들을 특정한다. 서비스들에 대한 메타데이터가 오버레이의 노드들 상에 탐색가능한 포맷으로 저장될 수 있고, 클라이언트들은, 대응하는 서비스들을 발견하는 것을 돕기 위해, 문의하는 시스템에 전달되는 탐색가능한 키워드들을 이용하여 서비스 요청을 표현할 수 있다.
서비스들에 대한 메타데이터는 고유의 서비스 디스크립션 포맷으로 직접 저장될 수 있거나, 탐색가능한 스키마로 변환될 수도 있다. 하나의 가능한 구현은, 서비스 디스크립션으로부터 키워드들을 단순히 추출하고, 이들을 오버레이 상에 공개하는 것일 수 있다. 다른 구현은 키워드들을 선택된 서비스 디스크립션 포맷으로 직접 공개하는 것일 수 있다. 제 3 구현은 서비스 디스크립션을 탐색가능한 스키마로 변환하는 것일 수 있다.
도 2는 서비스 공개를 위한 예시적인 시스템(200)을 도시하고, 이 시스템은 다양한 상이한 서비스 디스크립션 언어들을 지원하고, 설명되는 양상들은 다른 이러한 유사한 시스템들에 확장될 수 있다. 시스템(200)은 피어-투-피어 네트워크 상에서 광고하고 발견될 서비스들에 대한 공통 프레임워크를 제공한다. 도 2에 도시된 바와 같이, 서비스 디스크립션에 대한 데이터(202)는, 예를 들어, XML, XDS, RDF, RDF-S, WSDL, UDDI, UPnP, OWL, OWL-s 등과 같은 임의의 서비스 디스크립션 언어/스키마(204)를 이용하여 공개될 수 있다. 하나 이상의 플러그-인 모듈들(206)이, 서비스 디스크립션을, 정규화된 스키마(209)에 기초하여, 예를 들어, 각각의 서비스 디스크립션 언어(204)와 같은 고유의 형태로부터 탐색가능한 서비스 디스크립션(208)으로 변환하도록 제공될 수 있다. 다음으로, 탐색가능한 서비스 디스크립션(208)이 오버레이 네트워크(210) 상에 공개될 수 있다.
탐색가능한 서비스 디스크립션(208)은 서비스 발견을 위해 요구되는 모든 정보 및 서비스들을 랭크-오더(rank-order) 및 액세스하는데 요구되는 정보의 수집(aggregation)을 가능하게 한다. 탐색가능한 서비스 디스크립션(208)을 공개하는 것은 고유의 서비스 디스크립션으로부터 키워드들을 추출하는 것을 포함할 수 있다. 키워드들은, 예를 들어, XML 속성-값 쌍들로서, RDF 트리플(triple)들로서, 단순한 키워드들로서, 또는 임의의 다른 추출 방법들에 따라 추출될 수 있다. 플러그-인 모듈(206)은, 추출된 특정한 필드들 및 그 필드들을 추출하기 위한 포맷을 정의하는 정규화된 스키마(209)를 제공한다. 정규화된 스키마(209)는 서비스 디스크립션 언어의 모든 기능들을 제공하지는 않기 때문에 서비스 디스크립션 언어가 아니다. 번역기들의 이용과는 달리, 플러그-인 모듈(206)은 하나의 서비스 디스크립션 언어로부터 하나 이상의 다른 서비스 디스크립션 언어로 번역하지 않는다. 오히려, 플러그-인 모듈(206)은 정규화된 스키마(209)에 기초하여 원래의 서비스 디스크립션으로부터 특정한 데이터의 추출을 용이하게 한다. 예를 들어, 정규화된 스키마(209)에 의해 특정되는 필드들은 고유의 서비스 디스크립션(204)에서 특정한 데이터에 맵핑된다. 따라서, 이것은, 오버레이 네트워크 상에 공개되는 정규화된 스키마(209)에 따라 추출되는 정보이다. 이와 같이, 서비스 디스크립션의 다수의 버전들이 각각 상이한 서비스 디스크립션 언어로 네트워크 상에 공개되게 하기 보다는, 임의의 노드에 의해 탐색되고 인식될 수 있는 네트워크에 단일 디스크립션이 공개될 수 있다.
대안적으로, 네트워크는, 하나의 특정한 서비스 디스크립션 포맷이 이용될 것이고, 다음으로, 모든 서비스 공개들/발견이 그 포맷에 기초함을 선험적으로(apriori) 결정할 수 있다.
오버레이 네트워크(210)의 각각의 노드는 파티션으로 지칭되는 오버레이 네트워크 데이터의 일부를 저장하도록 구성될 수 있어서, 데이터의 저장 및 리트리브에서의 네트워크 효율을 증가시키기 위해 이 데이터를 네트워크를 통해 분산시킬 수 있다. 네트워크 상에 저장된 데이터의 요약을 표현하기 위해, 열(column)들은 문서를 표현하고 행(row)들은 문서 내의 용어들을 표현하는 용어-빈도(term-frequency) 표가 이용될 수 있다. 용어-빈도 표는 데이터베이스에 대한 가치있는 정보를 제공하고, 다수의 유형들의 탐색을 위해 이용될 수 있다.
네트워크를 통한 데이터의 분산은 용어-빈도 표를 이용하여 다양한 방식들로 수행될 수 있다. 예를 들어, 파티션-바이-키워드(partition-by-keyword) 접근방식이 이용될 수 있고, 여기서, 용어-빈도 표는 행들에 의해 분리되고, 행들의 세트가 해시 함수에 기초하여 랜덤으로 특정한 노드에 할당된다. 해시 함수는 키워드들의 소유권을 상이한 노드들에 분산시키는데 이용된다. 따라서, 각각의 노드는 특정한 세트의 키워드들을 담당한다.
도 3은 분산형 네트워크에서 노드로서 기능할 수 있는 예시적인 컴퓨팅 디바이스(300)를 도시한다. 컴퓨팅 디바이스(300)는 하나 이상의 컴포넌트들과 연관된 프로세싱 기능들 및 본 명세서에서 설명되는 기능들을 수행하기 위한 프로세서(302)를 포함한다. 프로세서(302)는 단일 또는 다수의 세트의 프로세서들 또는 멀티-코어 프로세서들을 포함할 수 있다. 또한, 프로세서(302)는 통합형 프로세싱 시스템 및/또는 분산형 프로세싱 시스템으로서 구현될 수 있다.
컴퓨팅 디바이스(300)는 프로세서(302)에 의해 실행되는 애플리케이션들의 국부적 버전들을 저장하기 위한 것과 같은 메모리(304)를 추가로 포함한다. 메모리(304)는 랜덤 액세스 메모리(RAM), 판독 전용 메모리(ROM), 테이프, 자기 디스크들, 광학 디스크들, 휘발성 메모리, 비휘발성 메모리 및 이들의 임의의 조합과 같은, 컴퓨터에 의해 이용될 수 있는 임의의 유형의 메모리를 포함할 수 있다.
또한, 컴퓨팅 디바이스(300)는, 본 명세서에서 설명되는 것과 같은 하드웨어, 소프트웨어, 및 서비스들을 이용하는 하나 이상의 개체들(parties)과의 통신들을 구축 및 유지하기 위해 제공되는 통신 컴포넌트(306)를 포함한다. 통신 컴포넌트(306)는, 컴퓨팅 디바이스(300) 상의 컴포넌트들 사이에서 뿐만 아니라, 통신 네트워크에 걸쳐 위치된 디바이스들 및/또는 컴퓨팅 디바이스(300)에 직렬로 또는 국부적으로 접속되는 디바이스들과 같은 외부 디바이스들과 컴퓨팅 디바이스(300) 사이에서 통신들을 전달할 수 있다. 예를 들어, 통신 컴포넌트(306)는 하나 이상의 버스들을 포함할 수 있고, 외부 디바이스들과의 인터페이싱을 위해 동작할 수 있는, 송신기 및 수신기와 각각 연관된 송신 체인 컴포넌트들 및 수신 체인 컴포넌트들을 더 포함할 수 있다. 또한, 예를 들어, 통신 컴포넌트(306)는 분산형 네트워크의 다른 노드들과 통신하기 위해 컴퓨팅 디바이스(300)를 인에이블시키도록 구성될 수 있다.
또한, 컴퓨팅 디바이스(300)는, 본 명세서에서 설명되는 양상들과 관련하여 이용되는 정보, 데이터베이스들 및 프로그램들의 대량 저장을 위해 제공되는, 하드웨어 및/또는 소프트웨어의 임의의 적절한 조합일 수 있는 데이터 저장소(308)를 더 포함할 수 있다. 예를 들어, 데이터 저장소(308)는 프로세서(302)에 의해 현재 실행되고 있지 않은 애플리케이션들을 위한 데이터 저장소일 수 있다.
컴퓨팅 디바이스(300)는 또한, 컴퓨팅 디바이스(300)의 사용자로부터 입력들을 수신하도록 동작할 수 있고, 그 사용자에게의 프리젠테이션을 위해 출력들을 생성하도록 추가로 동작할 수 있는 사용자 인터페이스 컴포넌트(310)를 포함할 수 있다. 사용자 인터페이스 컴포넌트(310)는, 숫자 패드, 마우스, 터치 감응 디스플레이, 내비게이션 키, 펑션 키, 마이크로폰, 음성 인식 컴포넌트, 사용자로부터 입력을 수신할 수 있는 임의의 다른 메커니즘 또는 이들의 임의의 조합을 포함하는 하나 이상의 입력 디바이스들을 포함할 수 있지만, 이에 한정되는 것은 아니다. 또한, 사용자 인터페이스 컴포넌트(310)는, 디스플레이, 스피커, 햅틱 피드백 메커니즘, 프린터, 사용자에게 출력을 제공할 수 있는 임의의 다른 메커니즘 또는 이들의 임의의 조합을 포함하는 하나 이상의 출력 디바이스들을 포함할 수 있지만, 이에 한정되는 것은 아니다.
컴퓨팅 디바이스(300)는 또한 하나 이상의 탐색가능한 스키마 플러그-인 모듈들(206)을 포함할 수 있다. 예를 들어, 하나 이상의 플러그-인 모듈들(206)은 메모리(304)에 저장될 수 있다. 각각의 스키마 플러그-인 모듈(206)은, 정규화된 스키마(209)에 기초하여 임의의 서비스 디스크립션 언어(204)로 기록된 서비스 디스크립션들로부터 탐색가능한 서비스 디스크립션들(208; 도 2)을 생성하도록 구성될 수 있다. 탐색가능한 서비스 디스크립션(208)은 네트워크에 공개되고, 서비스를 위한 문의들을 프로세싱하는데 이용된다. 탐색가능한 서비스 디스크립션(208)을 생성하는 것은, 서비스 디스크립션으로부터 키워드들을 그 고유의 형태로 추출하는 것, 및 다음으로, 이 키워드들을 탐색가능한 서비스 디스크립션(208)의 포맷으로 네트워크 상에 광고하는 것을 포함한다.
컴퓨팅 디바이스(300)는 사용자 문의들을 수신하도록 구성되는 문의 수신 모듈(320)을 더 포함할 수 있다. 문의 수신 모듈(320)은, 네트워크에서 어떤 하나 이상의 노드들이 그 문의를 형성하는 특정한 키워드들을 담당하는지를 결정하도록 추가로 구성될 수 있다. 전술된 바와 같이, 네트워크는 파티션-바이-키워드 접근방식을 구현할 수 있고, 여기서, 용어-빈도 표가 행들에 의해 분리되고, 각각의 행 또는 행들의 세트는 특정한 노드에 랜덤으로 할당된다. 따라서, 문의 수신 모듈(320)은 용어-빈도 표에 기초하여 문의 키워드들을 담당하는 하나 이상의 노드들을 결정하도록 구성될 수 있다. 해시 함수가 그 담당 노드(들)를 결정하도록 구현될 수 있다. 문의 수신 모듈(320)은 프로세싱을 위해 그 문의를 적절한 노드(들)로 라우팅하도록 추가로 구성될 수 있다. 예를 들어, 몇몇 예들에서, 문의 수신 모듈(320)은 문의를 포워딩할 제 1 노드를 선택하도록 구성될 수 있고, 여기서, 제 1 노드는 문의 내의 제 1 키워드를 담당한다. 문의 수신 모듈(320)은 또한, 네트워크의 다른 노드들로부터 탐색 결과들을 수신하고, 그 결과들을 사용자에게 다시 포워딩하도록 구성될 수 있다.
컴퓨팅 디바이스(300)는 네트워크 상에 저장된 데이터 및/또는 문서들에 대한 문의들을 프로세싱하도록 구성되는 문의 프로세싱 모듈(330)을 더 포함할 수 있다. 문의 프로세싱 모듈(330)은, 노드가 담당하는 키워드들에 대해 키워드 문의를 매칭시키는 문서들의 세트를 결정하도록 구성되는 키워드 세트 결정 서브-모듈(332)을 포함할 수 있다.
문의 프로세싱 모듈(330)은 블룸 필터 계산 서브-모듈(334)을 더 포함할 수 있다. 블룸 필터 계산 서브-모듈은 키워드 세트 결정 서브-모듈(332)에 의해 결정된 문서들의 세트를 표현하기 위해 최적으로 사이징된(sized) 블룸 필터를 결정하도록 구성될 수 있다. 예를 들어, 세트 내의 문서들의 수의 함수로서 블룸 필터의 길이가 결정될 수 있다. 블룸 필터는, 일 엘리먼트가 세트의 멤버인지 여부를 테스트하는데 이용되는 공간-효율적 확률 데이터 구조이다. 블룸 필터에 대해 복수의 해시 함수들이 정의될 수 있고, 해시 함수들 각각은 몇몇 세트 엘리먼트를 균일한 랜덤 분산으로 L개의 어레이 위치들 중 하나에 맵핑 또는 해시한다. 엘리먼트에 대해 문의하기 위해 또는 엘리먼트가 세트 내에 존재하는지 여부를 테스트하기 위해, 엘리먼트는 어레이 위치들을 획득하도록 해시 함수로의 입력으로서 제공된다. 이 위치들의 비트들 중 임의의 비트가 0이면, 엘리먼트는 세트 내에 있지 않고, 그렇지 않고 모두가 1이면, 그 엘리먼트는 세트 내에 있거나, 다른 엘리먼트들의 삽입 동안 비트들이 1로 설정된 것이다.
블룸 필터를 이용하는 하나의 이점은 블룸 필터가 대량의 압축을 제공한다는 점이다. 그러나, 그 결과, 거짓 포지티브(positive)들이 발생할 수 있다. 즉, 블룸 필터는, 엘리먼트가 존재하지 않는 경우에도 엘리먼트가 세트의 일부인 것으로 표시할 수 있다. 이것은, 예를 들어, 엘리먼트에 대응하는 모든 위치들이 다른 엘리먼트들의 삽입 동안 이미 1로 설정된 경우에 발생할 수 있다. 따라서, 블룸 필터 계산 서브-모듈(334)은 거짓 포지티브들을 정정하도록 구성될 수 있다.
문의 프로세싱 모듈(330)은 또한, AND 문의들 및 OR 문의들과 같은 다중 키워드 문의들을 프로세싱하도록 구성되는 다중-키워드 프로세싱 모듈(336)을 포함할 수 있다. AND 문의는, 세트 내의 각각의 문서가 그 문의의 일부를 형성하는 키워드 각각 및 모두를 포함하는 문서들의 세트를 결정하도록 추구한다. OR 문의는, 세트 내의 각각의 문서가 그 문의에서 특정된 적어도 하나의 키워드를 포함하는 문서들의 세트를 결정하도록 추구한다. 다중-키워드 프로세싱 모듈(336)은 네트워크의 2개 이상의 노드들로부터 수신된 문서들의 세트의 교집합(intersection)을 컴퓨팅하기 위해 블룸 필터 계산 서브-모듈(334)과 함께 동작할 수 있다.
도 4는 수신된 다중 키워드 문의를 프로세싱하기 위한 예시적인 방법을 도시하는 흐름도이다. 402에 도시된 바와 같이, 제 1 노드는 다중 키워드들을 포함하는 문의를 수신할 수 있다. 예를 들어, 문의는 AND 문의 및 OR 문의 또는 결합된 AND/OR 문의일 수 있다. 문의는, 수신하는 노드가 문의 내의 제 1 키워드를 담당한다고 결정한, 네트워크의 다른 노드(문의하는 노드)로부터 수신될 수 있다.
404에 도시된 바와 같이, 제 1 노드는 문의에서 특정된 제 1 키워드를 포함하는 문서들의 세트를 결정한다. 제 1 노드는, 문의 워드에 대해 자신의 메모리를 스캐닝하고, 자신의 메모리에 내부적으로 저장한 용어-빈도 표의 대응하는 행을 추출함으로써 적절한 문서들을 결정할 수 있다. 다음으로, 노드는, 선택된 행의 넌-제로 엔트리를 갖는 문서들의 세트를 발견한다.
406에 도시된 바와 같이, 제 1 노드는 문의 키워드를 포함하는 문서들의 세트를 표현하기 위해 최적의 블룸 필터를 컴퓨팅할 수 있다. 이것은, 예를 들어, 키워드를 포함하는 문서들의 세트의 사이즈에 기초하여 탐색 프로세스에 요구된 블룸 필터의 사이즈를 컴퓨팅하는 것을 포함할 수 있다. 다음으로, 노드는 문서들의 세트 내의 각각의 문서에 대한 문서 식별자들을 블룸 필터 상으로 해시할 수 있다. 다음으로, 408에 도시된 바와 같이, 제 1 노드는, 계산된 블룸 필터 및 블룸 필터의 계수들과 함께 초기 문의를, 그 초기 문의의 제 2 키워드를 담당하는 제 2 노드로 전송한다. 몇몇 구현들에서, 제 1 노드는 제 2 키워드를 담당하는 노드를 결정하도록 구성될 수 있다. 다른 구현들에서, 제 2 (및 임의의 후속하는) 키워드들을 담당하는 노드는 문의하는 노드에 의해 미리 결정될 수 있다.
410에 도시된 바와 같이, 문의가 AND 문의이면, 제 1 노드는 제 2 노드로부터의 탐색 결과들을 수신할 수 있다. 제 1 노드는, 예를 들어, 제 2 노드들에 의해 리턴된 문서들의 세트를 거짓 포지티브들에 대해 검사함으로써, 탐색 결과들을 검증할 수 있다. 즉, 제 1 노드는 제 2 노드들에 의해 리턴된 문서들의 세트를 검사하여, 그 세트가 제 1 키워드를 포함하지 않은 임의의 문서들을 포함하는지 여부를 확인할 수 있다. 임의의 이러한 거짓 포지티브들은 제 1 노드에 의해 제거될 수 있다. 412에 도시된 바와 같이, 제 1 노드는 문의하는 노드에 탐색 결과들을 리턴할 수 있다. 문의가 OR 문의이면, 414에 도시된 바와 같이, 제 1 노드는 제 2 노드로부터 확인응답 메시지를 수신할 때, 문의하는 노드에 제 1 키워드에 매칭하는 문서들의 리스트를 전송할 수 있다.
도 4에 대해 전술한 바와 같이, 제 1 노드로부터 문의 및 블룸 필터를 수신하는 제 2 노드에 의해 수행되는 방법은, 탐색이 AND 탐색인지 또는 OR 탐색인지 여부에 따라 상이할 수 있다. 도 5a는, AND 탐색을 수행하기 위해 제 2 노드에 의해 구현될 수 있는 방법을 도시한다. 도 4의 단계(408)에 도시된 바와 같이, 제 1 노드가 자신의 블룸 필터를 컴퓨팅한 후, 제 1 노드는 문의의 제 2 키워드를 담당하는 제 2 노드에 초기 문의 및 자신의 계산된 블룸 필터를 전송한다. 502A에 도시된 바와 같이, 제 2 노드는 문의 및 블룸 필터를 제 1 노드로부터 수신한다. 다음으로, 504A에 도시된 바와 같이, 제 2 노드는 제 2 키워드에 매칭하는 문서들의 세트를 결정한다. 문서들의 세트를 결정하는 것은 제 1 키워드에 대해 전술한 바와 같이 수행될 수 있다. 다음으로, 506A에 도시된 바와 같이, 제 2 노드는, 제 1 노드에 의해 계산된 블룸 필터 상에서 제 2 키워드에 매칭하는 문서들의 결정된 세트의 모든 엘리먼트들에 대한 멤버쉽을 체크한다. 다음으로, 508A에 도시된 바와 같이, 제 2 노드는 교집합 D2∩BF(D1)을 계산함으로써 자신의 탐색 결과들을 컴퓨팅하고 ?여기서, D2는 문서들의 제 2 세트를 표현하고, BF(D1)은 문서들의 제 1 세트의 블룸 필터를 표현함?, 탐색 결과들을 제 1 노드에 다시 리턴한다. 다음으로, 제 1 노드는 도 4의 단계(412)에 도시된 바와 같이, 문의하는 노드에 문서들의 리스트를 전송할 수 있다.
도 5b는 OR 탐색을 수행하기 위해 제 2 노드에 의해 구현될 수 있는 프로세스를 도시한다. 단계들(502B, 504B 및 506B)은 단계들(502A, 504A 및 506A)과 동일하고, 여기서, 제 2 노드는 문의 및 블룸 필터를 제 1 노드로부터 수신하고, 제 2 키워드에 매칭하는 문서들의 세트를 결정하고, 다음으로, 제 1 노드에 의해 계산된 블룸 필터 상에서 제 2 키워드에 매칭하는 문서들의 결정된 세트의 모든 엘리먼트들에 대한 멤버쉽을 체크한다. 508B에 도시된 바와 같이, 제 2 노드는, 제 1 노드의 블룸 필터에 아직 존재하지 않는 문서들을 문의하는 노드에 리턴한다. 제 2 노드는 또한 제 1 노드에 ACK 응답을 전송할 수 있다. 다음으로, 문의하는 노드는, 제 1 노드로부터 획득된 문서들의 제 1 세트와 제 2 노드로부터 획득된 수신된 세트 D2-BF(D1)의 합집합을 취하여 (여기서, D2는 문서들의 제 2 세트이고, BF(D1)은 문서들의 제 1 세트의 블룸 필터임), 탐색 프로세스를 완료할 수 있다.
AND 탐색들의 경우, 통신 비용 및 거짓 포지티브들의 확률은 블룸 필터 길이(Ls) 및 해시 함수들의 수(rs)의 적절한 선택에 의해 감소될 수 있다. Ls 및 rs는 하기 공식들을 이용하여 컴퓨팅될 수 있다.
Figure pct00001
(1)
Figure pct00002
(2)
본 명세서에서 설명되는 방법들은 2개보다 많은 키워드 용어들을 수반하는 AND 문의들에 대해 확장될 수 있다. 예를 들어, 사용자가 "k1 and k2 and k3 and ... kq" 형태의 문의를 발행하는 경우, 하기 단계들이 수행된다:
(1) 문의가 노드로 전송된다: n1 = hash(k1).
(2) 노드-n1이 자신의 국부적으로 반전된 인덱스 리스트를 검색하고, 키워드-k1을 포함하는 문서들의 세트 D1을 발견한다. n1은 입력으로서 세트-D1의 사이즈를 이용하여, (3) 및 (4)를 각각 이용하여 블룸 필터의 사이즈 및 r의 값을 컴퓨팅한다.
(3) 노드-n1은 D1의 모든 문서의 ID들을 블룸 필터 상에 추가하고, 필터 계수들을 노드 n2 = hash(k2)로 전송한다.
(4) n1로부터 문의를 수신하면, 노드 n2는 자신의 국부적으로 반전된 인덱스를 검색하여, 키워드-k2를 포함하는 문서들의 리스트 D2를 발견한다. n2는 블룸 필터-BF(D1) 상에서 D2의 모든 엘리먼트들에 대한 멤버쉽을 체크하고, 교집합 D2∩BF(D1)을 컴퓨팅한다.
(5) n2는,
Figure pct00003
(3)
에서와 같이, 입력으로서 세트-D2∩BF(D1)의 사이즈를 이용하여 블룸 필터의 사이즈를 컴퓨팅한다.
rs의 값은 LS의 새로운 값을 이용하여,
Figure pct00004
(4)
에서와 같이 컴퓨팅된다. n2는 필터 계수들을 노드 n3 = hash(k3)으로 전송한다.
(6) 단계들 (5) 및 (6)은 문의의 모든 q개의 키워드들에 대해 반복된다. 각각의 단계에서, Ls의 새로운 값이 (9)를 이용하여 컴퓨팅되고, rs의 값이 업데이트된다.
(7) 다음으로, 노드 nq = hash(kq)가 ID들의 리스트를 이전의 노드 nq-1 = hash(kq-1)로 다시 리턴한다.
(8) 노드-nq-1은 자신이 소유한 세트 Dq-1과 수신된 세트의 교집합을 수행하고, 문서들의 결과적 리스트를 nq-2 = hash(kq-2)로 리턴한다.
(9) 최종 응답이 n1 = hash(k1)에 도달할 때까지 단계 (7) 및 (8)이 반복된다.
(10) 노드-n1은 세트 D1과 수신된 세트의 교집합을 수행하고, 문서들의 결과적 리스트를 소스로 리턴한다.
Figure pct00005
(1≤j≤q)의 사이즈에 대한 이전의 정보(knowledge)는 통신 비용을 추가로 감소시키는데 이용될 수 있다. 문의는 노드
Figure pct00006
에 먼저 전송될 수 있고, 다음으로,
Figure pct00007
에 대해 두번째로 작은 값을 갖는 노드 j'로 라우팅될 수 있는 식이다. 이 방식으로, 통신되는 데이터의 양은 현저하게 감소될 수 있다.
Figure pct00008
의 사이즈들의 추정치를 선험적으로 획득하기 위해 캐싱(caching) 기술들이 이용될 수 있고, 이 추정치들은 블룸 필터의 사이즈를 결정하는데 이용될 수 있다.
OR 탐색에서, 필터의 길이 Ls 및 해시 함수들의 수 rs는, 리콜(recall)을 원하는 값보다 크게 유지하면서 블룸 필터들에 기인한 절약들을 최대화하는 것을 목적으로 하는 제한된 최적화 문제를 해결함으로써 획득될 수 있다.
Figure pct00009
(5)
Figure pct00010
(6)
OR 탐색을 수행하기 위해 본 명세서에서 설명되는 방법들은 2개보다 많은 키워드 용어들을 수반하는 OR 문의들에 대해 확장될 수 있다. 예를 들어, 사용자가 "k1 or k2 or k3 or ... kq" 형태의 문의를 발행하는 경우, 하기 단계들이 수행된다:
(1) 문의가 노드로 전송된다: n1 = hash(k1).
(2) 노드-n1이 자신의 국부적으로 반전된 인덱스 리스트를 검색하고, 키워드-k1을 포함하는 문서들의 세트 D1을 발견한다. n1은 입력으로서 세트-D1의 사이즈를 이용하여, (15) 및 (16)을 각각 이용하여 블룸 필터의 사이즈 및 r의 값을 컴퓨팅한다.
(3) 노드-n1은 D1의 모든 문서의 ID들을 블룸 필터 상에 추가하고, 필터 계수들을 노드 n2 = hash(k2)로 전송한다. 노드-n1은 문의하는 노드에 D1을 전송한다.
(4) n1로부터 블룸 필터 및 문의를 수신하면, 노드 n2는 자신의 국부적으로 반전된 인덱스를 검색하여, 키워드-k2를 포함하고 n1에 의해 전송된 블룸 필터에 포함되지 않은 문서들의 리스트 D2를 발견한다. n2는 문의하는 노드에 이 추가적 문서 ID들을 전송하고, 수신된 데이터에 대한 확인응답을 n1에 전송한다.
(5) n2는 이 추가적 문서 ID들 (D2-BF(D1))을 BF(D1)에 추가한다. 결합된 블룸 필터는 BF(D1, D2)로 지칭되고, D2의 일부 ID들은 블룸 필터에서의 가능한 충돌들에 기인하여 단계(4)에서 생략될 수 있기 때문에, BF(D1, D2)는 BF(D1∪D2)와는 상이할 수 있음을 유의한다. n2는 필터 계수들 BF(D1, D2)을 노드 n3 = hash(k3)으로 전송한다.
(6) 단계 (4) 및 (5)가 문의의 모든 q개의 키워드들에 대해 반복된다. 문의가 i번째 노드-ni = hash(ki)에 있는 경우, 노드-ni는 BF(D1, D2, ..., Di-1)에서 제거된 문서 ID들을, 문의하는 노드에 전송하고, 업데이트된 블룸 필터 BF(D1, D2, ..., Di)를 노드-ni+1 = hash(ki+1)에 전송한다.
(7) 문의하는 노드는 q개의 노드들로부터 수신된 모든 문서 ID들의 합집합을 취하여, 탐색을 완료한다.
Figure pct00011
(1≤j≤q)의 사이즈에 대한 이전의 정보는 통신 비용을 추가로 감소시키는데 이용될 수 있다. 문의는 노드
Figure pct00012
에 먼저 전송될 수 있고, 다음으로,
Figure pct00013
에 대해 두번째로 큰 값을 갖는 노드 j'로 라우팅될 수 있는 식이다. 또한, 블룸 필터들은, 오직
Figure pct00014
및/또는
Figure pct00015
가 작은 경우에만, 큰 절약들을 제공하는 것을 돕는다(부록 B의 도면 참조).
Figure pct00016
및/또는
Figure pct00017
의 큰 값들의 경우, (블룸 필터들 대신에) 실제 세트들을 송신하는 것이 추천된다. 더 상세하게는,
Figure pct00018
(7)
인 경우 블룸 필터 접근방식을 이용하는 것이 추천되고, 그렇지 않으면 직접 송신 접근방식을 이용하는 것이 추천된다. 2가지 반대되는 접근방식들 중에서의 이 선택은,
Figure pct00019
의 자신의 값들 및
Figure pct00020
의 캐시된 값들을 이용하는 단계 (2)에서 노드-n1에 의해 행해질 수 있다.
블룸 필터들은 AND 및 OR 유형의 탐색들 모두에 대한 증분적 결과들을 생성하는데 이용될 수 있다. 문의를 가끔 발행하는 사용자들은 자신들이 서비스를 탐색하는 경우 모든 결과들을 요구한다. 스트리밍 전송들을 이용하고, 오직 원하는 수의 결과들만을 리턴함으로써, 전송될 필요가 있는 정보의 양은 감소될 수 있다. 부록 A 및 부록 B에서 볼 수 있는 바와 같이, 문의에 대한 통신 비용은 세트들
Figure pct00021
및/또는
Figure pct00022
의 사이즈에 직접 비례하고, 용어를 포함하는 문서들의 수가 커질수록 통신 비용이 커진다.
블룸 필터들은 증분적 조사(research)들을 허용함으로써 통신 비용을 감소시키는 것을 도울 수 있다. 사용자가 문의 "k1 및 k2"를 갖는 고정된 수의 결과들을 탐색하는 경우, 대응하는 노드들 n1 및 n2는 그 수에 도달할 때까지 증분적으로 통신할 수 있다. 노드 n1은 자신의 블룸 필터를 청크(chunk)들로 전송하고, 노드 n2는 그 대응하는 블룸 필터 청크에 대한 결과들의 세트만을 리턴한다. 단일 블룸 필터는 분할될 수 없고 여전히 어떠한 의미를 보유하기 때문에, 문서 세트 D1이 세트들로 분할될 필요가 있고, 다음으로, 블룸 필터 길이는 그 청크 사이즈를 타겟팅하도록 설계될 수 있다. 이 프로세스는, 노드-n1이 문의에 대한 고정된 수의 결과들을 식별할 때까지 반복될 수 있다. 유사한 증분적 접근방식이 OR 탐색에 대해서도 수행될 수 있다.
AND 및 OR 탐색들의 결합인 다른 유형들의 문의들, 예를 들어, Q = (Q1∪Q2)∩(Q3∪Q4) 등의 경우, 다중-단계 절차가 구현될 수 있다. 제 1 단계에서, 문의가 단순화되고, 예를 들어, Karnaugh 맵들 또는 Quine-McCluskey 알고리즘을 이용하여, 곱들의 합(sum-of-products)으로 표현된다. 상기 예에서, 문의 Q는 Q = (Q1∩Q3)∪(Q1∩Q4)∪(Q2∩Q3)∪(Q2∩Q4)로 표현된다.
제 2 단계에서, 문의하는 노드 nQ가 문의를 파싱하고, 문의를 일련의 AND 문의들로 분해한다. 이 예에서, 문의하는 노드는 문의 Q를 4개의 문의들, 즉,
1. (Q1∩Q3);
2. (Q1∩Q4);
3. (Q2∩Q3); 및
4. (Q2∩Q4)
로 분해할 것이다.
이 4개의 문의들은 개별적 AND 탐색들로서 별도로 실행될 수 있고, 개별적 결과들이 수집된다. 마지막 단계에서, 문의하는 노드는 이 개별적 결과들의 합집합을 수행하여, 탐색 문의에 대한 최종 답을 획득한다.
도 6을 참조하면, 네트워크에서 서비스들을 공개 및 발견하기 위한 시스템(600)이 도시되어 있다. 도시된 바와 같이, 시스템(600)은 프로세서, 소프트웨어 또는 이들의 조합(예를 들어, 펌웨어)에 의해 구현되는 기능들을 표현할 수 있는 기능 블록들을 포함한다. 시스템(600)은 함께 동작하는 전기 컴포넌트들의 논리 그룹(602)을 포함한다. 시스템(600)은, 예를 들어, 분산형 네트워크의 노드로서 동작하는 컴퓨팅 디바이스에 의해 구현될 수 있다.
논리 그룹(602)은 제 1 키워드 및 제 2 키워드를 포함하는 문의를 수신하기 위한 모듈(604)을 포함할 수 있다. 또한, 논리 그룹(602)은 제 1 키워드를 포함하는 제 1 수의 문서들의 제 1 세트를 발견하기 위한 모듈(606)을 포함할 수 있다. 논리 그룹(602)은, 제 1 세트의 제 1 수의 문서들의 함수로서 최적의 제 1 블룸 필터 길이 및 대응하는 제 1 수의 해시 함수들을 컴퓨팅하기 위한 모듈(608); 및 제 1 세트의 제 1 블룸 필터를, 제 2 키워드를 해시함으로써 식별된, 분산형 네트워크의 제 2 노드에 전송하기 위한 모듈(610) ?여기서, 제 1 블룸 필터는 제 1 블룸 필터 길이 및 제 1 수의 해시 함수들을 포함함? 을 더 포함할 수 있다. 추가적으로, 시스템(600)은, 전기 컴포넌트들(604 내지 610)과 연관된 기능들을 실행하기 위한 명령들을 보유하는 메모리(618)를 포함할 수 있다. 전기 컴포넌트들(604 내지 610)은 메모리(618)의 외부에 있는 것으로 도시되었지만, 메모리(618) 내부에 존재할 수 있음을 이해해야 한다.
본 출원에서 사용되는 바와 같이, 용어 "컴포넌트", "모듈", "시스템" 등은 하드웨어, 펌웨어, 하드웨어와 소프트웨어의 결합, 소프트웨어 또는 실행 소프트웨어와 같은 (그러나, 이에 제한되지는 않음) 컴퓨터 관련 엔티티를 포함하는 것으로 의도된다. 예를 들어, 컴포넌트는 프로세서 상에서 실행되는 프로세스, 프로세서, 객체, 실행가능, 실행 스레드, 프로그램 및/또는 컴퓨터일 수 있지만, 이에 한정되는 것은 아니다. 예를 들어, 컴퓨팅 디바이스 상에서 실행되는 애플리케이션 및 그 컴퓨팅 디바이스 모두가 컴포넌트일 수 있다. 하나 이상의 컴포넌트들은 프로세스 및/또는 실행 스레드 내에 상주할 수 있고, 일 컴포넌트는 하나의 컴퓨터 상에서 로컬화될 수 있고 그리고/또는 2 개 이상의 컴퓨터들 사이에서 분산될 수 있다. 또한, 이러한 컴포넌트들은 다양한 데이터 구조들이 저장된 다양한 컴퓨터 판독가능 매체로부터 실행될 수 있다. 컴포넌트들은 예를 들어 하나 이상의 데이터 패킷들을 갖는 신호, 예를 들면, 로컬 시스템 내의 다른 컴포넌트, 분산 시스템 내의 다른 컴포넌트 및/또는 신호에 의한 다른 시스템들과의 네트워크(예를 들어, 인터넷)을 통한 다른 컴포넌트와 상호 작용하는 하나의 컴포넌트로부터의 데이터에 따라 로컬 및/또는 원격 처리들을 통해 통신할 수 있다
또한, 다양한 양상들은, 유선 단말 또는 무선 단말일 수 있는 단말과 관련하여 본 명세서에 제시된다. 단말은 또한, 시스템, 디바이스, 가입자 유닛, 가입자국, 이동국, 모바일, 모바일 디바이스, 원격국, 원격 단말, 액세스 단말, 사용자 단말, 단말, 통신 디바이스, 사용자 에이전트, 사용자 디바이스 또는 사용자 장비(UE)로 지칭될 수 있다. 무선 단말은, 셀룰러 전화, 위성 전화, 코드리스 전화, 세션 개시 프로토콜(SIP) 전화, 무선 로컬 루프(WLL)국, 개인 휴대 정보 단말(PDA), 무선 접속 기능을 갖는 핸드헬드 디바이스, 컴퓨팅 디바이스, 또는 무선 모뎀과 접속되는 다른 프로세싱 디바이스들일 수 있다. 또한, 다양한 양상들은 기지국과 관련하여 본 명세서에 제시된다. 기지국은 무선 단말(들)과 통신하는데 이용될 수 있고, 또한 액세스 포인트, 노드 B 또는 몇몇 다른 용어로 지칭될 수 있다.
또한, 용어 "또는"은 배타적 "또는"이 아니라 내포적 "또는"을 의미하는 것으로 의도된다. 즉, 달리 특정되지 않거나 문맥상 명확하지 않은 경우에, 문구 "X는 A 또는 B를 이용한다"는 자연적인 내포적 순열들 중 하나를 의미하는 것으로 의도된다. 즉, "X는 A 또는 B를 이용한다"는, X가 A를 이용하거나; X가 B를 이용하거나; 또는 X가 A 및 B 모두를 이용하는 경우들 어느 것에 의해서도 만족된다. 또한, 달리 특정되지 않거나 단수 형태를 지시하는 것으로 문맥상 명확하지 않은 경우에, 본 명세서와 첨부된 청구항에서 단수는 일반적으로 "하나 또는 그 이상"을 의미하는 것으로 해석되어야 한다.
본 명세서에서 설명되는 기술들은 CDMA, TDMA, FDMA, OFDMA, SC-FDMA 및 다른 시스템들과 같은 다양한 무선 통신 시스템들에 이용될 수 있다. 용어 "시스템" 및 "네트워크"는 종종 상호교환하여 사용된다. CDMA 시스템은 유니버셜 지상 무선 액세스(UTRA), cdma2000 등과 같은 무선 기술을 구현할 수 있다. UTRA는 광대역-CDMA(W-CDMA) 및 CDMA의 다른 변형예들을 포함한다. 또한, cdma2000은 IS-2000, IS-95 및 IS-856 표준들을 커버한다. TDMA 시스템은 이동 통신용 범용 시스템(GSM)과 같은 무선 기술을 구현할 수 있다. OFDMA 시스템은 이볼브드 UTRA(E-UTRA), 울트라 모바일 브로드밴드(UMB), IEEE 802.11(Wi-Fi), IEEE 802.16(WiMAX), IEEE 802.20, 플래쉬-OFDM 등과 같은 무선 기술을 구현할 수 있다. UTRA 및 E-UTRA는 유니버셜 모바일 통신 시스템(UMTS)의 일부이다. 3GPP 롱 텀 에볼루션(LTE)은, 다운링크에서 OFDMA를 사용하고 업링크에서 SC-FDMA를 사용하는 E-UTRA를 이용하는 UMTS의 릴리스이다. UTRA, E-UTRA, UMTS, LTE 및 GSM은 "3세대 파트너쉽 프로젝트(3GPP)"로 명명된 기구로부터의 문서들에 제시된다. 또한, cdma2000 및 UMB는 "3세대 파트너쉽 프로젝트 2(3GPP2)"로 명명된 기구로부터의 문서들에 제시된다. 또한, 이러한 무선 통신 시스템들은 종종, 언페어링된(unpaired) 미승인 스펙트럼들, 802.xx 무선 LAN, 블루투스 및 임의의 다른 단거리 또는 장거리 무선 통신 기술들을 이용하는 피어-투-피어(예를 들어, 모바일-투-모바일) 애드 혹(ad hoc) 네트워크 시스템들을 포함할 수 있다.
다양한 양상들 또는 특징들은, 다수의 디바이스들, 컴포넌트들, 모듈들 등을 포함할 수 있는 시스템들의 관점에서 제시될 것이다. 다양한 시스템들은 추가적 디바이스들, 컴포넌트들, 모듈들 등을 포함할 수 있고 그리고/또는 도면들과 관련되어 설명되는 디바이스들, 컴포넌트들, 모듈들 등의 전부를 포함하지는 않을 수도 있음을 이해하고 인식해야 한다. 이러한 접근방식들의 결합이 또한 이용될 수 있다.
본 명세서에서 개시된 양상들과 관련하여 설명되는 다양한 예시적인 로직들, 로직 블록들, 모듈들 및 회로들은 범용 프로세서, 디지털 신호 프로세서(DSP), 주문형 집적회로(ASIC), 필드 프로그램가능한 게이트 어레이(FPGA) 또는 다른 프로그램가능한 로직 디바이스, 이산 게이트 또는 트랜지스터 로직, 이산 하드웨어 컴포넌트들 또는 본 명세서에 설명된 기능들을 구현하도록 설계된 이들의 임의의 조합으로 구현 또는 수행될 수 있다. 범용 프로세서는 마이크로프로세서일 수 있지만, 대안적으로, 프로세서는 임의의 종래의 프로세서, 제어기, 마이크로제어기, 또는 상태 머신일 수 있다. 프로세서는 컴퓨팅 디바이스들의 조합, 예를 들어 DSP 및 마이크로프로세서의 조합, 복수의 마이크로프로세서들, DSP 코어와 결합된 하나 이상의 마이크로프로세서들, 또는 임의의 다른 이러한 구성으로서 구현될 수 있다. 또한, 적어도 하나의 프로세서는 전술한 단계들 및/또는 동작들 중 하나 이상을 수행하도록 동작할 수 있는 하나 이상의 모듈들을 포함할 수 있다.
또한, 본 명세서에 개시된 양상들과 관련하여 설명되는 방법 또는 알고리즘의 단계들 및/또는 동작들은 직접적으로 하드웨어로, 프로세서에 의해 실행되는 소프트웨어 모듈로, 또는 이들의 조합으로 구현될 수 있다. 소프트웨어 모듈은 RAM 메모리, 플래쉬 메모리, ROM 메모리, EPROM 메모리, EEPROM 메모리, 레지스터들, 하드디스크, 휴대용 디스크, CD-ROM, 또는 공지된 임의의 다른 형태의 저장 매체에 상주할 수 있다. 예시적인 저장 매체는, 프로세서가 저장 매체로부터 정보를 판독하고, 저장 매체에 정보를 기록할 수 있도록 프로세서에 연결된다. 대안적으로, 저장 매체는 프로세서에 통합될 수도 있다. 또한, 몇몇 양상에서, 프로세서 및 저장 매체는 ASIC에 상주할 수도 있다. 부가적으로, ASIC는 사용자 단말에 상주할 수도 있다. 대안적으로, 프로세서 및 저장 매체는 사용자 단말에서 개별 컴포넌트들로서 상주할 수 있다. 부가적으로, 몇몇 양상들에서, 방법 또는 알고리즘의 단계들 및/또는 동작들은, 컴퓨터 프로그램 물건에 통합될 수 있는 컴퓨터 판독가능 매체 및/또는 머신 판독가능 매체 상의 명령들 및/또는 코드들 중 하나 또는 임의의 조합 또는 이들의 세트로서 상주할 수 있다.
하나 이상의 양상들에서, 설명된 기능들은 하드웨어, 소프트웨어, 펌웨어 또는 이들의 임의의 조합으로 구현될 수 있다. 소프트웨어로 구현되는 경우, 상기 기능들은 컴퓨터 판독가능 매체 상에 하나 이상의 명령들 또는 코드로서 저장되거나 전송될 수 있다. 컴퓨터 판독가능 매체는, 컴퓨터 저장 매체, 및 일 장소에서 다른 장소로 컴퓨터 프로그램의 이전을 용이하게 하기 위한 임의의 매체를 포함하는 통신 매체를 포함한다. 저장 매체는 컴퓨터에 의해 액세스될 수 있는 임의의 가용 매체일 수 있다. 예를 들어, 이러한 컴퓨터 판독가능 매체는 RAM, ROM, EEPROM, CD-ROM 또는 다른 광학 디스크 저장소, 자기 디스크 저장소 또는 다른 자기 저장 디바이스들, 또는 명령들 또는 데이터 구조들의 형태로 요구되는 프로그램 코드를 저장 또는 전달하는데 사용될 수 있고, 컴퓨터에 의해 액세스될 수 있는 임의의 다른 매체를 포함할 수 있지만, 이들로 제한되는 것은 아니다. 또한, 임의의 연결 수단이 컴퓨터 판독가능 매체로 간주될 수 있다. 예를 들어, 소프트웨어가 웹사이트, 서버, 또는 다른 원격 소스로부터 동축 케이블, 광섬유 케이블, 꼬임 쌍선, 디지털 가입자 라인(DSL), 또는 적외선, 라디오, 및 마이크로웨이브와 같은 무선 기술들을 통해 전송되는 경우, 동축 케이블, 광섬유 케이블, 꼬임 쌍선, DSL, 또는 적외선, 라디오, 및 마이크로웨이브와 같은 무선 기술들이 이러한 매체의 정의에 포함될 수 있다. 여기서 사용되는 disk 및 disc은 컴팩트 disc(CD), 레이저 disc, 광 disc, DVD, 플로피 disk, 및 블루-레이 disc를 포함하며, 여기서 disk들은 보통 데이터를 자기적으로 재생하지만, disc들은 보통 레이저를 이용하여 광학적으로 데이터를 재생한다. 상기 조합들 또한 컴퓨터 판독가능 매체의 범위 내에 포함되어야 한다.
전술한 개시는 예시적인 양상들 및/또는 양상들을 설명하지만, 첨부된 청구항들에 의해 정의되는 바와 같이 설명된 양상들 및/또는 양상들의 범주를 벗어나지 않으면서 다양한 변경들 및 변형들이 행해질 수 있음을 유의해야 한다. 또한, 설명된 양상들 및/또는 양상들의 엘리먼트들이 단수로 설명 또는 청구될지라도, 단수에 대한 한정이 명확히 언급되지 않으면 복수가 고려된다. 또한, 달리 언급되지 않으면, 임의의 양상 및/또는 양상의 전부 또는 일부는 임의의 다른 양상 및/또는 양상의 전부 또는 일부와 함께 이용될 수 있다.
부록 A
AND 탐색을 위한 블룸 필터 파라미터들의 유도
이 부록에서는, AND 탐색을 위한 블룸 필터들의 파라미터들을 획득하기 위한 유도들이 제시된다. 일반화의 손실없이, 형태 "k1 and k2" 형태의 2-키워드 문의가 고려된다. 이 키워드들을 소유한 노드들을 n1 및 n2로 표기하며, 여기서 n1 = hash(k1) 및 n2 = hash(k2)라 한다. 또한, 여기서 D1 및 D2는 각각 키워드들 k1 및 k2를 포함하는 문서들의 세트를 표기한다.
블룸 필터들의 존재 시에 총 통신 비용은,
Figure pct00023
(A1)
로 나타낼 수 있다.
여기서, Pc는 블룸 필터에서의 충돌의 확률이다. (1)로부터의 Pc를 이 수식에 대입하면,
Figure pct00024
(A2)
이다.
이 수식으로부터 볼 수 있는 바와 같이, 통신 비용의 총량은 L 및 r의 함수이고, 이 파라미터들의 적절한 선택에 의해 최소화될 수 있다.
Figure pct00025
Figure pct00026
으로 설정하면,
Figure pct00027
(A3)
Figure pct00028
(A4)
이다.
대부분, 노드 n1은 세트 D1에 대한 정보만을 갖고 세트 D2에 대한 정보를 갖지 않는다. 따라서, 이 표현들은 또한 D2를 수반하기 때문에, 상기 2개의 수식들을 이용하여 L 및 r의 최적의 값들을 컴퓨팅하지 못할 수도 있다.
Figure pct00029
이라는 가정 하에서 이 값들을 컴퓨팅하는 것을 제안한다. Ls 및 rs로 표기되는 L 및 r의 준최적 값들은,
Figure pct00030
(A5)
Figure pct00031
(A6)
으로 나타낼 수 있다.
하기 도면은
Figure pct00032
의 상이한 값들에 대한 D2의 사이즈의 함수로서 통신 비용을 도시한다. 도면의 결과들은 50% 중첩 하에 있고, 여기서, 50% 중첩은, 합집합의 사이즈
Figure pct00033
= (50/100) x min{
Figure pct00034
,
Figure pct00035
} 인 포인트로서 정의된다. 이 도면으로부터 2개의 중요한 결론들이 도출될 수 있다. 먼저, 이 도면은
Figure pct00036
Figure pct00037
가 증가함에 따라 통신 비용이 증가함을 나타낸다.
Figure pct00038
Figure pct00039
가 증가함에 따라
Figure pct00040
의 사이즈가 증가하고, 따라서 더 많은 문서 ID들이 사용자에게 리턴되기 때문에, 이 결과는 예상된다. 둘째로, 도면의 결과들은,
Figure pct00041
대신에 준 최적값 Ls가 이용되는 경우 통신 비용의 관점에서 큰 차이가 없는 것을 제시하고, 이것은, 노드 n1이 필터의 사이즈를 컴퓨팅하기 위해 합리적 추정치로서
Figure pct00042
의 값을 이용할 수 있음을 의미한다.
Figure pct00043
부록 B
OR 탐색을 위한 블룸 필터 파라미터들의 유도
이 부록에서는, OR 탐색을 위한 블룸 필터들의 파라미터들을 획득하기 위한 유도들이 제시된다. 일반화의 손실없이, 형태 "k1 or k2" 형태의 2-키워드 문의가 제시된다. 이 키워드들을 소유한 노드들을 n1 및 n2로 표기하며, 여기서 n1 = hash(k1) 및 n2 = hash(k2)라 한다. 또한, 여기서 D1 및 D2는 각각 키워드들 k1 및 k2를 포함하는 문서들의 세트를 표기하기 위해 이용된다.
탐색 알고리즘의 성능을 연구하고 트레이드오프들을 이해하기 위해, 절약들 및 리콜-레이트가 수학적으로 결정된다. 블룸 필터에 의해, 총 통신 비용은,
Figure pct00044
(B1)
로 나타낼 수 있고, 여기서, Pc는 (1)에서와 같이 블룸 필터에서의 충돌의 확률이다. 따라서, 절약의 양, Sb는,
Figure pct00045
(B2)
이다.
블룸 필터들을 이용하는 동안 소요되는 비용은 리콜 레이트 Rb의 관점으로 표현되고, Rb는,
Figure pct00046
(B3)
으로 나타낼 수 있다.
필터의 길이 L 및 해시 함수들의 수 r에 대한 최적값들은, Rb≥Rdes의 제한 하에서 Sb를 최대화하기 위한 목적으로 제한된 최적화 문제를 해결함으로써 획득될 수 있고, 여기서, Rdes는 설계된 리콜-레이트를 표기한다. 비용 함수 Tb = Sb + λ(Rb-Rdes)로 정의하면, L 및 r의 최적값들은,
Figure pct00047
Figure pct00048
으로 설정하면,
Figure pct00049
(B4)
Figure pct00050
(B5)
로 컴퓨팅될 수 있다.
Figure pct00051
의 값은 노드-n1에서 선험적으로 알지 못하기 때문에,
Figure pct00052
및 D1∩D2 =
Figure pct00053
의 가정 하에서 (13) 및 (14)를 구함으로써 획득된다.
이것은,
Figure pct00054
(B6)
Figure pct00055
(B7)
을 제공한다.
하기 도면은
Figure pct00056
Figure pct00057
의 함수로서 통신 비용을 도시한다. 도면의 결과들은 Rdes = 1-(1/2)9의 경우 50%의 중첩 하에 있고, 50% 중첩은 이전과 같이 정의된다. 이 도면은,
Figure pct00058
Figure pct00059
이 작은 경우 절약들이 크고, 어떠한 세트 사이즈들이 큰 경우 심지어 제로 아래로 감소됨을 나타낸다.
Figure pct00060

Claims (27)

  1. 오버레이 네트워크에서 탐색하는 방법으로서,
    분산형 네트워크의 제 1 노드에서 문의(query)를 수신하는 단계 ?상기 문의는 제 1 키워드 및 제 2 키워드를 포함함?;
    상기 제 1 키워드를 포함하는 제 1 수의 문서들의 제 1 세트를 발견하는 단계;
    상기 제 1 세트의 상기 제 1 수의 문서들의 함수로서, 최적의 제 1 블룸 필터 길이 및 대응하는 해시(hash) 함수들의 제 1 수를 컴퓨팅하는 단계; 및
    상기 제 1 세트의 제 1 블룸 필터를, 상기 제 2 키워드를 해시함으로써 식별되는, 상기 분산형 네트워크의 제 2 노드에 전송하는 단계를 포함하고,
    상기 제 1 블룸 필터는 상기 제 1 블룸 필터 길이 및 상기 해시 함수들의 제 1 수를 포함하는,
    오버레이 네트워크에서 탐색하는 방법.
  2. 제 1 항에 있어서,
    상기 문의는 AND 문의를 포함하는, 오버레이 네트워크에서 탐색하는 방법.
  3. 제 1 항에 있어서,
    상기 문의는 OR 문의를 포함하는, 오버레이 네트워크에서 탐색하는 방법.
  4. 제 1 항에 있어서,
    상기 문의는 AND 및 OR 문의의 결합을 포함하는, 오버레이 네트워크에서 탐색하는 방법.
  5. 제 2 항에 있어서,
    상기 제 1 세트인 D1에 대해 상기 제 1 블룸 필터 길이인 Ls를 컴퓨팅하는 단계는, 하기의 수식
    Figure pct00061

    에 따라 컴퓨팅하는 단계를 더 포함하고,
    상기 제 1 세트인 D1에 대해 상기 해시 함수들의 제 1 수인 rs를 컴퓨팅하는 단계는, 하기의 수식
    Figure pct00062

    에 따라 컴퓨팅하는 단계를 더 포함하는, 오버레이 네트워크에서 탐색하는 방법.
  6. 제 3 항에 있어서,
    상기 제 1 세트인 D1에 대해 상기 제 1 블룸 필터 길이인 Ls를 컴퓨팅하는 단계는, 하기의 수식
    Figure pct00063

    에 따라 컴퓨팅하는 단계를 더 포함하고,
    상기 제 1 세트인 D1에 대해 상기 해시 함수들의 제 1 수인 rs를 컴퓨팅하는 단계는, 하기의 수식
    Figure pct00064

    에 따라 컴퓨팅하는 단계를 더 포함하는, 오버레이 네트워크에서 탐색하는 방법.
  7. 제 1 항에 있어서,
    통신 비용을 추가로 감소시키기 위해, 각각의 세트의 사이즈
    Figure pct00065
    에 대한 이전의 정보(knowledge)를 이용하는 단계를 더 포함하는, 오버레이 네트워크에서 탐색하는 방법.
  8. 제 7 항에 있어서,
    AND 문의를 최적으로 수행하기 위해, 상기 문의를, 노드
    Figure pct00066
    에 전송하고, 다음으로,
    Figure pct00067
    에 대해 두번째로 작은 값을 갖는 다음 노드에 전송하는 단계를 더 포함하는, 오버레이 네트워크에서 탐색하는 방법.
  9. 제 7 항에 있어서,
    OR 문의를 최적으로 수행하기 위해, 상기 문의를, 노드
    Figure pct00068
    에 전송하고, 다음으로,
    Figure pct00069
    에 대해 두번째로 큰 값을 갖는 다음 노드에 전송하는 단계를 더 포함하는, 오버레이 네트워크에서 탐색하는 방법.
  10. 제 7 항에 있어서,
    문의들을 어디로 포워딩할지를 결정하기 위해, 세트들의 사이즈들
    Figure pct00070
    의 실제 사이즈들을 결정하거나 근사화하도록 캐싱(caching) 기술들을 이용하는 단계를 더 포함하는, 오버레이 네트워크에서 탐색하는 방법.
  11. 제 1 항에 있어서,
    문의들을 프로세싱하기 위해 상기 제 1 블룸 필터를 이용하거나 이용하지 않는 조건을 결정하는 단계를 더 포함하고,
    상기 조건은, 각각의 세트의 사이즈
    Figure pct00071
    이 선험적으로(apriori) 알려진 경우를 포함하는, 오버레이 네트워크에서 탐색하는 방법.
  12. 제 11 항에 있어서,
    오직,
    Figure pct00072

    인 경우에만, OR 문의에 대해 추가로, 상기 제 1 블룸 필터에 대한 컴퓨팅을 수행하고 상기 제 1 블룸 필터를 이용하는, 오버레이 네트워크에서 탐색하는 방법.
  13. 네트워크에서 서비스들을 공개 또는 발견하도록 구성되는 적어도 하나의 프로세서로서,
    분산형 네트워크의 제 1 노드에서 문의를 수신하기 위한 제 1 모듈 ?상기 문의는 제 1 키워드 및 제 2 키워드를 포함함?;
    상기 제 1 키워드를 포함하는 제 1 수의 문서들의 제 1 세트를 발견하기 위한 제 2 모듈;
    상기 제 1 세트의 상기 제 1 수의 문서들의 함수로서, 최적의 제 1 블룸 필터 길이 및 대응하는 해시 함수들의 제 1 수를 컴퓨팅하기 위한 제 3 모듈; 및
    상기 제 1 세트의 제 1 블룸 필터를, 상기 제 2 키워드를 해시함으로써 식별되는, 상기 분산형 네트워크의 제 2 노드에 전송하기 위한 제 4 모듈을 포함하고,
    상기 제 1 블룸 필터는 상기 제 1 블룸 필터 길이 및 상기 해시 함수들의 제 1 수를 포함하는,
    적어도 하나의 프로세서.
  14. 컴퓨터 판독가능 매체를 포함하는 컴퓨터 프로그램 물건으로서,
    상기 컴퓨터 판독가능 매체는,
    컴퓨터로 하여금 분산형 네트워크의 제 1 노드에서 문의를 수신하게 하기 위한 코드들의 제 1 세트 ?상기 문의는 제 1 키워드 및 제 2 키워드를 포함함?;
    상기 컴퓨터로 하여금 상기 제 1 키워드를 포함하는 제 1 수의 문서들의 제 1 세트를 발견하게 하기 위한 코드들의 제 2 세트;
    상기 컴퓨터로 하여금 상기 제 1 세트의 상기 제 1 수의 문서들의 함수로서, 최적의 제 1 블룸 필터 길이 및 대응하는 해시 함수들의 제 1 수를 컴퓨팅하게 하기 위한 코드들의 제 3 세트; 및
    상기 컴퓨터로 하여금 상기 제 1 세트의 제 1 블룸 필터를, 상기 제 2 키워드를 해시함으로써 식별되는, 상기 분산형 네트워크의 제 2 노드에 전송하게 하기 위한 코드들의 제 4 세트를 포함하고,
    상기 제 1 블룸 필터는 상기 제 1 블룸 필터 길이 및 상기 해시 함수들의 제 1 수를 포함하는,
    컴퓨터 프로그램 물건.
  15. 분산형 네트워크의 제 1 노드에서 문의를 수신하기 위한 수단 ?상기 문의는 제 1 키워드 및 제 2 키워드를 포함함?;
    상기 제 1 키워드를 포함하는 제 1 수의 문서들의 제 1 세트를 발견하기 위한 수단;
    상기 제 1 세트의 상기 제 1 수의 문서들의 함수로서, 최적의 제 1 블룸 필터 길이 및 대응하는 해시 함수들의 제 1 수를 컴퓨팅하기 위한 수단; 및
    상기 제 1 세트의 제 1 블룸 필터를, 상기 제 2 키워드를 해시함으로써 식별되는, 상기 분산형 네트워크의 제 2 노드에 전송하기 위한 수단을 포함하고,
    상기 제 1 블룸 필터는 상기 제 1 블룸 필터 길이 및 상기 해시 함수들의 제 1 수를 포함하는,
    장치.
  16. 분산형 네트워크에서 다중 키워드 탐색들을 수행하기 위한 장치로서,
    제 1 키워드 및 제 2 키워드를 포함하는 문의를 수신하도록 구성되는 수신기;
    상기 제 1 키워드를 포함하는 제 1 수의 문서들의 제 1 세트를 발견하도록 구성되는 키워드 세트 결정 컴포넌트; 및
    상기 제 1 세트에서 상기 제 1 수의 문서들의 함수로서, 최적의 제 1 블룸 필터 길이 및 대응하는 해시 함수들의 제 1 수를 컴퓨팅하고, 상기 제 1 세트의 제 1 블룸 필터를, 상기 제 2 키워드를 해시함으로써 식별되는, 상기 분산형 네트워크의 제 2 노드에 전송하도록 구성되는 블룸 필터 계산 컴포넌트를 포함하고,
    상기 제 1 블룸 필터는 상기 제 1 블룸 필터 길이 및 상기 해시 함수들의 제 1 수를 포함하는,
    다중 키워드 탐색들을 수행하기 위한 장치.
  17. 제 16 항에 있어서,
    상기 문의는 AND 문의인, 다중 키워드 탐색들을 수행하기 위한 장치.
  18. 제 16 항에 있어서,
    상기 문의는 OR 문의인, 다중 키워드 탐색들을 수행하기 위한 장치.
  19. 제 16 항에 있어서,
    상기 문의는 AND 및 OR 문의의 결합을 포함하는, 다중 키워드 탐색들을 수행하기 위한 장치.
  20. 제 17 항에 있어서,
    상기 제 1 세트인 D1에 대해 상기 제 1 블룸 필터 길이인 Ls를 컴퓨팅하는 것은, 하기의 수식
    Figure pct00073

    에 따라 컴퓨팅하는 것을 더 포함하고,
    상기 제 1 세트인 D1에 대해 상기 해시 함수들의 제 1 수인 rs를 컴퓨팅하는 것은, 하기의 수식
    Figure pct00074

    에 따라 컴퓨팅하는 것을 더 포함하는, 다중 키워드 탐색들을 수행하기 위한 장치.
  21. 제 18 항에 있어서,
    상기 제 1 세트인 D1에 대해 상기 제 1 블룸 필터 길이인 Ls를 컴퓨팅하는 것은, 하기의 수식
    Figure pct00075

    에 따라 컴퓨팅하는 것을 더 포함하고,
    상기 제 1 세트인 D1에 대해 상기 해시 함수들의 제 1 수인 rs를 컴퓨팅하는 것은, 하기의 수식
    Figure pct00076

    에 따라 컴퓨팅하는 것을 더 포함하는, 다중 키워드 탐색들을 수행하기 위한 장치.
  22. 제 16 항에 있어서,
    상기 블룸 필터 계산 컴포넌트는, 통신 비용을 추가로 감소시키기 위해, 각각의 세트의 사이즈
    Figure pct00077
    에 대한 이전의 정보를 이용하도록 추가로 구성되는, 다중 키워드 탐색들을 수행하기 위한 장치.
  23. 제 22 항에 있어서,
    상기 블룸 필터 계산 컴포넌트는, AND 문의를 최적으로 수행하기 위해, 상기 문의를, 노드
    Figure pct00078
    에 전송하고, 다음으로,
    Figure pct00079
    에 대해 두번째로 작은 값을 갖는 다음 노드에 전송하도록 추가로 구성되는, 다중 키워드 탐색들을 수행하기 위한 장치.
  24. 제 22 항에 있어서,
    상기 블룸 필터 계산 컴포넌트는, OR 문의를 최적으로 수행하기 위해, 상기 문의를, 노드
    Figure pct00080
    에 전송하고, 다음으로,
    Figure pct00081
    에 대해 두번째로 큰 값을 갖는 다음 노드에 전송하도록 추가로 구성되는, 다중 키워드 탐색들을 수행하기 위한 장치.
  25. 제 22 항에 있어서,
    상기 블룸 필터 계산 컴포넌트는, 문의들을 어디로 포워딩할지를 결정하기 위해, 세트들의 사이즈들
    Figure pct00082
    의 실제 사이즈들을 결정하거나 근사화하도록 캐싱 기술들을 이용하도록 추가로 구성되는, 다중 키워드 탐색들을 수행하기 위한 장치.
  26. 제 16 항에 있어서,
    상기 블룸 필터 계산 컴포넌트는, 문의들을 프로세싱하기 위해 상기 제 1 블룸 필터를 이용하거나 이용하지 않는 조건을 결정하도록 추가로 구성되고,
    상기 조건은, 각각의 세트의 사이즈
    Figure pct00083
    이 선험적으로 알려진 경우를 포함하는, 다중 키워드 탐색들을 수행하기 위한 장치.
  27. 제 26 항에 있어서,
    상기 블룸 필터 계산 컴포넌트는,
    오직,
    Figure pct00084

    인 경우에만, OR 문의에 대해, 상기 제 1 블룸 필터에 대한 컴퓨팅을 수행하고 상기 제 1 블룸 필터를 이용하도록 추가로 구성되는, 다중 키워드 탐색들을 수행하기 위한 장치.
KR1020127003900A 2009-07-14 2010-07-14 분산형 네트워크에서 다중 키워드 문의들을 효율적으로 프로세싱하기 위한 방법 및 장치 KR20120045017A (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US22550509P 2009-07-14 2009-07-14
US61/225,505 2009-07-14
US12/835,710 US8996568B2 (en) 2009-07-14 2010-07-13 Methods and apparatus for efficiently processing multiple keyword queries on a distributed network
US12/835,710 2010-07-13

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020167014220A Division KR20160072843A (ko) 2009-07-14 2010-07-14 분산형 네트워크에서 다중 키워드 문의들을 효율적으로 프로세싱하기 위한 방법 및 장치

Publications (1)

Publication Number Publication Date
KR20120045017A true KR20120045017A (ko) 2012-05-08

Family

ID=43450180

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020167014220A KR20160072843A (ko) 2009-07-14 2010-07-14 분산형 네트워크에서 다중 키워드 문의들을 효율적으로 프로세싱하기 위한 방법 및 장치
KR1020127003900A KR20120045017A (ko) 2009-07-14 2010-07-14 분산형 네트워크에서 다중 키워드 문의들을 효율적으로 프로세싱하기 위한 방법 및 장치

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020167014220A KR20160072843A (ko) 2009-07-14 2010-07-14 분산형 네트워크에서 다중 키워드 문의들을 효율적으로 프로세싱하기 위한 방법 및 장치

Country Status (7)

Country Link
US (1) US8996568B2 (ko)
EP (1) EP2454656A4 (ko)
JP (1) JP5497172B2 (ko)
KR (2) KR20160072843A (ko)
CN (1) CN102473084B (ko)
TW (1) TW201112025A (ko)
WO (1) WO2011008889A2 (ko)

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5359941B2 (ja) * 2010-03-10 2013-12-04 富士通株式会社 データ管理装置及びデータ管理方法
CN103299295A (zh) * 2010-12-20 2013-09-11 瑞典爱立信有限公司 对等网络中的搜索
TW201312980A (zh) * 2011-05-03 2013-03-16 Interdigital Patent Holdings 在網際網路中內容識別、檢索及路由
US8782082B1 (en) 2011-11-07 2014-07-15 Trend Micro Incorporated Methods and apparatus for multiple-keyword matching
EP2629212A1 (en) * 2012-02-14 2013-08-21 Alcatel Lucent Method for storing and searching tagged content items in a distributed system
WO2013144423A1 (en) * 2012-03-30 2013-10-03 Nokia Corporation Identity based ticketing
US11403317B2 (en) * 2012-07-26 2022-08-02 Mongodb, Inc. Aggregation framework system architecture and method
US9208254B2 (en) * 2012-12-10 2015-12-08 Microsoft Technology Licensing, Llc Query and index over documents
TWI480743B (zh) * 2012-12-11 2015-04-11 Inventec Corp 將目標資料拆分至伺服器與客戶端翻譯之系統及其方法
US9251133B2 (en) * 2012-12-12 2016-02-02 International Business Machines Corporation Approximate named-entity extraction
WO2014186745A1 (en) * 2013-05-16 2014-11-20 University Of Utah Research Foundation Generating and implementing local search engines over large databases
CN103440249A (zh) * 2013-07-23 2013-12-11 南京烽火星空通信发展有限公司 一种非结构化数据快速检索的系统及方法
US9218169B2 (en) * 2013-11-19 2015-12-22 Google Inc. Callpath finder
CN104717342B (zh) * 2013-12-11 2018-11-09 阿里巴巴集团控股有限公司 一种基于短信息唤醒客户端应用的方法及装置
US9467842B2 (en) * 2013-12-12 2016-10-11 Alcatel Lucent Discovery of objects in wireless environments
US20150220625A1 (en) * 2014-02-03 2015-08-06 Interdigital Patent Holdings, Inc. Methods and apparatus for conveying surveillance targets using bloom filters
US11265385B2 (en) 2014-06-11 2022-03-01 Apple Inc. Dynamic bloom filter operation for service discovery
CN105389314B (zh) * 2014-09-04 2019-07-23 中芯国际集成电路制造(上海)有限公司 一种日志文件查询系统及查询方法
GB2532988B (en) * 2014-12-04 2021-03-03 Arm Ip Ltd Method and device for scanning for data processing devices
US20160371339A1 (en) * 2015-06-17 2016-12-22 Qualcomm Incorporated Executing a faceted search within a semi-structured database using a bloom filter
US10277686B2 (en) * 2015-07-29 2019-04-30 Cisco Technology, Inc. Service discovery optimization in a network based on bloom filter
US10248701B2 (en) 2015-09-18 2019-04-02 International Business Machines Corporation Efficient distributed query execution
US10558702B2 (en) * 2016-04-06 2020-02-11 Baidu Usa Llc Unified storage system for online image searching and offline image analytics
US10585915B2 (en) * 2017-10-25 2020-03-10 International Business Machines Corporation Database sharding
CN108271234B (zh) * 2017-11-28 2022-03-11 中国电子科技集团公司电子科学研究院 移动自组织网络的服务发现方法及服务器
US11610107B2 (en) 2018-07-06 2023-03-21 Global Elmeast Inc. Methodology to automatically incorporate feedback to enable self learning in neural learning artifactories
CN110176984B (zh) * 2019-05-28 2020-11-03 创意信息技术股份有限公司 一种用于安全字符串模式匹配的数据结构构造及匹配方法
EP3809275B1 (en) * 2019-10-16 2022-11-09 Fetch.ai Limited System and method to improve system reliability via consistent recordal of data entities
DE102022117663B3 (de) * 2022-07-14 2024-01-25 Deutsches Zentrum für Luft- und Raumfahrt e.V. Verfahren zur Übertragung einer IBLT-Datenstruktur und Benutzerendgerät

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61223941A (ja) * 1985-03-29 1986-10-04 Kagaku Joho Kyokai 化学構造の検索方法
US4977499A (en) * 1988-04-08 1990-12-11 International Business Machines Corp. Method and apparatus for commanding operations on a computer network
US5265065A (en) * 1991-10-08 1993-11-23 West Publishing Company Method and apparatus for information retrieval from a database by replacing domain specific stemmed phases in a natural language to create a search query
US6487606B1 (en) * 1998-11-18 2002-11-26 Nortel Networks Limited System and method for delivering messages through a totem communications system
US7054867B2 (en) * 2001-09-18 2006-05-30 Skyris Networks, Inc. Systems, methods and programming for routing and indexing globally addressable objects and associated business models
US7603464B2 (en) 2003-06-04 2009-10-13 Sony Computer Entertainment Inc. Method and system for identifying available resources in a peer-to-peer network
WO2004110018A1 (en) 2003-06-04 2004-12-16 Sony Computer Entertainment, Inc. Content distribution overlay network for a peer to peer network
US7409406B2 (en) 2003-09-08 2008-08-05 International Business Machines Corporation Uniform search system and method for selectively sharing distributed access-controlled documents
US20050108368A1 (en) * 2003-10-30 2005-05-19 Aditya Mohan Method and apparatus for representing data available in a peer-to-peer network using bloom-filters
GB0409582D0 (en) * 2004-04-29 2004-06-02 British Telecomm Event notification network
US20080195597A1 (en) 2007-02-08 2008-08-14 Samsung Electronics Co., Ltd. Searching in peer-to-peer networks
JP4806362B2 (ja) * 2007-02-14 2011-11-02 富士通株式会社 並列処理制御プログラム、並列処理制御システムおよび並列処理制御方法
JP4978288B2 (ja) * 2007-04-19 2012-07-18 沖電気工業株式会社 無線ネットワークシステム、情報提供装置及び無線端末
US7930547B2 (en) 2007-06-15 2011-04-19 Alcatel-Lucent Usa Inc. High accuracy bloom filter using partitioned hashing
CN101087305B (zh) 2007-07-09 2010-09-08 中国人民解放军国防科学技术大学 大规模非结构化p2p网络中的资源搜索方法
US9301121B2 (en) * 2007-07-11 2016-03-29 Qualcomm Incorporated Peer to peer multiple identifiers
US8103718B2 (en) * 2008-07-31 2012-01-24 Microsoft Corporation Content discovery and transfer between mobile communications nodes
CN102246172A (zh) * 2008-10-13 2011-11-16 法卢资产有限公司 用于电子内容的分布式索引搜索的系统及方法
US8943081B2 (en) * 2008-11-17 2015-01-27 At&T Intellectual Property I, L.P. User-powered recommendation system

Also Published As

Publication number Publication date
CN102473084B (zh) 2016-03-09
KR20160072843A (ko) 2016-06-23
WO2011008889A2 (en) 2011-01-20
JP5497172B2 (ja) 2014-05-21
JP2012533797A (ja) 2012-12-27
CN102473084A (zh) 2012-05-23
US20120011150A1 (en) 2012-01-12
WO2011008889A3 (en) 2011-04-21
EP2454656A4 (en) 2015-02-25
US8996568B2 (en) 2015-03-31
EP2454656A2 (en) 2012-05-23
TW201112025A (en) 2011-04-01

Similar Documents

Publication Publication Date Title
KR20120045017A (ko) 분산형 네트워크에서 다중 키워드 문의들을 효율적으로 프로세싱하기 위한 방법 및 장치
US20170329857A1 (en) Personalized Search Results
US9398110B2 (en) Method and apparatus for providing standard information processing pipelines
US9553919B2 (en) Techniques for sharing application states
US20170295263A1 (en) System and method for applying an efficient data compression scheme to url parameters
US8166203B1 (en) Server selection based upon time and query dependent hashing
US20120117067A1 (en) Method and apparatus for providing a range ordered tree structure
JP5841299B2 (ja) 情報をプッシュする方法および情報をプッシュするための装置
US20170308620A1 (en) Making graph pattern queries bounded in big graphs
WO2012028103A1 (zh) 访问微博的方法和系统及微博网站图片发送方法和系统
WO2016173185A1 (zh) 信息推送方法和装置
US20150012533A1 (en) Method and client device for accessing webpage
CN107636655B (zh) 实时提供数据即服务(DaaS)的系统和方法
CN103905516A (zh) 分享数据的方法及相应服务器和终端
JP2011034323A (ja) 情報端末装置、情報検索方法、および情報検索プログラム
US7647350B2 (en) Database access server with compression translator
Van Herwegen et al. Substring filtering for low-cost Linked Data interfaces
CA2897480A1 (en) Systems and methods for semantic url handling
JP2017500632A (ja) 補助情報へのアクセスを提供するための方法およびシステム
US8738801B2 (en) Methods and apparatus for updating index information while adding and updating documents in a distributed network
JP2010224824A (ja) 情報処理装置
US10467269B2 (en) Accessing category-specific search servers
US20100274823A1 (en) Method, apparatus and computer program product for providing an adaptive context model framework
WO2018144517A1 (en) Semantic query processing with information asymmetry
JP5636700B2 (ja) 関連語辞書作成装置、関連語辞書作成方法、プログラム、及び、文書検索システム

Legal Events

Date Code Title Description
A201 Request for examination
AMND Amendment
E902 Notification of reason for refusal
AMND Amendment
E90F Notification of reason for final refusal
E601 Decision to refuse application
AMND Amendment
E902 Notification of reason for refusal
AMND Amendment