KR20060048940A - 효율적으로 페이지 순위를 계산하는 방법 및 시스템 - Google Patents
효율적으로 페이지 순위를 계산하는 방법 및 시스템 Download PDFInfo
- Publication number
- KR20060048940A KR20060048940A KR1020050069559A KR20050069559A KR20060048940A KR 20060048940 A KR20060048940 A KR 20060048940A KR 1020050069559 A KR1020050069559 A KR 1020050069559A KR 20050069559 A KR20050069559 A KR 20050069559A KR 20060048940 A KR20060048940 A KR 20060048940A
- Authority
- KR
- South Korea
- Prior art keywords
- matrix
- objects
- vector
- page
- computer
- Prior art date
Links
- 239000011159 matrix material Substances 0.000 title claims abstract description 95
- 238000000034 method Methods 0.000 claims abstract description 73
- 239000013598 vector Substances 0.000 claims description 36
- 230000006870 function Effects 0.000 claims description 5
- 238000002372 labelling Methods 0.000 claims description 3
- 238000004891 communication Methods 0.000 description 13
- 238000012545 processing Methods 0.000 description 9
- 230000003287 optical effect Effects 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 230000002093 peripheral effect Effects 0.000 description 4
- 238000005295 random walk Methods 0.000 description 4
- 230000007704 transition Effects 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 230000006855 networking Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 230000005055 memory storage Effects 0.000 description 2
- 238000007781 pre-processing Methods 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- CDFKCKUONRRKJD-UHFFFAOYSA-N 1-(3-chlorophenoxy)-3-[2-[[3-(3-chlorophenoxy)-2-hydroxypropyl]amino]ethylamino]propan-2-ol;methanesulfonic acid Chemical compound CS(O)(=O)=O.CS(O)(=O)=O.C=1C=CC(Cl)=CC=1OCC(O)CNCCNCC(O)COC1=CC=CC(Cl)=C1 CDFKCKUONRRKJD-UHFFFAOYSA-N 0.000 description 1
- 238000012935 Averaging Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000004883 computer application Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000007429 general method Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000010606 normalization Methods 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000007723 transport mechanism Effects 0.000 description 1
Images
Classifications
-
- 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
- G06Q50/00—Information and communication technology [ICT] specially adapted for implementation of business processes of specific business sectors, e.g. utilities or tourism
- G06Q50/10—Services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/951—Indexing; Web crawling techniques
-
- 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/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/289—Object oriented databases
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/99933—Query processing, i.e. searching
- Y10S707/99935—Query augmenting and refining, e.g. inexact access
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/99937—Sorting
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99941—Database schema or data structure
- Y10S707/99943—Generating database or data structure, e.g. via user interface
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Tourism & Hospitality (AREA)
- Economics (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Human Resources & Organizations (AREA)
- Marketing (AREA)
- Primary Health Care (AREA)
- Strategic Management (AREA)
- General Business, Economics & Management (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Information Transfer Between Computers (AREA)
- Document Processing Apparatus (AREA)
Abstract
효율적으로 페이지 순위를 계산하는 방법 및 시스템이 설명된다. 웹 페이지들의 상호연결성을 설명하는 상호연결성 행렬을 이용하여, 새 행렬이 계산된다. 각 웹 페이지의 이웃하는 웹 페이지들과 관련된 값의 평균을 계산하는 데에 새 행렬이 사용된다. 이 새 행렬의 제2 고유벡터가 계산되고, 이 고유벡터에 따라 웹 페이지에 대한 인덱스들이 재라벨화된다(relabel). 상호연결성 정보를 저장하는 데이터 구조는 또한 이 고유벡터에 따라 물리적으로 정렬되는 것이 바람직하다. 웹 페이지 순위 계산에 사용된 행렬을 재편성함으로써, 캐싱이 좀 더 효율적으로 수행되고, 그 결과 페이지 순위화 기술이 더 빨라진다. 효율적으로 자원 분배를 할당하는 방법이 또한 설명된다.
페이지 순위화, 상호연결성 행렬, 고유벡터
Description
도 1은 본 발명의 실시예에 따라 웹 페이지 순위화 및 검색을 수행하는 컴퓨팅 장치의 예시적인 아키텍처를 도시하는 간략도.
도 2는 본 발명의 실시예에 따라 웹 페이지 순위화 및 검색을 수행하는 인터넷에 접속된 컴퓨팅 장치의 구성을 도시하는 도면.
도 3은 본 발명의 실시예에 따라 웹 페이지 집합을 도시하는 예제.
도 4a 및 4b는 본 발명의 실시예에 따라 웹 페이지의 상호접속에 대응하는 노드 및 선(edge)의 그래프를 도시하는 도면.
도 5는 본 발명의 실시예에 따라 웹 페이지 집합사이에서 검색을 수행하는 방법을 도시하는 흐름도.
도 6은 본 발명의 실시예에 따라 웹 페이지 링크 배열의 재라벨화 및 정렬을 도시하는 개략도.
도 7은 본 발명의 실시예에 따라 웹 페이지의 재순서화를 계산하는 일반적인 방법을 도시하는 흐름도.
도 8은 본 발명의 실시예에 따라 이웃하는 웹 페이지의 영향을 나타내는 행렬을 계산하는 방법을 도시하는 흐름도.
도 9는 본 발명에 따라, 제2의 고유벡터(eigenvector)를 계산하는 방법을 도시하는 흐름도.
<도면의 주요부분에 대한 부호의 설명>
202 : 인터넷
208 : 웹 브라우저
220 : 검색 엔진
228 : 페이지 순위화 엔진
본 발명은 일반적으로 인터넷 검색분야에 관한 것으로, 더욱 구체적으로는 행렬 계산을 통한 웹 페이지 순위화(ranking)에 관한 것이다.
인터넷은 현재 하이퍼링크를 통해 상호연결된 막대한 수의 웹 페이지를 포함한다. 인터넷의 사용자들은 통상적으로 웹 브라우징 애플리케이션("브라우저")을 사용하여 하이퍼링크를 선택하고 클릭함으로써, 또는 브라우저가 특정 웹 페이지를 바로 액세스할 수 있도록 하는 "URL(Uniform Resource Locator)"을 수작업으로 입력함으로써 이 페이지들을 탐색한다. 그러나 종종 사용자들은 특정 정보 항목을 포함하는 페이지에 대한 인터넷 검색을 원한다. 인터넷의 크기 때문에, 사용자가 관련 페이지에 대해 인터넷 검색을 수작업으로 부라우징하는 것은 비실용적이다. 대신, 사용자는 통상적으로, 인터넷 검색을 위해 개발된 컴퓨터 애플리케이션인 검 색 엔진을 호출한다. 검색 엔진은 통상적으로 서버 컴퓨팅 장치에 상주하고 클라이언트 사용자로부터의 질의를 수용한다. 검색 엔진은 일반적으로 웹 페이지 인덱스와 관련되어 있고, 사용자 질의에 응하여 질의를 충족시키는 페이지 목록을 리턴한다.
일부 최신 검색 엔진은 사용자에게 더 적절한 결과를 제공하기 위해 웹 페이지를 순위화한다. 많은 검색 엔진은 행렬을 통해 웹 페이지의 상호연결(interconnection)을 나타내고, 페이지 순위를 찾는 것은 행렬의 주요 고유벡터를 찾는 것과 동일하다. 이러한 검색 엔진은 Page등에 의해, 1998년 1월, Stanford Digital Libraries Working Paper에 제목이 "The PageRank citation ranking:Bringing order to the web"인 논문에 설명되어 있고, 그것의 임의의 부분을 제외하지 않고 그 전부를 참조함으로써 본 명세서에 포함된다. 일반적으로, 그 페이지에 대해 업데이트된 순위를 획득하기 위해, 반복함으로써 웹 페이지의 순위를 얻을 수 있고, 그것을 상호접속 행렬 전체에 널리 알린다. 그 결과, 모든 페이지에 대한 순위가 고정된 값으로 수렴하고, 이것이 주요 고유벡터의 엔트리이다. 이것은 마르코프 연쇄(Markov chain)의 고정 분포(stationary distribution)를 계산하는 것과 동등하다. 행렬의 크기 때문에 고유벡터 따라서 페이지 순위를 계산하는 것은 기존 시스템에 계산적으로 강력한 태스크이고, 고유벡터로의 모든 페이지 수렴에 대한 값에 앞서 행렬 조작의 몇몇 반복을 필요로 한다. 페이지 순위를 더 효율적으로 계산하기 위해, 연구원들은 페이지 순위를 더 빨리 계산하고 근사하는 방법을 찾기 위해 상호연결 행렬의 특정 수학 속성을 개발하는 것을 시도해오고 있다.
페이지 순위를 계산하는 것은 몇몇 이유로 인해 계산적으로 강력한 태스크일 수 있다. 한 가지 이유는 단지 막대한 수의 웹 페이지를 갖는 정보 양의 규모 때문이고, 빠른 프로세서상에서라도 그리고 모든 데이터가 프로세서에 즉시 사용가능하다 할지라도 필요한 계산을 수행하는 데에는 상당한 양의 시간이 필요할 수 있기 때문이다. 그러나, 또 다른 이유는 일반적으로 모든 데이터가 프로세서에 즉시 사용가능하지 않기 때문이고, RAM과 같은 저장 장치 또는 하드 드라이브와 같은 제2의 저장 장치로부터 데이터를 검색해야 하기 때문이다. RAM을 액세스하는 데에는 통상적으로 액세스당 약 100 나노초(nanosecond)가 소요되고, 하드 드라이브를 액세스하는 데에는 통상적으로 액세스당 5 내지 10 밀리초가 소요된다. 이것은 그렇지 않으면 빠를 수 있는 프로세서에 대해 장애(bottleneck)로 작용한다 - 1초당 1조 개의 연산을 수행할 수 있는 프로세서가 초당 약 1000만 개의 엔트리의 비율로 또는 그 용량의 약 1%로 데이터를 판독하도록 제한된다.
또한, 기존의 페이지 순위화 기술에 의해 수행되는 많은 행렬 연산은 웹 페이지에 대해 임의의 인덱스 라벨을 이용한다. 그 결과, 대응하는 상호연결성 행렬의 행(또는 열)들간에는 아무런 관계가 없다. 예를 들어, 페이지 #1이 페이지 #226, 페이지 #4,250,221, 페이지 #1,000,000,152로의 링크를 포함하는 경우, 상호연결성 행렬의 대응 행 #1은 열에서 #226, #4,250,221, #1,000,000,152 엔트리를 가질 것이다. 이들 페이지를 검색하기 위해, 어쩌면 가장 먼 메모리 영역으로부터 세 번의 액세스가 행해져야 한다.
연구원들은 또한 캐싱 시스템을 연구해왔다. 일반적으로, "캐시(cache)"는 빠른 메모리의 작은 영역으로, 이것은 더 느리고, 덜 비싼 메모리로부터 검색된 데이터 또는 명령어를 일시적으로 보유한다. 자주 사용되는 데이터 또는 명령어를 캐시에 일시적으로 저장함으로써, 프로세서는 더 느린 메모리로부터 이들 데이터 또는 명령어를 검색할 필요가 없다. 따라서, 캐시를 효율적으로 사용하면 컴퓨팅 장치에서 수행되는 많은 연산들의 속도를 증가시킬 수 있다.
페이지 순위를 더 효율적으로 계산하는 방법 및 시스템이 제공된다. 웹 페이지의 상호연결을 설명하는 상호연결성 행렬을 사용하여 새 행렬이 계산된다. 각 웹 페이지의 이웃하는 웹 페이지와 관련된 값의 평균을 계산하는 데에 새 행렬이 사용된다. 이 새 행렬의 제2 고유벡터가 계산되고, 이 고유벡터에 따라 웹 페이지에 대한 인덱스가 재라벨화된다. 상호연결성 정보를 저장하는 데이터 구조가 이 고유벡터에 따라 또한 물리적으로 정렬되는 것이 바람직하다. 웹 페이지 순위 계산에 사용된 행렬을 재편성함으로써, 캐싱이 좀 더 효율적으로 수행되고, 그 결과 페이지 순위화 기술이 더 빨라진다.
한 양상에서, 객체 집합 내의 객체를 순위화하는 방법이 제공되고, 이 집합 내의 하나 이상의 객체는 집합 내의 다른 객체로의 링크를 지니고 있으며, 이 방법은, 링크에 관해 집합 내의 다른 객체로의 근접성에 따라 객체를 순서화하는 단계, 및 객체의 순서화에 따라 메모리 내의 객체들간의 링크를 저장하는 단계를 포함한다.
다른 양상에서, 객체 집합 내의 객체들의 순위화를 용이하게 하는 컴퓨터 실행가능 명령어를 포함하는 컴퓨터 판독가능 매체가 제공되고, 집합 내의 하나 이상의 객체들은 집합 내의 다른 객체로의 링크를 지니고, 이 컴퓨터 실행가능 명령어는, 링크에 관해 집합 내의 다른 객체로의 근접성에 따라 객체를 순서화하는 단계, 및 객체의 순서화에 따라 메모리 내의 객체들간의 링크를 저장하는 단계를 포함한다.
또 다른 양상에서, 상호연결된 객체 집합으로부터 객체를 순서화하는 방법이 제공되고, 객체의 상호연결이 제1 행렬에 의해 표현되고, 이 방법은, 제1 행렬에 대해 제2 행렬을 계산하는 단계, 제2 행렬의 제2 고유벡터의 근사치를 구하는 단계, 및 제2 고유벡터에 대한 근사값에 대해 객체를 순서화하는 단계를 포함한다.
또 다른 양상에서, 상호연결된 객체의 집합 내의 객체들의 순서화를 용이하게 하는 컴퓨터 실행가능 명령어를 포함하는 컴퓨터 판독가능 매체가 제공되고, 객체의 상호연결은 제1 행렬에 의해 표현되고, 이 컴퓨터 실행가능 명령어는, 제1 행렬에 대해 제2 행렬을 계산하는 단계, 제2 행렬의 제2 고유벡터의 근사치를 구하는 단계, 및 제2 고유벡터에 대한 근사값에 대해 객체를 순서화하는 단계를 수행한다.
또 다른 양상에서, 상호연결된 객체의 집합 내의 객체들의 순서화를 용이하게 하는 컴퓨터 실행가능 명령어를 포함하는 컴퓨터 판독가능 매체가 제공되고, 객체의 제1 순서화에 따라 상호연결의 설명이 메모리에 저장되고, 이 컴퓨터 실행가능 명령어는 상호연결을 통해 다른 객체로의 근접성에 상관하여 객체를 재순서화(re-ordering)하는 단계를 수행한다.
첨부되는 청구항은 특히 본 발명의 특징을 설명하고, 본 발명 및 그 이점은 첨부된 도면과 함께 이하의 상세한 설명으로부터 더 잘 이해될 것이다.
바람직한 실시예에 관해 효율적으로 페이지 순위를 계산하는 방법 및 시스템이 설명될 것이다; 그러나, 본 발명의 방법 및 시스템은 웹 페이지의 페이지 순위를 계산하는 것에만 제한되지 않는다. 또한, 당업자들은 본 명세서에 설명된 방법 및 시스템은 단지 예시적인 것이고, 본 발명의 취지 및 범위를 벗어나지 않고 그 변형이 있을 수 있다는 것을 즉시 이해할 것이다.
본 발명은 이하의 상세한 설명 및 이 설명이 첨부된 도면과 함께 읽혀질 때 더 완벽하게 이해될 것이다. 이 설명에서, 유사한 참조번호는 본 발명의 각종 도면내에서 유사한 구성요소를 참조한다. 본 발명은 적합한 컴퓨팅 환경에서 구현될 수 있는 것으로서 도시된다. 필수는 아니지만, 본 발명은 퍼스널 컴퓨터에 의해 실행되는 프로시져와 같은 컴퓨터 실행가능 명령어의 일반적인 문맥으로 설명될 것이다. 일반적으로, 프로시져는 특정 태스크를 수행하고 또는 특정 추상 데이터 유형을 구현하는 프로그램 모듈, 루틴, 함수, 프로그램, 객체, 컴포넌트, 데이터 구조 등을 포함한다. 또한, 당업자들은 본 발명이 핸드-헬드 장치, 멀티프로세서 시스템, 마이크로프로세서 기반 또는 프로그램가능한 소비자 가전제품, 네트워크 PC, 미니컴퓨터, 메인프레임 컴퓨터 등을 포함하는 기타 컴퓨터 시스템 구성으로 실행될 수 있다는 것을 이해할 것이다. 본 발명은 또한 통신 네트워크를 통해 링크된 원격 처리 장치들에 의해 태스크가 수행되는 분산 컴퓨팅 환경에서도 실행될 수 있 다. 분산 컴퓨팅 환경에서, 프로그램 모듈은 로컬 및 원격 컴퓨터 저장 장치 둘 다에 위치할 수 있다. 컴퓨터 시스템이라는 용어는 분산 컴퓨팅 환경에서 볼 수 있는 컴퓨터들의 시스템을 지칭하는 데에 사용될 수 있다.
도 1은 본 발명을 구현하기에 적합한 컴퓨팅 시스템 환경(100)의 예제를 도시한다. 컴퓨팅 시스템 환경(100)은 단지 적합한 컴퓨팅 환경의 한가지 일례이며, 본 발명의 사용 범위 또는 기능에 관해 어떠한 제한을 제안하고자 하는 것이 아니다. 컴퓨팅 환경(100)이 예시적인 운영 환경(100)에 도시된 임의의 하나의 컴포넌트 또는 컴포넌트들의 조합에 관해 임의의 종속성 또는 요구사항을 가지는 것으로 해석되어서는 안 된다. 본 발명의 한 실시예는 예시적인 운영 환경(100)에 도시된 각 컴포넌트를 포함하지만, 본 발명의 다른 좀 더 통상적인 실시예는 예를 들어 네트워크 통신에 필수인 것 이외의 입력/출력 장치와 같은 필수가 아닌 컴포넌트들을 배제한다.
도 1과 관련하여, 본 발명을 구현하는 예시적인 시스템은 컴퓨터(110)의 형태인 범용 컴퓨팅 장치를 포함한다. 컴퓨터(110)의 컴포넌트는 처리 장치(120), 시스템 메모리(130) 및 시스템 메모리를 포함하는 각종 시스템 컴포넌트를 처리 장치(120)에 결합하는 시스템 버스(121)를 포함하지만 이에 제한되는 것은 아니다. 시스템 버스(121)는 메모리 버스 또는 메모리 컨트롤러, 주변 버스 및 각종 버스 아키텍처 중 임의의 것을 이용하는 로컬 버스를 포함하는 몇몇 유형의 버스 구조 중 어느 것이라도 될 수 있다. 예제로서, 이러한 아키텍처는 ISA(industry standard architecture) 버스, MCA(micro channel architecture) 버스, EISA(Enhanced ISA) 버스, VESA(video electronics standard association) 로컬 버스 그리고 메자닌 버스(mezzanine bus)로도 알려진 PCI(peripheral component interconnect) 버스 등을 포함하지만 이에 제한되는 것은 아니다. 또한 컴퓨터(110)의 컴포넌트는 메모리 캐시(122)를 포함할 수 있다. 처리 장치(120)는 메모리 캐시로부터 시스템 메모리(130)로부터보다 더 빨리 데이터를 액세스할 수 있다. 메모리 캐시(122)는 통상적으로 시스템 메모리(130)로부터 가장 최근에 액세스된 데이터 또는 처리 장치(120)에 의해 가장 최근에 처리된 데이터를 저장한다. 시스템 메모리(130)로부터 데이터를 검색하기에 앞서, 처리 장치(120)는 데이터가 현재 메모리 캐시(122)에 저장되어 있는지 여부를 점검할 수 있다. 만약 그럴 경우, "캐시 적중(cache hit)"이 발생하고, 그 데이터는 일반적으로 속도가 더 늦은 시스템 메모리(130)로부터가 아니라 메모리 캐시(122)로부터 검색된다.
컴퓨터(110)는 통상적으로 각종 컴퓨터 판독가능 매체를 포함한다. 컴퓨터(110)에 의해 액세스 가능한 매체는 그 어떤 것이든지 컴퓨터 판독가능 매체가 될 수 있고, 이러한 컴퓨터 판독가능 매체는 휘발성 및 비휘발성 매체, 이동식 및 이동불가식 매체를 포함한다. 예제로서, 컴퓨터 판독가능 매체는 컴퓨터 저장 매체 및 통신 매체를 포함하지만 이에 제한되는 것은 아니다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터와 같은 정보의 저장을 위해 모든 방법 또는 기술로 구현되는 휘발성 및 비휘발성, 이동식 및 이동불가식 매체를 포함한다. 컴퓨터 저장 매체는 RAM, ROM, EEPROM, 플래시 메모리 또는 기타 메모리 기술, CD-ROM, DVD(digital versatile disk) 또는 기타 광 디스 크 저장 장치, 자기 카세트, 자기 테이프, 자기 디스크 저장 장치 또는 기타 자기 저장 장치, 또는 컴퓨터(110)에 의해 액세스되고 원하는 정보를 저장할 수 있는 임의의 기타 매체를 포함하지만 이에 제한되는 것은 아니다. 통신 매체는 통상적으로 반송파(carrier wave) 또는 기타 전송 메커니즘(transport mechanism)과 같은 피변조 데이터 신호(modulated data signal)에서 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터 등을 구현하고 모든 정보 전달 매체를 포함한다. "피변조 데이터 신호"라는 용어는, 신호내의 정보가 암호화되도록 그 신호의 하나 이상의 특성을 설정 또는 변경시킨 신호를 의미한다. 예제로서, 통신 매체는 유선 네트워크 또는 다이렉트 유선 접속과 같은 유선 매체, 그리고 음향, RF, 적외선, 기타 무선 매체와 같은 무선 매체를 포함하지만 이에 제한되는 것은 아니다. 상술된 매체들의 모든 조합이 또한 컴퓨터 판독가능 매체의 범위내에 포함되어야 한다.
시스템 메모리(130)는 판독 전용 메모리(ROM)(131) 및 랜덤 액세스 메모리(RAM)(132)와 같은 휘발성 및/또는 비휘발성 메모리의 형태로 컴퓨터 저장 매체를 포함한다. 시동 시 컴퓨터(110) 내의 구성요소들 사이의 정보 전송을 돕는 기본 루틴을 포함하는 기본 입/출력 시스템(BIOS)(133)은 통상적으로 ROM(131)에 저장되어 있다. RAM(132)은 통상적으로 즉시 액세스 가능하고 및/또는 현재 처리 장치(120)에 의해 동작되고 있는 데이터 및/또는 프로그램 모듈을 포함한다. 예제로서, 도 1은 운영 체제(134), 애플리케이션 프로그램(135), 기타 프로그램 모듈(136) 및 프로그램 데이터(137)를 도시하고 있지만 이에 제한되는 것은 아니다.
컴퓨터(110)는 또한 기타 이동식/이동불가식, 휘발성/비휘발성 컴퓨터 저장 매체를 포함한다. 단지 예제로서, 도 1은 이동불가식, 비휘발성 자기 매체로의 기록 또는 그로부터의 판독을 위한 하드 디스크 드라이브(141), 이동식, 비휘발성 자기 디스크(152)로의 기록 또는 그로부터의 판독을 위한 자기 디스크 드라이브(151), CD-ROM 또는 기타 광 매체 등의 이동식, 비휘발성 광 디스크(156)로의 기록 또는 그로부터의 판독을 위한 광 디스크 드라이브(155)를 포함한다. 예시적인 운영 환경에서 사용될 수 있는 기타 이동식/이동불가식, 휘발성/비휘발성 컴퓨터 저장 매체로는 자기 테이프 카세트, 플래시 메모리 카드, DVD, 디지털 비디오 테이프, 고체(solid state) RAM, 고체 ROM 등이 있지만 이에 제한되는 것은 아니다. 하드 디스크 드라이브(141)는 통상적으로 인터페이스(140)와 같은 이동불가식 메모리 인터페이스를 통해 시스템 버스(121)에 접속되고, 자기 디스크 드라이브(151) 및 광 디스크 드라이브(155)는 통상적으로 인터페이스(150)와 같은 이동식 메모리 인터페이스에 의해 시스템 버스(221)에 접속된다.
위에서 설명되고 도 1에 도시된 드라이브들 및 이들과 관련된 컴퓨터 저장 매체는, 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 및 컴퓨터(110)의 기타 데이터를 저장한다. 도 1에서, 예를 들어, 하드 디스크 드라이브(141)는 운영 체제(144), 애플리케이션 프로그램(145), 기타 프로그램 모듈(146) 및 프로그램 데이터(147)를 저장하는 것으로 도시되어 있다. 여기서 주의할 점은 이 컴포넌트들이 운영 체제(134), 애플리케이션 프로그램(135), 기타 프로그램 모듈(136) 및 프로그램 데이터(137)와 동일할 수도 있고 다를 수도 있다는 것이다. 이에 관해, 운영 체제(144), 애플리케이션 프로그램(145), 기타 프로그램 모듈(146) 및 프로그램 데이터(147)에 다른 번호가 주어졌다는 것은 적어도 이들이 서로 다른 본(copy)이라는 것을 도시한다. 사용자는 태블릿, 전자 디지타이저(164), 마이크(163), 키보드(162) 및 일반적으로 마우스, 트랙볼(trackball) 또는 터치 패드라고 알려진 포인팅 장치(161) 등의 입력 장치를 통해 명령 및 정보를 컴퓨터(110)에 입력할 수 있다. 다른 입력 장치(도시 생략)로는 조이스틱, 게임 패드, 위성 안테나, 스캐너 등이 있을 수 있다. 이들 및 기타 입력 장치는 종종 시스템 버스에 결합된 사용자 입력 인터페이스(160)를 통해 처리 장치(120)에 접속되지만, 병렬 포트, 게임 포트 또는 USB(universal serial bus) 등의 다른 인터페이스 및 버스 구조에 의해 접속될 수도 있다. 모니터(191) 또는 다른 유형의 디스플레이 장치도 비디오 인터페이스(190) 등의 인터페이스를 통해 시스템 버스(121)에 접속될 수 있다. 모니터(191)는 또한 터치 스크린 패널등과 통합될 수 있다. 모니터 및/또는 터치 스크린 패널이 태블릿 유형 퍼스널 컴퓨터와 같이 컴퓨팅 장치(110)가 포함되는 하우징(housing)에 물리적으로 결합될 수 있다는 것을 유의한다. 또한, 컴퓨팅 장치(110)와 같은 컴퓨터는 스피커(197) 및 프린터(196) 등의 기타 주변 출력 장치를 포함할 수 있고, 이들은 출력 주변장치 인터페이스(194) 등을 통해 접속될 수 있다.
컴퓨터(110)는 원격 컴퓨터(180)와 같은 하나 이상의 원격 컴퓨터로의 논리적 접속을 사용하여 네트워크화된 환경에서 동작할 수 있다. 원격 컴퓨터(180)는 또 하나의 퍼스널 컴퓨터, 서버, 라우터, 네트워크 PC, 피어 장치 또는 다른 공통 네트워크 노드일 수 있고, 통상적으로 컴퓨터(110)와 관련세트 상술된 구성요소의 대부분 또는 그 전부를 포함하지만, 도 6에는 메모리 저장 장치(181)만이 도시되어 있다. 도 1에 도시된 논리적 연결로는 LAN(171) 및 WAN(173)이 있지만, 다른 네트워크를 포함할 수도 있다. 이러한 네트워킹 환경은 사무실, 회사 전체에 걸친 컴퓨터 네트워크, 인트라넷 및 인터넷에서 일반적인 것이다. 예를 들어, 본 발명에서, 컴퓨터(110)는 데이터가 이전되는 소스 기계를 포함할 수 있고, 원격 컴퓨터(180)는 목적지 기계를 포함할 수 있다. 소스 및 목적기 기계가 네트워크 또는 기타 임의의 수단에 의해 접속될 필요는 없지만, 소스 플랫폼에 의해 기록되고 목적지 플랫폼 또는 플랫폼에 의해 판독될 수 있는 임의의 매체를 통해 데이터가 이전될 수 있다는 것을 유의한다.
LAN 네트워킹 환경에서 사용될 때, 컴퓨터(110)는 네트워크 인터페이스 또는 어댑터(170)를 통해 LAN(171)에 접속된다. WAN 네트워킹 환경에서 사용될 때, 컴퓨터(110)는 통상적으로 인터넷과 같은 WAN(173) 상에서의 통신을 설정하기 위한 모뎀(172) 또는 기타 수단을 포함한다. 내장형 또는 외장형일 수 있는 모뎀(172)은 사용자 입력 인터페이스(160) 또는 기타 적절한 메커니즘을 통해 시스템 버스(121)에 접속된다. 네트워크화된 환경에서, 컴퓨터(110) 또는 그의 일부와 관련하여 기술된 프로그램 모듈은 원격 메모리 저장 장치에 저장될 수 있다. 그 예제로서, 도 1은 메모리 장치(181)에 위치하고 있는 원격 애플리케이션 프로그램(185)을 도시하고 있지만 이에 제한되는 것은 아니다. 도시된 네트워크 접속은 예시적인 것이며 이 컴퓨터들 사이의 통신 링크를 설정하는 다른 수단이 사용될 수 있다는 것을 이해할 것이다.
본 발명을 활용할 수 있는 컴퓨팅 환경의 간단한 예제가 도 2에 도시되어 있다. 도시된 환경에서, 컴퓨터(200)는 통신 매체상에서 통신을 용이하게 하는 네트워크 인터페이스 카드(도시 생략)를 포함한다. 도 2에 도시된 특정 예제에서, 컴퓨터(200)는 물리적 접속을 통해 LAN(206)과 통신한다. 또는, 컴퓨터(200)는 WWAN 또는 WLAN 매체, 또는 기타 통신 매체를 통해 LAN(206)과 통신할 수 있다.
지원되는 네트워크 매체의 결과로, 컴퓨터(200)의 사용자는 인터넷(202)에 액세스할 수 있다. 예를 들어, 컴퓨터(200)는 LAN(206)으로의 물리적 접속을 통해 직접 LAN(206)상의 자원을 액세스한다. 도시된 예제에서 LAN(206)은 적절하게 인증된 컴퓨터(200)의 사용자가 인터넷(202)의 자원을 액세스할 수 있도록 프록시 서버 및 네트워크 액세스를 포함한다고 가정된다.
웹 페이지의 형태로 컴퓨터(200)의 사용자에게 인터넷(202)이 제공된다. 웹 페이지는 컴퓨터(200)상에 상주하는 웹 브라우저 애플리케이션(208)에 의해 처리되고 디스플레이될 내용 및 명령어를 포함한다. 또는, 웹 브라우저 애플리케이션(208)은 네트워크화된 컴퓨터(210)상에 상주하고, 원격 디스플레이 프로그램을 통해 컴퓨터(200)상에 그래픽으로 디스플레이될 수 있다. 웹 페이지는 또한 다른 웹 페이지로의 하이퍼링크를 포함하고, 이것은 사용자로 하여금 제공된 하이퍼링크를 선택함으로써 디스플레이된 페이지로부터 관련 페이지로 쉽게 탐색(navigate)할 수 있도록 해 준다. 이러한 방식으로 페이지의 하이퍼링크는 상호접속된 페이지의 "웹"을 생성하고, 이를 통해 사용자는 일련의 하이퍼링크를 선택함으로써 하나의 페 이지에서 수백만의 또는 수조의 페이지로 탐색할 수 있다. 인터넷(202)을 통해 액세스 가능한 수조의 상호접속된 웹 페이지가 있을 수 있지만, 본 발명을 위해 페이지들을 1에서 n(여기서 n은 웹 페이지의 상호접속된 네트워크상에서 액세스 가능한 페이지의 전체 개수)까지 번호가 매겨진 순서화된 페이지 세트(212)로 간주하는 것이 유용하다. 사용자들이 관심이 있는 웹 페이지를 계속해서 알 수 있도록 돕기 위해, 웹 브라우저 애플리케이션은 "즐겨찾기(Favorites)" 또는 "북마크(bookmarks)" 특징(214)을 포함할 수 있고, 이를 통해 사용자는 자주 액세스하고자 하는 웹 페이지의 목록을 저장할 수 있고, 앞으로 이들 페이지를 쉽게 탐색할 수 있다.
사용자가 단지 하이퍼링크를 선택함으로써 웹 페이지를 탐색할 수 있지만, 웹 페이지에 포함된 특정 정보를 찾는 데에 있어 사용자를 돕는 검색 엔진과 같은 도구가 존재한다. 통상적인 시나리오에서, 검색 엔진(220)이 서버(222)에 저장되어 있고, 이 서버(222)는 인터넷(202)에 접속되고, 또한 인터넷상의 웹 페이지에 대한 정보(226) 및 인덱스를 포함하는 데이터베이스(224)에 접속되어 있다. 통상적인 검색 엔진에서 일반적으로 검색 용어의 형태로, 사용자가 검색 매개변수를 입력하는 웹 페이지가 사용자에게 제공된다. 검색 엔진(220)은 이 데이터베이스(224)를 이용하여 사용자 요청을 처리하고, 이어서 사용자 요청의 매개변수를 충족시켰던 다른 페이지로의 링크를 포함하는 새로운 웹 페이지를 사용자에게 제공한다.
많은 수의 페이지가 검색 매개변수를 충족시키는 경우, 정리된 방식으로 사 용자에게 검색 결과를 제공하는 것은 문제가 있을 수 있다. 특정 순서가 아닌 순서로 배열되어 있는 수천 개의 웹 페이지 목록이 있는 경우, 사용자는 관련 페이지를 찾기 위해 전체 목록을 힘들여 수작업으로 정렬해야 한다. 그러므로, 최신의 검색 엔진은 종종 예를 들어 포함되어 있는 페이지 순위화 엔진(228)을 이용하여 사용자와의 추정 관련성을 기초로 하여 페이지의 등급을 매기거나 또는 페이지를 "순위화"한다. 이후 검색을 충족시키는 웹 페이지는 추정 관련성에 따라 정렬되어, 결과 목록의 최상위에 가장 관련이 있는 결과를 사용자에게 제공한다.
그러나, 임의의 특정 웹 페이지의 관련성을 결정하는 것은 단순한 태스크(trivial task)가 아니다. 관련성을 결정하는 한 가지 어프로치는, 다른 많은 웹 페이지가 그 페이지로 이르게 하는 하이퍼링크를 포함한다는 점에서 어느 페이지가 "인기가 있는(popular)"가를 알아내기 위해, 인터넷상의 페이지간의 상호연결성(interconnectivity)의 구조를 보는 것이다. 상호연결성의 구조는 "상호연결성 행렬"의 형태로 검색 엔진에 접속된 데이터베이스에 저장될 수 있고, 여기서 행렬의 엔트리[i,j]는 페이지 j에서 페이지 i로의 하이퍼링크의 존재를 나타낸다. 웹 페이지간의 상호연결성을 설명하는 데에 사용되는 연결성 행렬의 예제가 본 발명의 실시예에서 사용되는 바와 같이, 이제 도 3과 함께 설명된다. 도 3의 예제에 있는 웹 페이지 세계는 도시의 목적을 위해 오직 다섯 개의 웹 페이지로 구성되어 있다. 페이지1(301)은 페이지2(302), 페이지3(303) 및 페이지4(304)로의 하이퍼링크를 포함한다. 페이지2(302)는 페이지1(301) 및 페이지4(304)로의 하이퍼링크를 포함한다. 페이지3(303)은 페이지4(304)로의 단 하나의 하이퍼링크만을 포함한다. 페이 지4는 페이지1(301) 및 페이지2(302)로의 하이퍼링크를 포함한다. 페이지5는 페이지3(303) 및 페이지4(304)로의 하이퍼링크를 포함한다. 예제에서, 이 상호연결성은 연결성 행렬에 의해 설명된다.
여기서, 페이지 j에서 페이지 i로의 링크가 있을 경우 또는 이러한 경우에만 행 i, 열 j의 원소(element)가 1이 된다. 한 페이지로부터 하이퍼링크가 임의로 균일하게 선택되는 경우, 하이퍼링크가 선택될 때 페이지 j에서 페이지 i로 가는 대응 확률(corresponding probability) p(i,j)가 있다. 대응하는 임의 보행 이행 행렬(random walk transition matrix)(A)은 이하와 같다:
행렬(A)의 각 열의 합은 1과 같다. 그러나, 본 발명은 페이지내에서 임의로 균일하게 하이퍼링크를 선택하는 것에 제한되지 않는다. 임의의 특정 페이지내에서 하이퍼링크를 선택하는 데에 임의의 확률 분포가 적용될 수 있다. 예를 들어, 통계 데이터가 실제 사용 패턴에 대해 알고 있는 경우, 그 정보는 A에 포함된 확률을 할당하는 데에 적용될 수 있다.
인터넷이 현재 막대한 수의 페이지를 포함하고, 이 페이지들 중 대부분이 그 들 간의 하이퍼링크를 포함하지 않는 경우, 행렬(A)은 본 예제 이외의 실행에서 사용되는 바와 같이 대부분 0 엔트리를 포함하는 희소 행렬(sparse matrix)이 될 것이다. 희소성(sparseness) 속성은 유용한데, 그 이유는 이것이 행렬을 효율적으로 저장하는 압축 기술을 허용하기 때문이다. 희소성 외에, 또 다른 중요한 행렬 개념은 행렬의 "순위"이며, 이것은 웹 페이지의 "페이지순위(pagerank)" 또는 개별 웹 페이지의 "순위"와 관련되지 않은 수학 용어이다. 행렬 순위는 행렬의 1차 독립 열(또는 행)의 개수이다. 실제적으로, 낮은 순위의 행렬이 높은 순위의 행렬보다 더 효율적으로 저장될 수 있고, 순위-k의 n*n 행렬은 순위-n의 행렬이 아마도 필요로 하는 n2 저장소의 차수보다는 kn 저장소의 차수를 필요로 하는 정보를 포함한다.
또는, 페이지간의 연결성은 꼭지점 및 방향선을 포함하는 그래프의 형태로 고려될 수 있다. 이러한 방식으로, 각 꼭지점은 웹 페이지를 나타내고, 각 방향선은 페이지간의 하이퍼링크를 나타낸다. 선에 가중치를 할당함으로써, 한 페이지의 하이퍼링크들간의 확률 분포가 표현될 수 있다. 도 3에 도시된 웹 페이지들의 상호연결에 대응하는 그래프의 예제가 이제 도 4a 내지 도 4b에 설명되어 있다. 도 4a에 웹 페이지에 대응하는 꼭지점 세트와 꼭지점들을 연결하는 선 세트가 도시되어 있다. 예를 들어, 방향선(402)는 페이지1(404)(도 3의 페이지1(301)에 대응함)로부터 페이지2(406)(즉 도 3의 페이지2(302))로의 링크에 대응된다. 도 4a의 방향 그래프는 상술된 소정의 상호연결성 행렬과 일치한다. 본 발명의 실시예는 도 4b에 도시된 대로 방향이 없는 선을 지니는 그래프를 고려한다. 방향이 없는 그래프에서, 페이지1(404) 및 페이지2(406)간의 선(410)은 페이지1(301)에서 페이지2(302)로의 링크, 또는 페이지2(302)에서 페이지1(301)로의 링크 둘 중의 하나, 또는 그 둘다에 대응한다. 방향이 없는 그래프에 대해 대응하는 상호연결성 행렬은 열(j), 행(i)의 엔트리가 행(j), 열(i)의 엔트리와 동일하도록 일반적으로 대칭 행렬이다. 도 4b의 그래프에 대응하는 대칭 행렬은 이하와 같다.
도 5에서, 한 실시예에 따라, 사용자는 단계(504)에서 검색 용어를 입력하고, 단계(506)에서 이 질의를 검색 엔진으로 전송한다. 페이지 순위화 엔진은, 질의를 수신하기에 앞서, 인터넷상의 웹 페이지의 상호연결성(및 아마도 기타 통계 데이터)에 기초하여 단계(508)에서 페이지에 대한 페이지 순위를 계산한다. 질의를 수신한 후, 검색 엔진은 소정의 검색 용어에 대한 검색을 수행하고 단계(510)에서 결과를 획득한다. 그 후 검색 엔진은 단계(512)에서 페이지순위에 의해 결과를 정렬한다. 정렬된 결과는 단계(514)에서 사용자에게 리턴된다.
웹 페이지를 순위화하는 몇몇 기존의 방법은 인터넷의 웹 페이지간의 이론적인 "임의 보행"의 개념을 활용한다. 일반적으로, 임의 보행은 소정의 웹 페이지k에서 시작하여 소정의 확률 A[j,k]로 페이지j로의 하이퍼링크를 선택하는 것으로 간주될 수 있다. 보행은 페이지j로부터, 소정의 확률 A[i,j]로 다른 페이지i로의 하이퍼링크를 선택함으로써, 또는 막다른 골목(dead-ends)을 피하기 위해 임의로 '텔레포팅(teleporting)'함으로써 계속된다. 이론적인 임의 보행은 무한히 계속된다. 임의 보행 이행 행렬(A)에서 수학 조작을 수행함으로써, 검색 엔진은 임의 보행의 단계에서 페이지에 도착하는 가능성에 기초하여 페이지를 순위화할 수 있다. 기존 페이지 순위화 알고리즘은 A에 의해 또는 관련 이행 행렬에 의해 나타내어지는 마르코프 연쇄(Markov chain)의 고정 분포를 계산함으로써 페이지의 페이지 순위를 계산한다. 이것은 이행 행렬의 주요 고유벡터(즉, 대응하는 고유치가 최대인 고유벡터)를 계산하는 것에 대응한다. 이러한 방식으로 페이지 순위를 계산하는 몇몇 기술이 공지되어 있다.
기존의 페이지 순위화 방법에서 통상적인 것과 같이, 본 발명의 실시예는 웹 페이지의 상호연결에 관한 데이터를 특정 데이터 구조를 갖는 메모리에 저장한다. 예시적인 데이터 구조가 도 6을 참조하여 설명된다. 도 4a에 도시된 바와 같이, 배열(602)은 대응하는 웹 그래프의 각 선에 대해(즉, 연결성 행렬에서 0이 아닌 각각의 원소에 대해) 하나의 엔트리를 포함한다. 각 배열 원소는 균등한 크기를 가지고, 배열(602)은 메모리의 연속적인 블록을 차지한다. 실제 선에 대한 정보만을 저장하고 선이 아닌 것에 대한 정보는 저장하지 않음으로써, 연결성 행렬 전체(즉, 0인 엔트리들을 포함하는 경우)가 저장된 경우보다 훨씬 적은 메모리가 요구된다. 배열 원소는 페이지 i로부터 페이지 j로의 링크를 나타내는 선 설명 (i,j)를 포함한다. 도 6의 예에서, 배열(602)의 원소들은 페어(pair)의 첫 번째 값에 의해 정렬되고, 이 첫 번째 값은 링크가 밖으로 나가는(outgoing) 웹 페이지를 나타낸다. 예시적인 배열(602)을 정렬하기 위해 사용된 인덱스는 임의적이고, 페이지의 상대적인 순서 또는 라벨화는 중요하지 않다.
통상적으로, 페이지 순위화 방법은 도 6의 예와 같은 데이터 구조를 순차적으로 액세스하여, 한 원소 후에 또 다른 원소를 처리할 것이다. 부가적으로, 통상적인 페이지 순위화 방법은 페이지에 대응하는 페이지 순위화 정보를 유지하기 위해 부가적인 데이터 구조를 사용한다. 페이지 순위화 정보를 유지하기 위한 통상적인 데이터 구조는 페이지당 하나의 배열 원소를 갖는 일차원 배열이다. 이러한 페이지 순위화 정보의 배열은 일반적으로 특정하게 지정된 인덱스에 대한 원소를 검색함으로써 랜덤 액세스를 통해 액세스할 수 있다.
상술된 바와 같이, 페이지 순위화를 수행하기 위해 필요한 시간의 양에 기여하는 한 가지 요소는 프로세서에 의해 요구되는 메모리 액세스의 횟수이다. 메모리로의 각 액세스는 프로세서의 속도에 비해 매우 큰 시간의 양(약 100 나노초)을 추가한다. 그러나, 프로세서 캐시는 액세스되기 위해 훨씬 적은 시간을 필요로 한다. 본 발명의 실시예들은 요구되는 메모리 액세스의 횟수를 줄이기 위해 캐시 및 두 개의 관련되지만 독립적인 기술들 중 하나 또는 그 둘 모두를 사용한다. 첫째, 최적화된 순서에 따라 노드들(웹 페이지들)이 재라벨화(relabel)된다. 선들이 메모리에서 물리적으로 재배열될 수 없을지라도, 페이지의 관련 노드의 식별자를 변경함으로써 페이지 순위화 정보의 배열에 대한 액세스의 패턴을 변경할 수 있다. 예를 들어, 만약 다른 페이지들에 의해 빈번히 링크되는 두 페이지에 대응하는 노드들이 인접 인덱스를 갖도록 재라벨화되면, 첫 번째 페이지에 대한 원소로의 액세 스가 두 번째 페이지에 대한 페이지 순위화 정보 배열 원소로의 여러 액세스보다 선행할 것이다. 캐시가 연속적인 메모리의 덩어리들을 저장하기 때문에(및 최근에 액세스된 데이터를 저장하기 때문에), 첫 번째 페이지에 대한 액세스는 두 페이지 모두에 관련된 순위화 데이터를 캐시로 가져올 수 있다. 재라벨화하지 않으면, 두 페이지로의 액세스가 메모리의 별개의 영역에 대한 것이 되고, 매우 상이한 시각에 발생할 수 있으며, 따라서 두 번째 액세스를 보다 효율적으로 서비스할 수 없을지도 모른다. 노드들을 재라벨화함으로써, 인접한 노드들에 대응하는 페이지 순위화 데이터가 동시에 캐시에 있을 가능성이 더 커지고, 이것은 메모리로부터 그 데이터를 검색해야 할 가능성을 감소시킨다. 이러한 이점은 특히 페이지 순위화 정보를 저장하는 데이터 구조에 인덱스된 액세스를 수행할 때 보여진다.
두 번째 기술에서는, 페이지 링크 데이터가 표현된 특정 웹 그래프에 대해 최적화된 순서로 정렬된다. 즉, 메모리의 첫 번째 블록이 첫 번째 노드(웹 페이지)로부터 밖으로 나가는 선에 대응하는 배열 원소들을 포함하는 경우, 배열에 있는 원소들의 연속적인 두 번째 블록은 두 번째 노드로부터 밖으로 나가는 선들에 대응하고, 첫 번째 및 두 번째 노드들은 웹 그래프에서 서로 "가까이(near)"에 있다. 이러한 방식으로 노드들의 근접성에 의하여 배열 원소들을 배열하는 것은 도 6에 도시된 것과 같은 데이터 구조로부터 순차적으로 링크를 판독하는 효율을 증가시키고, 데이터 구조를 따라 판독하여 페이지 j에 대한 밖으로 나가는 선을 만날 경우, 페이지 j에 대한 정보가 이전의 페이지 i에 대한 소정의 선(i,j)에 관하여 이미 처리되었을 가능성이 증가된다. 결과적으로 이것은 페이지 j에 대한 페이지 순위화 정보가 현재 캐시에 저장되어 있을 가능성을 증가시키고, 그 결과 페이지 순위 계산에 있어서 속도를 증가시킨다. 게다가, 이 기술은 링크의 탐험에서 한 페이지로부터 또 다른 페이지로 링크를 따라갈 때(즉, 선 정보의 배열을 비순차적으로 이동할 때), 다음 페이지의 링크들이 메모리에서 너무 멀리 떨어져 있지 않을 가능성을 증가시킨다. 만약 선 정보를 포함하는 연속적인 메모리의 커다란 덩어리가 동시에 캐시로 읽혀온다면, 두 번째 덩어리가 그 후 바로 읽혀질 필요가 있을 가능성이 적기 때문에, 이것은 이점을 제공한다. 일반적으로, 상술된 첫 번째 기술에서와 같이, 노드들도 재라벨화되고, 그들의 이점이 부가적으로 획득된다.
상술된 두 기술을 적용한 결과가 도 6에 도시된다. 예에서, 웹 페이지의 재라벨화는 순열 (604)에 따라 라벨의 순열을 만듦으로써 수행되고, 따라서 페이지1은 페이지4'로, 페이지2는 페이지5'로 등과 같이 재라벨화된다. 배열(606)은 재라벨화된 원소들을 갖는 배열을 도시한다. 그러나, 일 실시예에서, 배열의 원소들 자신은 재라벨화되지 않는다. 대신에, 재라벨화가 배열 원소에 외부적으로 수행되고, 재라벨화된 배열(606)에 의해 표현된 선들이 정렬되지 않으며, 따라서 결과적으로 배열(602)의 내용에 어떠한 물리적 변경도 존재하지 않을 수 있다. 이것은 상술된 첫 번째 기술에 대응한다. 이 예로 계속하여, 상술된 두 번째 기술은 배열 원소의 재라벨화에 따라 배열 원소를 정렬하기 위해 적용된다. 이것은 결과적으로 배열 원소를 재배치하여 예시적인 배열(608)을 산출한다. 배열 원소의 실제 내용은 재라벨화되지 않지만, 배열(608)의 원소들은 재라벨화에 따라 물 리적으로 정렬된다. 따라서, 재정렬된 배열(608)의 원소(610)는 재라벨화된 값 "(2',3')"이 아니라 실제로는 값 "(1,4)"을 포함하는데, 재정렬된 배열(608)을 이용하는 페이지 순위화 방법은 페이지에 대한 페이지 순위화 정보의 배열을 액세스하기 위해 재라벨화된 인덱스들을 사용하여 선의 동작중인 재라벨화를 수행하는 것이 바람직하다.
도 7 내지 도 9를 참조하여, 본 발명의 실시예에서 사용된 바와 같이, 페이지 순위화가 계산되는 속도를 증가시키기 위해 웹 페이지의 재순서화를 계산하는 방법이 설명된다. 일반적으로, 방법은 단계(702)에서 웹 페이지들의 세트에 대해 초기 순서화를 행하고, 단계(704)에서 페이지들이 이웃에 대해 갖는 가중화된 영향을 나타내는 행렬을 구성하며, 단계(706)에서 이 행렬의 제2의 고유벡터(즉, 대응하는 고유값이 두 번째로 큰 고유벡터)를 찾는다. 고유벡터의 값에 따라 단계(708)에서 웹 페이지들이 재라벨화되고 정렬된다.
보다 상세하게, 도 8은 본 발명의 실시예에서 사용된 바와 같이, 페이지들이 그들의 이웃에 대해 갖는 가중화된 영향을 나타내는 행렬을 구성하는 방법을 도시한다. 방법은 단계(802)에서 페이지들 사이의 링크들의 목록을 판독함으로써 시작된다. 단계(804)에서 페이지들 사이의 링크들을 나타내는 제1 대칭 행렬이 구성된다. 대안적으로, 대칭행렬이 구성되지 않고, 방법은 인입하는(incoming), 또는 페이지로부터 밖으로 나가는 링크만을 고려한다. 그 후 단계(806)에서 대각 행렬 D가 구성되고, 대각 엔트리 D[i,j]는 대응하는 페이지 i에 들어오거나 또는 이를 떠나는 링크들의 수로 설정된다. 도 3 및 4에 있는 웹 페이지들의 예시적인 세트에 대해, 대각 행렬은 다음과 같다.
단계(808)에서 제1 행렬과 대각 행렬 D의 원소들을 평균하여 새로운 행렬이 구성된다. 본 발명의 실시예들은 제2의 고유벡터를 계산할 때 각종 퇴화 조건(degenerate condition)이 후에 발생하지 않을 것을 보장하기 위해 이 단계(808)를 수행한다. 방법은 계속하여 단계(810)에서 페이지 이웃들의 가중화된 풀(weighted pull)을 나타내는 행렬 W를 계산하기 위해 새로운 행렬을 대각 행렬 D의 역에 곱한다. 도 3 및 4의 예에서, 행렬 W는 다음과 같다.
도 9에서, 본 발명의 실시예에서 사용된 바와 같이, 웹 페이지들에 대한 재순서화를 계산하는 방법이 행렬의 제2의 고유벡터를 계산하는 관점에서 설명된다. 방법은 단계(902)에서, 도 8의 방법을 이용하여 계산된 것과 같이, 이웃하는 웹 페이지들의 가중화된 영향을 나타내는 행렬 W를 입력으로서 취한다. 값들은 단계(904)에서 초기에 임의로 선택되고 각 웹 페이지에 할당되어 초기 벡터를 형성한 다. 예시적인 초기 벡터는 이다. 벡터는 단계(906)에서 W에 의해 곱셈되어 페이지의 이웃의 값의 근사 평균을 나타내는 새로운 벡터를 산출한다.
단계(908)에서 새로운 벡터는 값들의 평균이 0이 되도록 새로운 벡터의 각 값에 충분한 고정 값을 더함으로써 새로운 벡터의 등차중항을 구한다(center).
그 후 벡터는 새로운 벡터 상수의 절대값(magnitude)을 유지하기 위해 단계(910)에서 정규화된다.
단계(912)에서, 종료 조건이 검사된다. 본 발명의 일 실시예에서, 종료 조건은 새로운 벡터의 값들이 이전 반복의 벡터에 있는 값들과 상당히 다른가 하는 것이다. 또 다른 실시예에서, 종료 조건은 특정 횟수의 반복이 수행되었는가 하는 것이다. 또 다른 실시예에서, 종료 조건은 하나의 반복으로부터 다음 반복까지 벡터들 사이 의 내적이 1에 근접하는가 하는 것이다. 또 다른 실시예에서, 종료 조건은 벡터의 값들의 상대적 순서화가 소정 횟수의 반복동안 변경되지 않았는가 하는 것이다. 만약 종료 조건이 만족되면, 방법은 단계(914)에서 그 벡터를 제2의 고유벡터로서 출력하면서 종료한다. 그렇지 않으면, 새로운 벡터와 W의 곱셈을 위해 단계(906)로 리턴함으로써 또 다른 반복이 발생한다. 상기 예에서, 벡터는 약 20번의 반복 후에 다음과 같이 정해진다.
이 벡터는 근사적으로 상기에 주어진 행렬 W의 부차적인 고유벡터이다.
상술된 것과 같은 방법들에 의하여 제2의 고유벡터가 계산되면, 웹 페이지들이 고유벡터에 따라 물리적 메모리에서 재라벨화되고 및/또는 정렬된다. 상기 예에서, 제2의 고유벡터의 다섯 번째 값이 가장 크고, 따라서 페이지5는 페이지1'로 재라벨화되며, 연결성 행렬의 인덱스들이 이에 따라 재라벨화된다. 유사하게, 제2의 고유벡터의 값들의 순서에 따라 페이지3은 페이지2'로 재라벨화되고, 페이지4는 페이지3'로 등과 같이 재라벨화된다. 그 후 페이지들에 대한 새로운 라벨들을 사용하여 웹 페이지들을 순위화하기 위해 페이지 순위화 기술이 사용된다. 이러한 재라벨화된 페이지들을 갖는 행렬들은 원래 행렬의 행들 및 원래 행렬의 열들을 효율적으로 이동하여 서로 가까운 행들 및 서로 가까운 열들은 웹 그래프에서 서로 가까운 웹 페이지들을 나타낸다. 여러 페이지 순위화 기술이 라벨화된 순서로 행 렬의 행들 및/또는 열들을 통해 진행함으로써 행렬 연산을 수행하기 때문에, 그 결과 본 발명의 실시예에 의해 수행된 재라벨화는 페이지 순위화 기술의 효율을 증가시킨다. 따라서 웹 페이지들의 인덱스들을 재라벨화 및 정렬하는 상술된 방법들은 사전-처리(pre-processing) 단계로서 수행될 수 있고, 임의의 수의 페이지 순위화 기술에 적용될 수 있다.
본 발명의 적용은 웹 페이지 순위화에 한정되지 않는다. 본 발명은 상호연결을 나타내기 위해 행렬이 사용되는 상호연결된 객체들의 임의의 세트에 동일하게 적용될 수 있다. 예를 들어, 본 발명은 사회적 네트워크 내의 개개인을 순위화하는 것, 또는 전자 그리드(electrical grid) 또는 전자통신 네트워크 상에서 중요한 자원들을 식별하는 것에 적용될 수 있다.
부가적으로, 본 발명은 분산 네트워크 전체에 걸쳐 자원들의 효율적인 분산을 알아내는 데에 적용될 수 있다. 이러한 자원들의 분산의 한 가지 특정 예는 여러 사용자를 포함하는 가상 메시징 서비스이다. 사용자는 통상적으로 서비스를 호스팅하는 분산 서버들 중 하나에 로그온하고, 이전에 설정된 관련 사용자들의 목록("친구" 또는 "동료") 중 누가 현재 또한 그 서비스에 로그되어 있는지를 통보받는다. 목록에 그를 포함하는 기타 사용자들도 유사하게 그의 로그인을 통보받는다. 그 후 사용자들은 서로간의 직접 통신 세션에 참여할 수 있다. 이러한 시스템에서, 서로의 목록상에 있는 사용자들이 분산 서버들 중 동일한 것에 의해 서비스되는 경우 유익할 것이고, 따라서 분산 네트워크상의 서버들 사이의 통신 비용을 감소시킬 것이다. 따라서 이러한 시스템에 본 발명을 적용하는 것은 서로 통신하는 사용자들이 일반적으로 동일한 서버에 의해, 또는 가까운 서버에 의해 서비스된다는 점의 보장을 도움으로써 시스템의 전반적인 통신 비용을 감소시킬 것이다.
본 발명의 원칙이 적용될 수 있는 여러 가능한 실시예의 관점에서, 도면에 관하여 본 명세서에 설명된 실시예들은 단지 예시적인 것을 의미하며, 본 발명의 범위를 제한하는 것으로서 받아들여져서는 안 된다는 점을 인지해야 한다. 예를 들어, 당업자들은 도시된 실시예들이 본 발명의 취지를 벗어나지 않고 구성 및 상세사항이 수정될 수 있다는 점을 인지할 것이다. 본 발명이 소프트웨어 모듈 또는 컴포넌트의 관점에서 설명되었지만, 당업자들은 이러한 것들이 하드웨어 컴포넌트에 의해 동등하게 대체될 수 있다는 것을 인지할 것이다. 그러므로, 본 명세서에 설명된 본 발명은 이러한 모든 실시예들을 후술되는 특허청구범위 및 그들의 등가물의 범위 내에 속할 수 있는 것으로서 간주한다.
여러 페이지 순위화 기술이 라벨화된 순서로 행렬의 행들 및/또는 열들을 통해 진행함으로써 행렬 연산을 수행하기 때문에, 그 결과 본 발명의 실시예에 의해 수행된 재라벨화는 페이지 순위화 기술의 효율을 증가시킨다. 따라서 웹 페이지들의 인덱스들을 재라벨화 및 정렬하는 상술된 방법들은 사전-처리(pre-processing) 단계로서 수행될 수 있고, 임의의 수의 페이지 순위화 기술에 적용될 수 있다.
Claims (26)
- 객체 집합 내의 객체를 순위화하는(ranking) 방법에 있어서,상기 집합 내의 하나 이상의 객체는 상기 집합 내의 다른 객체로의 링크를 포함하고,상기 방법은,상기 링크에 대해 상기 집합 내의 다른 객체로의 그 근접성(proximity)에 따라 상기 객체를 순서화하는(ordering) 단계; 및상기 객체의 순서화에 따라 메모리에 객체 간의 상기 링크를 저장하는 단계를 포함하는 방법.
- 제1항에 있어서, 상기 객체 집합 및 링크는 제1 행렬에 의해 나타내어지고,상기 순서화 단계는,상기 제1 행렬에 대해 제2 행렬을 계산하는 단계;상기 제2 행렬의 제2 고유벡터의 근사치를 구하는 단계; 및상기 제2 고유벡터에 대한 상기 근사값에 대해 상기 객체를 라벨화하는(labeling) 단계를 포함하는 방법.
- 제2항에 있어서, 상기 제2 행렬은 각 객체에 대해 상기 각 객체에 링크된 객 체와 관련된 값의 근사 평균을 계산하는 함수를 나타내는 방법.
- 제1항에 있어서, 상기 방법은상기 메모리에 저장된 상기 링크를 사용하여 상기 객체에 대한 순위를 계산하는 단계를 더 포함하는 방법.
- 제4항에 있어서, 계산하는 상기 단계는 상기 메모리로부터 최근에 액세스된 링크를 일시적으로 저장하기 위해 캐시를 사용하는 단계를 포함하는 방법.
- 제1항에 있어서, 상기 객체는 웹 페이지인 방법.
- 객체 집합 내의 객체의 순위화를 용이하게 하는 컴퓨터 실행가능 명령어를 포함하는 컴퓨터 판독가능 매체에 있어서,상기 집합 내의 하나 이상의 객체는 상기 집합 내의 다른 객체로의 링크를 포함하고,상기 컴퓨터 실행가능 명령어는,상기 링크에 대해 상기 집합 내의 다른 객체로의 그 근접성에 따라 상기 객체를 순서화하는 단계; 및상기 객체의 순서화에 따라 메모리에 객체 간의 상기 링크를 저장하는 단계를 수행하는 컴퓨터 판독가능 매체.
- 제7항에 있어서,상기 객체 집합 및 링크는 제1 행렬에 의해 나타내어지고,상기 순서화하는 단계는,상기 제1 행렬에 대해 제2 행렬을 계산하는 단계;상기 제2 행렬의 제2 고유벡터의 근사치를 구하는 단계; 및상기 제2 고유벡터의 상기 근사값에 대해 상기 객체를 라벨화하는 단계를 포함하는 컴퓨터 판독가능 매체.
- 제8항에 있어서, 상기 제2 행렬은 각 객체에 대해 상기 각 객체에 링크된 객체와 관련된 값의 근사 평균을 계산하는 함수를 나타내는 컴퓨터 판독가능 매체.
- 제7항에 있어서, 상기 컴퓨터 판독가능 명령어는,상기 메모리에 저장된 상기 링크를 사용하여 상기 객체에 대해 순위를 계산하는 단계를 더 수행하는 컴퓨터 판독가능 매체.
- 제10항에 있어서, 순위를 계산하는 상기 단계는 상기 메모리로부터 최근에 액세스된 링크를 일시적으로 저장하기 위해 캐시를 사용하는 단계를 포함하는 컴퓨 터 판독가능 매체.
- 상호연결된 객체 집합으로부터 객체를 순서화하는 방법에 있어서,상기 객체의 상호연결은 제1 행렬에 의해 나타내어지고,상기 방법은,상기 제1 행렬에 대해 제2 행렬을 계산하는 단계;상기 제2 행렬의 제2 고유벡터의 근사치를 구하는 단계; 및상기 제2 고유벡터에 대한 상기 근사값에 대해 상기 객체를 순서화하는 단계를 포함하는 방법.
- 제12항에 있어서, 상기 객체는 웹 페이지인 방법.
- 제12항에 있어서, 상기 제2 행렬은 각 객체에 대해 상기 각 객체에 연결된 객체와 관련된 값의 근사 평균을 계산하는 함수를 나타내는 방법.
- 제12항에 있어서, 제2 고유벡터의 근사치를 구하는 상기 단계는,제1 벡터에 대한 초기 값을 선택하는 단계; 및이하의 단계들을 반복하는 단계를 포함하며, 상기 이하의 단계들은 종료 조건을 만족할 때까지제2 벡터를 획득하기 위해 제2 행렬에 상기 제1 벡터를 곱하는 단계;상기 제2 벡터의 등차중항을 구하는(centering) 단계; 및상기 제1 벡터의 값을 상기 제2 벡터의 값으로 대체하는 단계인 방법.
- 제15항에 있어서, 상기 제2 벡터의 등차중항을 구하는 상기 단계는 상기 제2 벡터의 엔트리의 평균이 0이 되도록 상기 제2 벡터의 각 엔트리에 고정값(a fixed amount)을 더하는 단계를 포함하는 방법.
- 제15항에 있어서, 상기 제2 벡터를 정규화하는(normalizing) 단계를 더 포함하는 방법.
- 상호연결된 객체 집합 내의 객체의 순서화를 용이하게 하는 컴퓨터 실행가능 명령어를 포함하는 컴퓨터 판독가능 매체에 있어서,상기 객체의 상호연결은 제1 행렬에 의해 나타내어지고,상기 컴퓨터 실행가능 명령어는,상기 제1 행렬에 대해 제2 행렬을 계산하는 단계;상기 제2 행렬의 제2 고유벡터의 근사치를 구하는 단계; 및상기 제2 고유벡터에 대한 상기 근사값에 대해 상기 객체를 순서화하는 단계를 수행하는 컴퓨터 판독가능 매체.
- 제18항에 있어서, 상기 객체는 웹 페이지인 컴퓨터 판독가능 매체.
- 제18항에 있어서, 상기 제2 행렬은 각 객체에 대해 상기 각 객체에 연결된 객체와 관련된 값의 근사 평균을 계산하는 함수를 나타내는 컴퓨터 판독가능 매체.
- 제18항에 있어서, 제2 고유벡터의 근사치를 구하는 상기 단계는,제1 벡터에 대한 초기 값을 선택하는 단계; 및이하의 단계들을 반복하는 단계를 포함하며, 상기 이하의 단계들은 종료 조건을 만족할 때까지제2 벡터를 획득하기 위해 제2 행렬에 상기 제1 벡터를 곱하는 단계;상기 제2 벡터의 등차중항을 구하는 단계; 및상기 제1 벡터의 값을 상기 제2 벡터의 값으로 대체하는 단계인 컴퓨터 판독가능 매체.
- 제21항에 있어서, 상기 제2 벡터의 등차중항을 구하는 상기 단계는, 상기 제2 벡터의 엔트리의 평균이 0이 되도록 상기 제2 벡터의 각 엔트리에 고정값(a fixed amount)을 더하는 단계를 포함하는 컴퓨터 판독가능 매체.
- 제18항에 있어서, 상기 객체는 복수의 서버를 포함하는 분산 컴퓨팅 시스템의 자원이고,상기 컴퓨터 판독가능 매체는,상기 복수의 서버사이에서 하나 이상의 상호연결된 자원의 할당을 더 용이하게 하고, 상기 순서화에 따라 상기 자원을 상기 복수의 서버에 할당하는 단계를 더 수행하는 컴퓨터 판독가능 매체.
- 상호연결된 객체 집합내의 객체의 순위화를 용이하게 하는 컴퓨터 실행가능 명령어를 포함하는 컴퓨터 판독가능 매체에 있어서,상기 상호연결의 설명이 상기 객체의 제1 순서화에 따라 메모리에 저장되고,상기 컴퓨터 실행가능 명령어는,상기 상호연결을 통해 다른 객체로의 근접성에 상관하여 상기 객체를 재순서화하는 단계를 수행하는 컴퓨터 판독가능 매체.
- 제24항에 있어서, 상기 컴퓨터 실행가능 명령어는,상기 객체의 상기 재순서화를 사용함으로써 상기 객체에 대한 순위를 계산하는 단계를 더 수행하는 컴퓨터 판독가능 매체.
- 제25항에 있어서, 상기 계산 단계는 상기 메모리로부터 최근에 액세스된 상호연결 설명 정보를 일시적으로 저장하기 위해 캐시를 사용하는 것을 포함하는 컴 퓨터 판독가능 매체.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/903,345 US7379947B2 (en) | 2004-07-30 | 2004-07-30 | Efficiently ranking web pages via matrix index manipulation and improved caching |
US10/903,345 | 2004-07-30 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20060048940A true KR20060048940A (ko) | 2006-05-18 |
Family
ID=34940328
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020050069559A KR20060048940A (ko) | 2004-07-30 | 2005-07-29 | 효율적으로 페이지 순위를 계산하는 방법 및 시스템 |
Country Status (5)
Country | Link |
---|---|
US (1) | US7379947B2 (ko) |
EP (1) | EP1622047A3 (ko) |
JP (1) | JP2006065855A (ko) |
KR (1) | KR20060048940A (ko) |
CN (1) | CN1737803A (ko) |
Families Citing this family (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100913256B1 (ko) * | 2005-04-14 | 2009-08-24 | 에스케이커뮤니케이션즈 주식회사 | 다중 링크를 형성하는 정보 네트워크에서 링크 관계에 따른대상 평가 방법 |
US20070266025A1 (en) * | 2006-05-12 | 2007-11-15 | Microsoft Corporation | Implicit tokenized result ranking |
US8301728B2 (en) * | 2006-07-21 | 2012-10-30 | Yahoo! Inc. | Technique for providing a reliable trust indicator to a webpage |
KR20090050086A (ko) * | 2006-09-11 | 2009-05-19 | 인터내셔널 비지네스 머신즈 코포레이션 | 내비게이션 동안의 사용자 지원 방법, 웹 애플리케이션 서버 컴퓨터 시스템, 컴퓨터 판독가능 저장 매체 |
US8510349B1 (en) * | 2006-12-06 | 2013-08-13 | Zillow, Inc. | Multi-faceted search |
US7877384B2 (en) * | 2007-03-01 | 2011-01-25 | Microsoft Corporation | Scoring relevance of a document based on image text |
US7840522B2 (en) * | 2007-03-07 | 2010-11-23 | Microsoft Corporation | Supervised rank aggregation based on rankings |
US20080228719A1 (en) * | 2007-03-13 | 2008-09-18 | Fatdoor, Inc. | People and business search result optimization |
US7788254B2 (en) * | 2007-05-04 | 2010-08-31 | Microsoft Corporation | Web page analysis using multiple graphs |
US8024285B2 (en) * | 2007-12-27 | 2011-09-20 | Microsoft Corporation | Determining quality of tier assignments |
US7818303B2 (en) * | 2008-01-29 | 2010-10-19 | Microsoft Corporation | Web graph compression through scalable pattern mining |
US20100036809A1 (en) * | 2008-08-06 | 2010-02-11 | Yahoo! Inc. | Tracking market-share trends based on user activity |
US8250069B2 (en) | 2008-10-14 | 2012-08-21 | University Of Washington | Green's function formulations for pagerank algorithm using helmholtz wave equation representations of internet interactions |
US8311792B1 (en) * | 2009-12-23 | 2012-11-13 | Intuit Inc. | System and method for ranking a posting |
US20120203592A1 (en) * | 2011-02-08 | 2012-08-09 | Balaji Ravindran | Methods, apparatus, and articles of manufacture to determine search engine market share |
US9405923B2 (en) * | 2011-09-29 | 2016-08-02 | Red Hat, Inc. | Establishing isolation between content hosting services executing on common support server |
US8799296B2 (en) * | 2012-02-23 | 2014-08-05 | Borislav Agapiev | Eigenvalue ranking of social offerings using social network information |
JP5964781B2 (ja) * | 2013-05-20 | 2016-08-03 | 日本電信電話株式会社 | 検索装置、検索方法および検索プログラム |
CN103399859A (zh) * | 2013-07-02 | 2013-11-20 | 北京奇虎科技有限公司 | 网页权威值的计算方法、装置及系统 |
CN106033465B (zh) * | 2015-03-19 | 2019-09-17 | 阿里巴巴集团控股有限公司 | 一种信息推送方法和装置 |
US9898544B2 (en) * | 2016-02-18 | 2018-02-20 | Eshaa Alkhalifa | Guided web navigation tool |
US11023421B1 (en) * | 2017-12-07 | 2021-06-01 | Liberty Mutual Insurance Company | Method, apparatus, and computer program product for compression of a graph |
CN111538714B (zh) * | 2020-04-24 | 2023-10-17 | 咪咕文化科技有限公司 | 一种指令执行方法、装置、电子设备和存储介质 |
CN111796796B (zh) * | 2020-06-12 | 2022-11-11 | 杭州云象网络技术有限公司 | 基于稀疏矩阵乘法的fpga存储方法、计算方法、模块和fpga板 |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2691559B1 (fr) | 1992-05-25 | 1997-01-03 | Cegelec | Systeme logiciel a objets repliques exploitant une messagerie dynamique, notamment pour installation de controle/commande a architecture redondante. |
US6198390B1 (en) | 1994-10-27 | 2001-03-06 | Dan Schlager | Self-locating remote monitoring systems |
JPH0927811A (ja) | 1995-07-13 | 1997-01-28 | Fujitsu Ltd | 輻輳監視制御装置 |
AU3567997A (en) | 1996-07-05 | 1998-02-02 | Paulo Correa | Controller-based radio frequency amplifier module and method |
US6285999B1 (en) * | 1997-01-10 | 2001-09-04 | The Board Of Trustees Of The Leland Stanford Junior University | Method for node ranking in a linked database |
CA2219557C (en) | 1997-10-29 | 2002-12-10 | Ibm Canada Limited-Ibm Canada Limitee | Run-time instrumentation for object oriented programmed applications |
US6122628A (en) * | 1997-10-31 | 2000-09-19 | International Business Machines Corporation | Multidimensional data clustering and dimension reduction for indexing and searching |
US6324619B1 (en) | 1998-03-27 | 2001-11-27 | Sony Corporation Of Japan | Process and system for managing run-time adaptation for general purpose distributed adaptive applications |
US6216237B1 (en) | 1998-06-19 | 2001-04-10 | Lucent Technologies Inc. | Distributed indirect software instrumentation |
US6473791B1 (en) | 1998-08-17 | 2002-10-29 | Microsoft Corporation | Object load balancing |
US6295643B1 (en) | 1998-12-10 | 2001-09-25 | International Business Machines Corporation | Method and apparatus for improving java virtual machine performance using persistent execution information |
US6631409B1 (en) | 1998-12-23 | 2003-10-07 | Worldcom, Inc. | Method and apparatus for monitoring a communications system |
US6466980B1 (en) | 1999-06-17 | 2002-10-15 | International Business Machines Corporation | System and method for capacity shaping in an internet environment |
US6560600B1 (en) * | 2000-10-25 | 2003-05-06 | Alta Vista Company | Method and apparatus for ranking Web page search results |
GB2368747B (en) * | 2000-10-31 | 2004-12-29 | Daniel Victor Pavin | Method and system for determining the popularity of a subject |
US7188106B2 (en) * | 2001-05-01 | 2007-03-06 | International Business Machines Corporation | System and method for aggregating ranking results from various sources to improve the results of web searching |
US7167910B2 (en) * | 2002-02-20 | 2007-01-23 | Microsoft Corporation | Social mapping of contacts from computer communication information |
US7177880B2 (en) * | 2002-12-19 | 2007-02-13 | International Business Machines Corporation | Method of creating and displaying relationship chains between users of a computerized network |
-
2004
- 2004-07-30 US US10/903,345 patent/US7379947B2/en not_active Expired - Fee Related
-
2005
- 2005-07-29 KR KR1020050069559A patent/KR20060048940A/ko not_active Application Discontinuation
- 2005-07-29 CN CNA2005101098563A patent/CN1737803A/zh active Pending
- 2005-07-29 EP EP05107029A patent/EP1622047A3/en not_active Withdrawn
- 2005-08-01 JP JP2005223308A patent/JP2006065855A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
EP1622047A2 (en) | 2006-02-01 |
US20060026191A1 (en) | 2006-02-02 |
JP2006065855A (ja) | 2006-03-09 |
US7379947B2 (en) | 2008-05-27 |
CN1737803A (zh) | 2006-02-22 |
EP1622047A3 (en) | 2006-03-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7379947B2 (en) | Efficiently ranking web pages via matrix index manipulation and improved caching | |
Zhang et al. | Towards personalized and semantic retrieval: An end-to-end solution for e-commerce search via embedding learning | |
US7464075B2 (en) | Personalization of web page search rankings | |
US10452691B2 (en) | Method and apparatus for generating search results using inverted index | |
US8745039B2 (en) | Method and system for user guided search navigation | |
JP4246623B2 (ja) | パーティションが設けられたデータベースオブジェクトに対する照会の応答時間を改善するための方法およびシステム | |
US8655805B2 (en) | Method for classification of objects in a graph data stream | |
US10706103B2 (en) | System and method for hierarchical distributed processing of large bipartite graphs | |
AU2010343183B2 (en) | Search suggestion clustering and presentation | |
US8762383B2 (en) | Search engine and method for image searching | |
US20060287988A1 (en) | Keyword charaterization and application | |
RU2387005C2 (ru) | Способ и система ранжирования объектов на основе отношений внутри типа и между типами | |
US20060085395A1 (en) | Dynamic search criteria on a search graph | |
US20110055238A1 (en) | Methods and systems for generating non-overlapping facets for a query | |
US20110179002A1 (en) | System and Method for a Vector-Space Search Engine | |
US20110016065A1 (en) | Efficient algorithm for pairwise preference learning | |
Saygin et al. | Exploiting data mining techniques for broadcasting data in mobile computing environments | |
CN111259220B (zh) | 一种基于大数据的数据采集方法和系统 | |
Ben-Shimon et al. | An ensemble method for top-N recommendations from the SVD | |
Kaur et al. | SIMHAR-smart distributed web crawler for the hidden web using SIM+ hash and redis server | |
US7512587B2 (en) | Efficient computation of web page rankings | |
Li | [Retracted] Internet Tourism Resource Retrieval Using PageRank Search Ranking Algorithm | |
US8849830B1 (en) | Delivering search results | |
CN110110184B (zh) | 信息查询方法、系统、计算机系统及存储介质 | |
Siddiqa et al. | On the analysis of big data indexing execution strategies |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
WITN | Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid |