KR20100068382A - 부분 입력된 서치 쿼리에 대한 자동완성 및 입력 방법 자동 변환 - Google Patents

부분 입력된 서치 쿼리에 대한 자동완성 및 입력 방법 자동 변환 Download PDF

Info

Publication number
KR20100068382A
KR20100068382A KR1020107005258A KR20107005258A KR20100068382A KR 20100068382 A KR20100068382 A KR 20100068382A KR 1020107005258 A KR1020107005258 A KR 1020107005258A KR 20107005258 A KR20107005258 A KR 20107005258A KR 20100068382 A KR20100068382 A KR 20100068382A
Authority
KR
South Korea
Prior art keywords
queries
language
query
search query
partial search
Prior art date
Application number
KR1020107005258A
Other languages
English (en)
Other versions
KR101533570B1 (ko
Inventor
김도형
Original Assignee
구글 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 구글 인코포레이티드 filed Critical 구글 인코포레이티드
Publication of KR20100068382A publication Critical patent/KR20100068382A/ko
Application granted granted Critical
Publication of KR101533570B1 publication Critical patent/KR101533570B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/274Converting codes to words; Guess-ahead of partial word inputs
    • 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/332Query formulation
    • G06F16/3322Query formulation using system suggestions

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

쿼리 정보를 프로세싱하기 위한 방법은 서치 요청자로부터 부분 서치 쿼리를 수신하는 단계 및 상기 부분 서치 쿼리에 상응하는 예측된 완성 쿼리들의 세트를 이전에 제출된 복수의 완성 쿼리들로부터 획득하는 단계를 포함하고, 이전에 제출된 완성 쿼리들은 사용자들의 커뮤니티에 의해 제출된다. 상기 예측된 완성 쿼리들의 세트는 영어 및 한국어 완성 서치 쿼리들을 포함한다. 예측된 완성 쿼리들의 세트는 랭킹 기준에 따라 순서화되고, 순서화된 세트이 적어도 서브세트는 서치 요청자에 보내진다. 부분 서치 쿼리는 부분 한국어 서치 쿼리의 로마자 표시일 수 있다.

Description

부분 입력된 서치 쿼리에 대한 자동완성 및 입력 방법 자동 변환{AUTOCOMPLETION AND AUTOMATIC INPUT METHOD CORRECTION FOR PARTIALLY ENTERED SEARCH QUERY}
[0001]개시된 실시예는 컴퓨터 네트워크(예, 컴퓨터 시스템들의 분산 시스템)에서 문서를 찾기 위한 서치 엔진들, 특히 사용자의 요청을 예상하여 목표된 서치의 속도를 향상시키기 위한 시스템 및 방법에 관한 것이다.
[0002] 서치 엔진들은 월드 와이드 웹(WWW)상에서 문서 또는 인트라넷 컴퓨터들 상에 저장된 문서와 같이, 큰 데이터베이스의 문서들에서 문서를 찾기 위한 강력한 툴을 제공한다. 문서는 사용자에 의해 제출된(submitted) 서치 쿼리에 응답하여 위치를 찾게 된다. 서치 쿼리는 하나 이상의 검색어들(search terms)로 구성될 수 있다.
[0003] 쿼리들을 입력하는 하나의 접근 방법에서, 사용자는 모든 검색어가 입력될 때까지 연속적인 검색어를 추가하여 쿼리를 입력한다. 사용자가 모든 검색어의 쿼리가 입력되었다는 신호를 주면, 쿼리는 서치 엔진에 전송된다. 아래에 기술된 본 발명의 실시예는 쿼리들을 입력하는 다른 접근 방법을 사용한다. 이러한 새로운 접근에서, 부분 쿼리는 사용자가 쿼리의 완성을 지시하기 전에 서치 엔진에 전송된다. 서치 엔진은 사용자에 제공된 예측된 쿼리들 리스트(list of predicted queries)를 발생시킨다. 사용자는 예측된 쿼리들의 순서화된 리스트로부터 선택할 수 있거나, 사용자 특정 쿼리(user specified query)를 계속하여 입력할 수 있다.
[0004] 아래에 기술된 소정의 실시예에 따라, 서버에서 수행되는 쿼리 정보를 프로세싱하기 위한 방법은 서치 요청자로부터 부분 서치 쿼리를 수신하는 단계를 포함하고 서치 요청자는 서버로부터 원격에 위치된다. 상기 방법은 부분 서치 쿼리에 상응하는 예측된 완성 쿼리들의 세트를 이전에 제출된 복수의 완성 쿼리들로부터 획득하는 단계를 더 포함하고, 상기 이전에 제출된 완성 쿼리들은 사용자들의 커뮤니티의 사용자에 의해 제출된다. 예측된 완성 쿼리들의 세트가 제 1 언어 및 제 2 언어 양쪽의 완성 서치 쿼리들을 포함한다. 추가적으로 상기 방법은 예측된 완성 쿼리들의 세트를 랭킹 기준에 따라 순서화하는 단계, 및 상기 순서화된 세트의 적어도 서브세트를 서치 요청자에 전달하는 단계를 포함한다.
[0005] 소정의 실시예에 따라, 클라이언트에서 수행되는 쿼리 정보를 프로세싱하기 위한 방법은 서치 요청자로부터 부분 서치 쿼리를 수신하는 단계를 포함한다. 상기 방법은 이전에 제출된 복수의 완성 쿼리들로부터 상기 부분 서치 쿼리에 상응하는 예측된 완성 쿼리들의 세트를 획득하는 단계를 더 포함하고, 여기서 이전에 제출된 완성 쿼리들은 사용자들 커뮤니티에 의해 제출된다. 상기 예측된 완성 쿼리들의 세트가 제 1 언어 및 제 2 언어의 완성 서치 쿼리들 양쪽을 포함하고 랭킹 기준에 따라 순서화된다. 추가적으로 상기 방법은 상기 서치 요청자에게 순서화된 세트의 적어도 서브세트를 디스플레이하는 단계를 포함한다.
[0006] 소정의 실시예에 따라, 쿼리 정보를 프로세싱하기 위한 데이터 구조를 구축하기 위한 방법은 이전에 제출된 완성 제 1 언어 쿼리들의 세트를 획득하는 단계를 포함하고, 여기서 완성 제 1 언어 쿼리들은 사용자들의 커뮤니티에 의해 이전에 제출되었다. 상기 방법은 이전에 제출된 완성 제 2 언어 쿼리들의 세트를 획득하는 단계를 포함하고, 여기서 완성 제 2 언어 쿼리들은 사용자들의 커뮤니티에 의해 이전에 제출되었다. 추가적으로, 상기 방법은 완성 제 1 언어 쿼리들의 세트를 제 2 언어의 문자들을 사용하는 표시로 환전 제 1 언어 쿼리들의 세트로 변환하며, 상기 완성 제 2 언어 쿼리들 및 변환된 완성 제 1 언어의 세트들을 하나 이상의 쿼리 완성 데이터 테이블들에 저장하는 단계를 포함한다. 상기 하나 이상의 쿼리 완성 데이터 테이블들은 제 1 언어 부분 쿼리들 또는 제 2 언어 부분 쿼리들 중 한쪽에 상응하는 제 1 언어 및 제 2 언어 완성 쿼리들 양쪽을 예측하도록 사용될 수 있는 하나 이상의 데이터 구조들을 형성한다.
[0007] 소정의 실시예에서, 쿼리 정보를 프로세싱하기 위한 시스템은 프로그램 실행을 위한 하나 이상의 중앙 프로세싱 유닛들, 및 상기 하나 이상의 중앙 프로세싱 유닛들에 의해 실행될 하나 이상의 프로그램들을 저장하고 데이터를 저장할 메모리를 포함한다. 상기 프로그램은 서치 요청자로부터 부분 서치 쿼리를 수신하기 위한 명령을 포함하고, 상기 서치 요청자는 서버로부터 원격에 위치된다. 상기 프로그램은 부분 서치 쿼리에 상응하는 예측된 완성 쿼리들의 세트를 이전에 제출된 복수의 완성 쿼리들로부터 획득하기 위한 명령을 더 포함하고, 상기 이전에 제출된 완성 쿼리들은 사용자들의 커뮤니티에 의해 제출된다. 예측된 완성 쿼리들의 세트응 제 1 언어 및 제 2 언어 완성 서치 쿼리들 양쪽을 포함한다. 추가적으로, 프로그램들은 예측된 완성 쿼리들의 세트를 랭킹 기준에 따라 순서화하기 위한 명령, 및 순서화된 세트의 적어도 서브세트를 상기 서치 요청자에 전달하는 명령들을 더 포함한다.
[0008] 소정의 실시예에서, 클라이언트 시스템은 프로그램 실행을 위한 하나 이상의 중앙 프로세싱 유닛들, 및 하나 이상의 중앙 프로세싱 유닛들에 의해 실행될 하나 이상의 프로그램들을 저장하고 데이터를 저장할 메모리를 포함하며 프로그램들은 서치 요청자로부터 부분 서치 쿼리를 수신하기 위한 명령을 포함한다. 상기 프로그램은 상기 부분 서치 쿼리에 상응하는 예측된 완성 쿼리들의 세트를 이전에 제출된 복수의 완성 쿼리들로부터 획득하기 위한 명령을 더 포함하고, 여기서 이전에 제출된 완성 쿼리들은 사용자들의 커뮤니티에 의해 제출된다. 상기 예측된 완성 쿼리들의 세트는 제 1 언어 및 제 2 언어 완성 서치 쿼리들을 포함하며 랭킹 기준에 따라 순서화된다. 추가적으로 상기 순서화된 세트의 적어도 서브세트를 서치 요청자에 디스플레이하기 위한 명령들을 더 포함한다.
[0009] 소정의 실시예에서, 컴퓨터 판독 가능 저장 매체(computer readable-storage medium)는 각각의 서버 시스템의 하나 이상의 프로세서들에 의한 실행을 위한 하나 이상의 프로그램들을 저장한다. 상기 하나 이상의 프로그램들은 서버로부터 원격에 위치하는 서치 요청자로부터 부분 서치 쿼리를 수신하기 위한 명령들을 포함한다. 하나 이상의 프로그램들은 부분 서치 쿼리에 상응하는 예측된 완성 쿼리들의 세트를 이전에 제출된 복수의 완성 쿼리들로부터 획득하기 위한 명령을 더 포함하고, 상기 이전에 제출된 완성 쿼리들은 사용자들의 커뮤니티에 의해 제출되었다. 예측된 완성 쿼리들의 세트는 제 1 언어 및 상기 제 1 언어 완성 서치 쿼리들 양쪽을 포함한다. 추가적으로, 하나 이상의 프로그램들은 예측된 완성 쿼리들을 랭킹 기준에 따라 순서화하기 위한 명령, 및 상기 순서화된 세트의 적어도 서브세트를 상기 서치 요청자에 전달하는 명령들을 포함한다.
[0010] 소정의 실시예에서, 컴퓨터 판독 가능 스토리지 매체는 각각의 클라이언트 장치 또는 시스템의 하나 이상의 프로세서들에 의한 실행을 위한 하나 이상의 프로그램들을 저장한다. 하나 이상의 프로그램들은 서치 요청자로부터 부분 서치 쿼리를 수신하기 위한 명령들을 포함한다. 상기 하나 이상의 프로그램들은 상기 부분 서치 쿼리에 상응하는 예측된 완성 쿼리들의 세트를 이전에 제출된 복수의 완성 쿼리들로부터 획득하기 위한 명령을 더 포함하고, 이전에 제출된 완성 쿼리들은 사용자들의 커뮤니티에 의해 제출되었다. 예측된 완성 쿼리들의 세트는 제 1 언어 및 제 2 언어 완성 서치 쿼리들 양쪽을 포함하며 랭킹 기준에 따라 순서화된다. 추가적으로 상기 하나 이상의 프로그램들은 서치 요청자에 상기 순서화된 세트의 적어도 서브세트를 디스플레이하는 명령을 포함한다.
[0011] 통합 솔루션은 자동적으로 입력 방법 수정을 제공하는 반면 미완성 한국어 문자 엔트리를 유지하기 때문에 한국어 쿼리 예측들에 대한 특정 어플리케이션을 갖는다.
[0012] 상기 기술된 본 발명의 실시예와 추가적인 실시예는 도면을 참조하여 후술하는 본 발명의 다양한 양태들의 상세한 설명의 결과로서 더 명확하게 이해될 것이다. 유사한 도면 부호는 도면의 소정의 보기에 걸쳐 상응하는 부분들로 지칭된다.
도 1은 소정의 실시예에 따른 서치 시스템의 블록 다이어그램이다.
도 2는 소정의 실시예에 따른 데이터 구조를 생성하고 사용하는 것과 관계된 정보의 흐름을 도시한 개념 다이어그램이다.
도 3A는 소정의 실시예에 따른 부분 쿼리를 프로세싱하는 방법의 순서도이다.
도 3B는 소정의 실시예에 따른, 클라이언트 시스템 또는 장치에서 서치 어시스턴트에 의해 수행된 프로세스의 순서도이다.
도 4A 및 도 4B는 한국어 문자들 및 한국어 문자들의 로마자 표현 사이의 변환을 위한 문자 맵을 도시한다.
도 5는 소정의 실시예에 따라 한국어 문자의 스트링을 로마자 표현으로 변환하기 위한 프로세스의 순서도이다.
도 6은 소정의 실시예에 따라 입력 스트링에 상응하는 예측된 완성 쿼리들의 예시이다.
도 7은 소정의 실시예에 따라 히스토릭컬 쿼리들을 프로세싱하기 위한 프로세스를 도시한다.
도 8은 소정의 실시예에 따라 히스토릭컬 서치 쿼리들의 세트에서 완성된 서치 쿼리들의 두가지 예시에 상응하는 부분 서치 쿼리들을 도시한다.
도 9는 소정의 실시예에 따라, 수신된 부분 쿼리에 상응하는 쿼리 완성을 식별하기 위한 프로세스의 개념도이다.
도 10은 소정의 실시예에 따른 두 개의 예시적 쿼리 완성 테이블의 부분도이다.
도 11은 소정의 실시예에 따른 클라이언트 시스템의 블록 다이어그램이다.
도 12는 소정의 실시예에 따른 서버 시스템의 블록 다이어그램이다.
도 13은 소정의 실시예에 따른 웹브라우저 또는, 사용자-제공 부분 쿼리에 상응하는 영어 및 한국어 예측 완성 쿼리들을 리스트한 다른 사용자 인터페이스에 표시된 웹 페이지, 웹 브라우저 스크린 샷의 개략도이다.
[0027] 도 1은 본 발명의 실시예의 실행에 적절한 시스템(100)을 도시한다. 분산 시스템 및 그것의 다양한 기능적 요소들(functional components)에 관한 추가적인 세부 사항은 공동 출원되고, 함께 양도되며 2004년 11월 11일에 출원된 미국 실용 특허 출원 일련 번호 10/987,295, "랭크된 결과를 이용하는 자동완성을 위한 방법 및 시스템(Method and System for Autocompletion Using Ranked Results)", 및 2004년 11월 12일에 제출된 일련 번호 10/987,769,"표의 및 표음 문자를 갖는 언어용 자동 완성을 위한 방법 및 시스템(Method and System for Autocompletion for Languages Having Ideographs and Phonetic Characters)"에서 제공되며, 여기의 내용들은 전체적으로 본 발명에의해 참조된다. 시스템(100)은 서치 엔진(108)로부터 원거리에 위치되는 하나 이상의 클라이언트 시스템 또는 장치(102)를 포함할 수 있다. 때때로 클라이언트 또는 클라이언트 장치로 지칭되는 각각의 클라이언트 시스템(102)은 데스크톱 컴퓨터, 랩톱 컴퓨터, 키오스크(kiosk), 휴대폰, 개인 디지털 어시스턴트, 등일 수 있다. 통신 네트워크(106)는 서치 엔진(108)에 클라이언트 시스템 또는 장치(102)에 연결된다. (또한 여기서 서치 요청자로 지칭되는) 사용자가 클라이언트 시스템(102)에 쿼리를 입력할 때, 사용자가 완전한 쿼리를 끝내기 전에 서치 어시스턴트(104)는 서치 엔진(108)에 사용자의 부분 쿼리의 적어도 일부분을 전송한다. 서치 엔진(108)은 사용자의 마지막 완성 쿼리를 예측하기 위해 부분 쿼리의 전송된 부분을 사용한다. 이러한 예측은 사용자에 다시 전송된다. 예측들 중 하나가 사용자의 목표된 쿼리이면, 그 다음에 사용자는 쿼리의 엔트리를 완성해야 하는 것 없이 예측된 쿼리를 선택할 수 있다.
[0028] 본 발명에서 더 상세히 기술하면, 서치 시스템(searching system; 100) 및 그 기능 요소는 통합된 방식으로 다중 언어로 부분 쿼리들을 처리하도록 구성되었다. 서치 시스템(100)은 서치 어시스턴트(104)에 의해 서치 엔진(108)에 전송된 부분 쿼리의 언어 코딩에 관계없이, 클라이언트 시스템(102)에 사용자의 실제 입력에 기초한 예측된 쿼리를 제공하도록 구성되었다. 이것은 예를 들어 사용자가 클라이언트 시스템(102)에 세팅된 부정확한 입력 시스템(input method editor)를 이용하여 부분 쿼리를 입력하는 곳에서 특히 유용하다.
[0029] 서치 엔진(108)은 쿼리 서버(110)를 포함하고, 이는 부분 쿼리들을 수신하고 프로세싱하며 예측 서버(prediction server; 112)에 부분 쿼리들을 포워딩하는 모듈(120)을 갖는다. 예측 서버(112)는 수신된 부분 쿼리에 상응하는 예측된 완성 쿼리들을 발생시키는 것을 담당한다. 예측 서버(112)는 예비 프로세싱 단계(pre-processing phase) 동안 순서화 세트 빌더(ordered set builder; 142)에 의해 구축된 데이터 구조에 의존한다. 순서화 세트 빌더(142)는 상이한 언어(124, 126)로 쿼리 로그들을 이용하여 데이터 구조들을 구축한다. 순서화 세트 빌더(142)에 의해 수행된 예비 프로세싱의 실시예가 도 2에 도시된다. 예측 서버(112)에 의해 수행된 프로세싱의 실시예가 도 3A에 도시한다. 소정의 실시예에서, 추가적으로, 쿼리 서버(110)는 완성된 서치 쿼리들을 수신하고 쿼리 프로세싱 모듈(114)에 완성된 서치 쿼리들을 포워딩한다.
[0030] 도 2를 참조하여, 두 개의 쿼리 로그가 도식적으로 제공된다: 제 1 언어의 쿼리 로그(201) 및 제 2 언어의 쿼리 로그(202). 쿼리 로그들(201, 202)은 일정 기간 동안 사용자들의 커뮤니티로부터 서치 엔진에 의해 수신된 각각의 언어로 이전에 제출된 쿼리들의 로그를 포함한다. 선택적으로, 쿼리 로그(201)로 쿼리들을 제출했던 사용자들의 커뮤니티는 쿼리 로그(202)로 쿼리들을 제출했던 사용자들의 커뮤니티와 상이할 수 있고, 이러한 경우에 전술된 "사용자들의 커뮤니티(community of users)"는 둘 이상의 사용자들의 커뮤니티를 포함한다. 쿼리 로그들(201, 202)에서 각각의 쿼리 엔트리는 쿼리가 얼마나 많은 시간동안 제출되었는지를 지시하는 사용 빈도수(frequency information)와 같은 메타 정보를 포함할 수 있다. 각각의 쿼리 로그들(201, 202)은 예를 들어 이의가 있고, 문화적으로 민감하고, 기타 동류의 것으로 고려될 수 있는 단어와 같이, 하나 이상의 미리 정해진 세트의 용어들(set of terms)과 매칭되는 쿼리들을 배제하기 위해, 하나 이상의 언어 특정 필터들(204, 205)에 의해 필터링될 수 있다. 제 2 언어의 쿼리 로그(202)의 쿼리들은 그들의 존재하는 형태로 활용된다. 그러나 제 1 언어의 쿼리 로그(201)의 쿼리들은 250에서 제 2 언어의 표시(representation)로 변환된다. 제 2 언어로 세팅된 입력 방법을 사용하는 동안 제 2 언어의 표시는 제 1 언어로 쿼리를 입력하려고 시도하는 사용자에 의해 발생된 제 2 언어의 문자들에 상응한다. 아래에 더 상세히 기술하면, 예를 들어 한국어와 같은 언어의 쿼리들은 영어로 부정확하게 세팅된 입력 시스템을 이용하는 한국어 쿼리들을 입력하는 것과 상응하는 영숫자 키보드 상에 키스트로크에 의해 표시될 수 있다. 그러나 다른 실시예에서 제 1 언어는 한국어일 필요없고, 대신 일본어, 중국어, 또는 임의의 다수의 다른 언어들일 수 있다. 유사하게, 제 2 언어는 영어일 필요없고, 대신 프랑스어, 독일어, 스페인어, 러시아어 또는 임의의 다수의 다른 언어들일 수 있다. 필터링된 쿼리 로그(202) 및 필터링된 쿼리 로그(201)의 변환의 출력은 순서화 세트 빌더(208)에 의해 조합되어 함께 활용될 수 있다. 순서화 세트 빌더(208)는 하나 이상의 조합된 데이터 구조들, 즉 양쪽 언어로 부분 쿼리들을 프로세싱하도록 사용될 수 있는 조합된 데이터 구조(들)를 생성한다.
[0031] 순서화 세트 빌더(208)는 하나 이상의 쿼리 완성 테이블들(212)을 구축한다. 아래에 더 상세하게 기술하면, 하나 이상의 쿼리 완성 테이블들(212)은 제 1 및 제 2 양쪽의 언어에 대한 예측들을 발생시키도록 사용된다. 쿼리 완성 테이블들(212)의 각각의 엔트리는 쿼리 스트링 및 추가적인 정보를 저장한다. 추가적인 정보는 쿼리 로그들에 쿼리의 빈도, 쿼리가 사용자들 커뮤니티에서 사용자들에 의해 제출되었던 때의 날짜/시간 값들, 및/또는 다른 인자들에 기초할 수 있는 랭킹 점수를 포함한다. 쿼리에 대한 추가적인 정보는 완성 서치 쿼리의 언어를 지시하는 값을 선택적으로 포함한다. 각각의 쿼리 완성 테이블(212)의 각각의 엔트리는 부분 쿼리에 대한 예측된 완성 쿼리를 표시한다. 도 9를 참조하여 아래에 기술된 바와 같이, 소정의 실시예에서 수신된 부분 쿼리는 두개의 부분으로 분할된다: 프리픽스부(prefix portion) 및 서픽스부(suffix portion). 더욱이, 소정의 실시예에서 동일한 프리픽스에 대한 예측된 완성 쿼리들의 그룹은 빈도 또는 점수에 의해 정렬된 쿼리 완성 테이블(212)에 저장된다. 선택적으로, 쿼리 완성 테이블(212)은 상응하는 부분 서치 쿼리들의 쿼리 핑거프린트들(query fingerprints)에 의해 인덱싱되고, 여기서 각각의 부분 서치 쿼리의 쿼리 핑거프린트는 부분 서치 쿼리 또는 부분 서치 쿼리의 프리픽스 중 하나에 해쉬 함수(또는 다른 핑거프린트 함수)를 적용하는 것에 의해 발생된다. 선택적으로, 쿼리 핑거프린트들은 빠른 룩업을 위해 핑거프린트 대 테이블 맵(fingerprint to Table Map; 210)에 저장된다.
[0032] 소정의 실시예에서, 제 1 언어의 예측된 완성 쿼리들(예, 한국어, 일본어, 중국어, 등)은 제 2 언어(예, 영어, 스페인어, 프랑스어, 독일어, 러시아어, 등)의 문자들을 사용하는 변환된 표시(예, 로마자로 된 표시)로 하나 이상의 쿼리 완성 테이블(212)에 저장된다. 따라서, 이러한 실시예에서, 순서화 세트 빌더(208)는 완성된 제 2 언어(예, 영어) 쿼리들 및 완성된 제 1 언어(예, 한국어) 쿼리들의 세트들을 하나 이상의 쿼리 완성 데이터 테이블들(212)에 그들의 변환된 표시로 저장한다. 그럼에도 불구하고, 쿼리 완성 테이블(212)의 예측된 완성 쿼리들은 쿼리 로그(201)에 원래의 쿼리 언어로 사용자에 표시되어 디스플레이된다. 그러나, 다른 실시예에서, 제 1 언어의 쿼리들이 상응하는 부분 서치 쿼리들의 변환된 표시에 해쉬 함수(또는 다른 핑커프린트 함수)를 적용하는 것에 의해 식별되는 쿼리 함수 테이블들에 저장된다 할지라도, 예측된 완성 쿼리들은 이들의 원래 언어들로 하나 이상의 쿼리 완성 테이블들(212)에 저장된다.
[0033] 도 3A를 참조하여, 사용자가 서치 쿼리를 입력하면, 사용자의 입력은 클라이언트 시스템(102)에 의해 모니터링된다(308). (때때로 요청자로 지칭되는)사용자가 서치 쿼리의 완성을 신호하기에 앞서, 사용자 쿼리의 적어도 일부가 클라이언트 시스템으로부터 서치 엔진(304)에 보내진다(310). 쿼리의 일부는 몇 개의 문자들, 검색어, 또는 하나 이상의 검색어일 수 있다. 부분 쿼리는 제 1 또는 제 2 언어 중 하나로 입력될 수 있음을 유의한다.
[0034] 서치 엔진(304)은 프로세싱(312)을 위한 부분 서치 쿼리를 수신하고 사용자의 계획된 완성 쿼리에 대해 계속해서 예측한다(313). 우선, 서치 엔진(304)은 부분 쿼리가 제 1 또는 제 2 언어로 인코딩되는지 결정한다(314). 부분 쿼리가 제 1 언어로 인코딩된다면, 그 다음에 서치 엔진(304)은 속행하기 전에 부분 쿼리를 제 2 언어의 상기 기술된 표시로 변환한다(316). 부분 쿼리가 제 2 언어로 인코딩된다면, 그 다음에 서치 엔진(304)은 부분 쿼리를 처리하는 것을 직접 속행한다. 그 다음에 서치 엔진(304)은 핑거프린트(320)를 생성하기 위해 해쉬 함수(또는 다른 핑거프린트 함수)(318)를 적용한다. 서치 엔진(304)은 부분 쿼리에 상응하는 쿼리 완성 테이블(212)을 찾기 위해 핑거프린트(320) 및 핑거프린트-대-테이블 맵(210)을 이용하여 룩업 작업(322)을 수행한다. 룩업 작업은 부분 쿼리의 핑거프린트(320)와 매칭하는 핑커프린트에 대한 핑거프린트-대-테이블 맵(210)을 서치하는 것을 포함한다. 매칭이 발견될 때, 핑거프린트-대-맵(210)의 상응하는 엔트리는 쿼리 완성 테이블(또는, 대안적으로, 다중 부분 쿼리들을 위한 엔트리를 갖는 쿼리 완성 테이블의 엔트리 세트)을 식별한다. 아래에 더 상세하게 기술된 바와 같이, 쿼리 완성 테이블(212)은 부분 쿼리에 매칭되거나 상응하는 복수의 엔트리들을 포함할 수 있고, 핑거프린트-대-맵(210)은 쿼리 완성 테이블, 또는 이러한 엔트리들의 첫번째(또는 마지막)를 찾기 위해 사용된다. 룩업 작업(322)은 수신된 부분 서치 쿼리에 상응하는 예측된 완성 쿼리들의 세트를 생산한다.
[0035] 쿼리 완성 테이블의 각각의 엔트리는 예측된 완성 쿼리에 대한 빈도 또는 점수와 같은 예측된 완성 쿼리 및 다른 정보를 포함한다. 서치 엔진(304)은 완성 쿼리 예측들(326)의 순서화 세트를 구축하기 위해 상기 정보를 이용한다. I소정의 실시예에서, 세트는 빈도 또는 점수에 의해 순서화된다. 그 다음에 서치 엔진(304)은 순서화된 예측된 완성 쿼리들(329)을 수신하는 클라이언트에 예측된 완성 쿼리들(328)의 적어도 서브세트를 반환한다. 클라이언트는 순서화된 예측 완성 쿼리들(330)의 적어도 서브세트를 계속해서 디스플레이한다.
[0036] 부분 쿼리가 쿼리 완성 테이블들(212)의 어느 한쪽 언어의 쿼리 엔트리들에 잠재적으로 매칭될 수 있기 때문에, 완성 쿼리 예측들의 순서화 세트는 어느 한쪽 언어일 수 있다는 것을 유의한다. 서치 엔진(304)은 혼합된 언어 예측된 완성 쿼리들을 반환하도록 구성될 수 있고 어떤 언어가 부분 쿼리를 더 예측할 가능성이 있는지를 선택하도록 구성될 수 있다. 서치 엔진(304)이 부분 쿼리로 인코딩된 언어를 제외한 언어로 예측된 완성 쿼리를 발생시키는 곳에서, 예측된 완성 쿼리는 입력 시스템 자동 변환 제안(automatic input method correction suggestion)을 표시한다.
[0037] 도 2를 참조하여 상기 기재된 바와 같이, 사용자들 커뮤니티의 히스토릭컬 쿼리 로그들로부터의 쿼리들은 쿼리 완성 테이블들을 만드는 동안 필터링된다. 그러나, 추가적인 필터링이 요청되거나 다양한 그룹들의 사용자들(예, 그러한 필터링을 요청했던 사용자들)을 대신하여 다른 방법으로 적용될 수 있다. 그러므로, 소정의 실시예에서, 예측된 완성 쿼리들(326)을 순서화하기 앞서서 또는 예측된 완성 쿼리들을 클라이언트(328)에 전달하기에 앞서서, 예측된 완성 쿼리들의 세트는 미리 정해진 하나 이상의 용어 세트의 하나 이상의 용어와 매칭되는 쿼리들을, 만약 있다면, 제거하도록 필터링된다. 예를 들면, 하나 이상의 미리 정해진 용어 세트들은 이의가 있거나, 문화적으로 민감하고, 기타 동류의 것으로 고려될 수 있는 영어 용어들(English terms) 및 한국어 용어들을 포함할 수 있다. 상기 방법을 수행하는 시스템은 메모리에 저장되어, 하나 이상의 미리 정해진 용어 세트들을 식별하는 하나 이상의 테이블들(또는 다른 데이터 구조들)을 포함할 수 있다. 소정의 다른 실시예에서, 클라이언트(328)로 전달된 예측된 완성 쿼리들의 세트는 하나 이상의 미리 정해진 용어들 세트의 하나 이상의 용어와 매칭되는 쿼리들을, 만약 있다면, 제거하도록 클라이언트에서 필터링된다. 선택적으로, 복수의 상이한 필터들이 복수의 상이한 사용자 그룹들을 위해 사용될 수 있다. 소정의 실시예에서, (부분 서치 쿼리에 응답하여 수행되는) 실시간 필터링이 쿼리 완성 테이블들을 만드는 동안 필터링을 대신하여 사용될 수 있다.
[0038] 도 3B는 클라이언트 시스템(102)의 서치 어시스턴트(104)에서 구현될 수 있는 실시예를 도시한다. 서치 어시스턴트(104)는 클라이언트 시스템(102)의 텍스트 엔트리 박스 내의 사용자의 서치 쿼리의 엔트리를 모니터링 한다. 사용자 엔트리는 하나 이상의 문자들(characters)이거나, 하나 이상의 단어들(words)(예, 첫 단어 또는 두 개의 구문(the first word or two of a phrase), 또는 첫 단어 및 시작 글자(a first word and the beginning letter), 문자들 또는 복합 용어의 구문의 새로운 단어의 심볼들(characters or symbols of a new word of a phrase of a compound term))일 수 있다. 서치 어시스턴트(104)는 두 개의 상이한 타입의 쿼리들을 식별할 수 있다. 먼저, 사용자가 (아래에 기술된 바와 같이) 입력 스트링의 완성을 지시하는 시기에 앞서 엔트리가 식별될 때 서치 어시스턴트(104)는 부분 서치 쿼리를 수신하거나 식별한다. 둘째로, 사용자가 입력 스트링의 제시된 예측, 또는 지시된 완성을 선택할 때 서치 어시스턴트(104)는 사용자 입력을 수신하거나 식별한다.
[0039] 사용자 입력 또는 선택이 완성된 사용자 입력으로서 식별될 때, 완성된 사용자 입력은 프로세싱을 위해 서버에 전송된다(354). 서버는 서치 어시스턴트(104)에 의해 또는 브라우저 어플리케이션(356)과 같은 클라이언트 어플리케이션에 의해 수신된 서치 결과들의 세트를 반환한다. 소정의 실시예에서, 브라우저 어플리케이션은 적어도 웹 페이지의 일부로서 서치 결과들을 디스플레이한다. 소정의 실시예에서, 서치 어시스턴트(104)는 서치 결과들을 디스플레이한다. 대안적으로, 완성된 사용자 입력(354)의 전송 및 서치 결과들의 수신(356)은 서치 어시스턴트(104) 이외의 메카니즘에 의해 수행될 수 있다. 예를 들면, 이러한 작업들은 표준 요청 및 응답 프로토콜들(standard request and response protocols)을 이용하여 브라우저 어플리케이션에 의해 수행될 수 있다.
[0040] 사용자가 캐리지 리턴(carriage return), 또는 동등한 문자를 입력할 때, 서치 쿼리의 엔트리 동안 사용자에 제공된 그래픽 유저 인터페이스(GUI)에서 "찾기" 또는 "서치" 버튼을 선택할 때, 또는 서치 쿼리의 엔트리 동안 사용자에 제공된 예측된 쿼리들의 세트 중 하나를 선택하는 것에 의해서와 같은 수많은 방법으로, 사용자 입력은 완성된 사용자 입력으로서 서치 어시스턴트(104)에 의해(또는 브라우저나 다른 어플리케이션에 의해) 식별될 수 있다. 본 발명의 속한 기술분야의 통상의 지식을 가진 자는 서치 쿼리의 마지막 엔트리를 신호하는 수많은 방법을 인식할 것이다.
[0041] 사용자가 완성된 사용자 입력을 신호하기 전에 앞서, 부분 서치 쿼리가 식별될 수 있다. 예를 들어, 부분 서치 쿼리들은 텍스트 엔트리 박스의 문자들의 삭제 또는 엔트리를 탐지하는 것에 의해 식별된다. 일단 부분 서치 쿼리가 식별되면, 부분 서치 쿼리는 서버에 전송된다(358). 부분 서치 쿼리에 응답하여, 서버는 예측된 완성 서치 쿼리들을 포함하는 예측들을 반환한다. 서치 어시스턴트(104)는 예측들을 수신하고(360) 제공(예, 디스플레이, 언어화(verbalize) 등)한다(362).
[0042] 예측된 완성 쿼리들이 사용자에 제공된 후에(362), 사용자가 예측들의 하나가 의도된 엔트리와 매칭된다고 결정하면 사용자는 예측된 완성 서치 쿼리들 중 하나를 선택할 수 있다. 소정의 예시에서, 예측들은 사용자에 고려되지 않았던 추가적인 정보를 제공할 수 있다. 예를 들어, 사용자는 서치 전략의 일부로서 하나의 쿼리를 염두해 둘 수 있으나, 예측된 완성 쿼리들을 보는 것은 사용자가 입력 전략을 변경하는 것을 야기한다. 일단 세트가 제공되면(362), 사용자 입력은 다시 모니터링된다(352). 사용자가 예측들의 하나를 선택한다면, 사용자 입력은 (또한 본 경우에서 완성된 사용자 입력으로 지칭되는) 완성된 쿼리로서 서버(354)에 전송된다. 요청이 전송된 후에, 사용자 입력 활동들은 다시 모니터링된다(352).
[0043] 소정의 실시예에서, 서치 어시스턴트(104)는 서버(364)로부터 (각각이 예측된 완성 쿼리들의 세트인) 추가적인 예측된 결과들을 프리로딩(preload)한다. 프리로딩된 예측된 결과들은 사용자 엔트리에 대한 응답 속도를 개선하는데 사용될 수 있다. 예를 들어, 사용자가 <ban>을 입력할 때, 서치 어시스턴트(104)는 <ban>에 대한 예측 결과들에 추가하여, <bana>, . . . , 및 <bank>에 대한 예측 결과들을 프리로딩할 수 있다. 사용자가 (부분 서치 쿼리) 엔트리 <bank>를 만들기 위해 하나 이상의 문자, 예를 들어 <k>를 입력하면, <ban>에 대한 예측 결과들은 서버에 부분 서치 쿼리를 전송하거나 예측들을 수신하는 것없이 디스플레이될 수 있다.
[0044] 소정의 실시예에서, 예측된 결과들의 하나 이상의 세트들은 클라이언트에 로컬적으로 케시된다. 서치 요청자가 현재 쿼리를 더 이전의 부분 입력을 반영하도록 (예, 소정의 문자를 제거하기 위해 백스페이싱에 의해)수정할 때, 더 이전의 부분 입력에 대한 예측된 결과들의 세트는 클라이언트 캐쉬로부터 다시 검색되고 서버에 보내지고 있는 부분 입력 대신 사용자에 다시 제공된다.
[0045] 소정의 실시예에서, 마지막 입력(356)에 대한 서치 결과들 또는 문서를 수신한 후에, 또는 예측된 완성 서치 쿼리들(362)을 디스플레이한 후에, 그리고 선택적으로 예측된 결과들(364)을 프리로딩한 후에, 서치 어시스턴트(104)는 사용자가 예를 들어 서치 어시스턴트(104)를 포함하는 웹 페이지를 닫는 것에 의해 서치 어시스턴트(104)를 종료할 때까지, 사용자 엔트리를 모니터링 하는 것(352)을 계속한다. 소정의 실시예에서, (도 13을 참조하여 아래에 기술된) 텍스트 엔트리 박스(1320)가 활성화될 때만 서치 어시스턴트(104)는 사용자 엔트리를 모니터링하는 것을 계속하고(352), 텍스트 엔트리 박스(1320)가 비활성화될 때 모니터링을 중지한다. 소정의 실시예에서, 유저 인터페이스의 텍스트 엔트리 박스는 브라우저 어플리케이션의 현재 활성 창 또는 툴바에 디스플레이될 때 활성화되며, 텍스트 엔트리 박스가 디스플레이되지 않거나 텍스트 엔트리 박스가 브라우저 어플리케이션의 활성 창 또는 툴바에 없을 때 비활성화 된다.
[0046] 기술된 시스템 및 기술들은 한국어, 일본어, 중국어, 또한 많은 다른 언어들과 같은 언어들의 부분 쿼리들을 어드레싱하는 특정 어플리케이션을 가진다. 달리 한글로 불리는 문자로 된 한국어는 음절 블록들로 체계화된 문자들의 음성 알파벳을 활용한다. 각각의 음절 블록은 하나의 첫 자음(initial consonant), 하나의 중간 모음(middle vowel), 및 선택적인 끝 자음(optional ending consonant)으로 구성된다. 거기에는 19개의 가능한 첫 자음들, 21 개의 가능한 모음들, 및 27개의 가능한 끝 자음들이 있다. 음절 블록의 가능한 초, 중, 및 끝 요소들의 리스트는 도 4A 및 4B에 도시된다. 한국어 텍스트는 다른 방법으로 인코팅될 수 있으나, 각각의 음절 블록 조합을 표시하기 위해 상이한 문자 코드를 사용하는 유니코드 전송 포멧으로 통상적으로 표시된다: 즉, ACOO로부터 D7AF까지 11,172 개의 미리 정해진 한국어 문자들. 한국어 텍스트는 한국어 자음들 및 모음들이 키보드 상의 문자 키들에 맵핑되는 서양 영숫자 키보드 배치를 사용하여 통상적으로 입력된다. 초성 자음은 하나의 키스트로크, 중간 모음 및 끝 자음은 각각 하나 또는 둘의 키스트로크들을 요구하며, 끝 자음은 선택적이기 때문에, 단일 한국어 음절 블록 문자는 키보드 상에 2 개에서 5개 사이에서 키스트로크들을 요구한다.
[0047] 따라서, 한국어 쿼리를 입력하는 사용자는 부분 쿼리가 서치 엔진(304)에 전송될 때 미완성의 한국어 문자를 입력하는 중간에 있을 수 있다. 더욱이, 사용자는 부정확한 입력 방법 세팅을 이용하여 한국어 또는 영어 쿼리를 입력하려고 시도 중일 수 있다.
[0048] 기술된 시스템 및 기술들은 부분 한국어 쿼리들을 로마자 표시로 변환하는 것에 의해 한국어 및 영어로 된 예측된 완성 쿼리들을 제공하는 통합 솔루션을 제공한다. 한국어 쿼리들의 로마자로 된 표시는 영어 입력 방법을 이용하여 한국어 쿼리를 입력하려고 시도 중인 사용자에 의해 발생된 로마자로 된 알파벳의 문자들에 해당한다. 예를 들어, 한국어 쿼리 로그는 다음과 같은 한국어를 포함할 수 있다:
· "모바일"(mobile)
·"구글"(google)
[0049] 이러한 한국어 쿼리들의 로마자로 된 표시는 다음이 될 것이다:
· "모바일"(mobile) => "ahqkdlf"
· "구글"(google) => "rnrmf
[0050] 다시 말하면, 한국어 입력 방법으로 세팅된 키보드 상에 "ahqkdlf"를 타이핑한 사용자는 한국어로 단어 "mobile"을 입력할 것이다.
[0051]쿼리에서 한국어 문자 스트링을 로마자로 된 표시로의 변환은 도 4A, 도 4B, 및 도 5에 의해 도시된다. 변환을 달성하기 위해, 인덱스는 각각의 음절 블록 문자의 언어 구성 요소를 형성하는 각각의 자음 또는 모음에 대해 계산된다. 유니코드에서 표시되는 한국어 문자들에 대해, 문자들이 다음과 같이 배치된다:
유니코드 = (첫 자음*21*28) + (중간 모음*28) + 선택 끝(optional ending) + OxACOO
[0052] 상기 계산은 소정의 모듈화들 및 분할들에 의해 달성된다. 일단 인덱스가 각각의 한국어 문자에 대해 결정되었다면, 자음 및 모음 인덱스들에 대응하는 영어 글자들이 케스케이드(cascaded)된다. 도 4A 및 4B는 상이한 한국어 자음들 및 모음들이 유니 코드 인코딩에 주어진 상응하는 로마자 문자들에 어떻게 맵핑될 수 있는지를 도시한다. 도 5는 변환이 어떻게 프로세싱되는지를 도시한다. 도 5를 참조하여, 스트링에서 다음 문자(예, 완성 또는 부분 서치 쿼리)가 검색된다(502). 처음에, 스트링에서의 첫 문자가 첫 "다음 문자(next character)"를 표시한다. 문자가 한국어 문자들의 음절 블록 표시들의 범위 내에서 인코딩되는지에 대해 결정이 이루어진다(504). 만약 (504-예)이면, 상기 기술된 바와 같이, 첫 및 중간 및 끝 값들은 문자로부터 유도된다(506). 그 다음에 값들은 도 4A 및 도 4B에 따라, 로마자 문자들에 맵핑된다(508). 로마자 문자들은 그 다음에 결과 스트링에 추가된다(509). 문자는 다른 한편으로, 음절 블록 문자(504-아니오)로서가 아니라 단일 자음 또는 모음으로서(510-예) 인코딩된다면, 그 다음에 (자모 코드(jamo code)로서 인코딩되는) 자음 또는 모음은 다시 도 4A 및 도 4B에 따라, 로마자 표시로 직접 변화되며(512), 그 다음에 결과 스트링의 끝에 추가된다(514). 문자가 한국어로 인코딩되지 않으면(510-아니오), 그 다음에 문자는 로마자로 된 표시에 이미 있는 것으로 가정하기 때문에 결과 스트링에 직접 추가될 수 있다(516). 프로세스는 스트링의 끝에 도달할 때까지 반복된다(518).
[0053] 상기 기술된 바와 같이, 한국어 쿼리들은 프리프로세싱 단계 동안 로마자 표시로 변환되며 그들의 로마자 표시와 일치하게 데이터 구조들에 체계화된다. 한국어 쿼리들을 로마자 표시로 변환하는 것에 의해, 양쪽의 한국어 및 영어 예측된 완성 쿼리들은 예측 서버에 대한 통합된 데이터 구조들에 함께 저장될 수 있다. 양쪽의 영어 쿼리들 및 한국어 쿼리들은 로마자로 된 알파벳을 이용하여 표시되기 때문에, 동일한 예측 로그는 영어 예측들 및 한국어 예측들을 발생시키기 위해 활용될 수 있다.
[0054] 사용자가 한국어로 시스템에 부분 쿼리를 입력할 때, 한국어 부분 쿼리는 로마자로 된 표시로 변환된다. 그 다음에 로마자 표시는 부분 쿼리들에 대한 데이터 구조에 대하여 임의의 영어 부분 쿼리와 같이, 체크된다. 한국어 문자들이 키보드 상에 원래의 키 스트로크들과 동일한 시퀀스를 갖는 로마자 글자들에 의해 표시되기 때문에, 불완전한 한국어 쿼리들은 정정하여 처리된다. 예측들(즉, 완성 쿼리들)의 리스트는 부분 쿼리를 기초로 발생된다. 예측된 완성 쿼리들은 명백히 한국어 또는 영어 어느 한쪽일 수 있다. 따라서, 소정의 경우에서 부분 쿼리에 대응하는 예측된 완성 쿼리들은 양쪽의 한국어 및 영어 쿼리들을 포함한다. 사용자가 한국어 입력 방법을 이용하여 영어 부분 쿼리를 부정확하게 입력한 곳에서, 로마자 표시는 시스템에 의해 잠재적으로 영어 쿼리인 것으로 인식될 것이다. 예를 들며, 사용자는 다음의 쿼리 또는 다음의 부분 쿼리를 입력할 수 있다:
· "ㅡㅐㅠㅑㅣㄷ"
[0055] 쿼리는 정확한 임의의 음절 블록들을 형성하지 않기 때문에, 임의의 한국어 예측들을 발생시킬 수 없다. 그러나, 부분 쿼리에 대한 언어 인코딩이 부정확하더라도, 영어 단어 "mobile"을 포함하는 예측된 완성 쿼리들과 매칭될 그 쿼리에 대한 로마자 표시는 "mobile"이다.
[0056] 사용자가 영어로 부분 쿼리를 시스템에 입력할 때, 시스템은 부분 쿼리를 정상적으로 처리할 것이다. 영어 쿼리는 데이터 구조 및 발생된 예측들의 리스트에 대해 체크될 것이다. 더욱이, 데이터 구조가 로마자 표시로 한국어를 포함하기 때문에, 시스템은 입력 방법 에러의 결과로 야기된 한국어 예측들을 자동적으로 식별할 것이다.
[0057] 도 6은 부분 쿼리, "ho"(602)에 대응하는 예측된 완성 쿼리들의 세트(604)의 예를 도시한다. 이러한 예시에서, 완성된 쿼리들 세트(604)에서 첫번째 위치는 가장 높은 빈도 값을 가지는 쿼리(예, "hotmail")을 포함하고 세트의 두번째 위치는 다음으로 가능 높은 빈도 값을 갖는 쿼리(예 "hot dogs") 등에 의해 점유된다. 이러한 실시예에서, 주어진 부분 쿼리 및 완성 쿼리 사이의 상응은 완성 쿼리의 처음에서 부분 쿼리의 존재에 의해 결정된다(예, "ho"라는 문자들은 완성 쿼리들 "hotmail" 및 "hotels in San Francisco"의 처음에서 발견된다). 다른 실시예에서, 완성 쿼리들의 세트(606)에 의해 도시된 바와 같이, 주어진 부분 쿼리 및 완성 쿼리들의 상응은 완성 쿼리의 어느 곳이든 위치하는 검색어의 처음에서 부분 쿼리의 존재에 의해 결정된다(예, 문자들 "ho"는 "hotmail"의 처음에서 그리고 "cheap hotels in Cape Town"의 두번째 검색어의 처음에서 발견된다).
[0058] 쿼리 완성 테이블들(212)의 세트를 생성하기 위해, 히스토릭컬 쿼리 로그들(201, 202)로부터 쿼리가 선택된다(도 7, 702). 소정의 실시예에서, 목표된 메타-정보를 갖는 쿼리들만이 프로세싱된다(예, 영어 언어의 쿼리들). 첫번째 부분 쿼리는 선택된 쿼리(704)로부터 식별된다. 일 실시예에서, 첫번째 부분 쿼리는 선택된 쿼리의 첫번째 문자이다(즉, "hot dog ingredients"의 쿼리 스트링의 "h"). 소정의 실시예에서, 부분 쿼리들이 식별되기 전에(대문자 글자들을 소문자 글자들로 변환) 프로세싱이 적용된다. 부분 쿼리, 부분 쿼리에 상응하는 완성 쿼리 및 그 빈도를 지시하는 엔트리가 테이블에서 만들어진다. 다른 실시예에서, 랭킹을 위해 사용되는 다른 정보(예, 완성 쿼리가 사용자들의 커뮤니티, 및/또는 다른 요소들에 의해 제출되었을 때의 날짜/시간에 기초하여 컴퓨틴된 랭킹 점수)가 저장된다. 식별된 부분 쿼리가 전체 쿼리를 표시하지 않는다면, 그 후 쿼리 프로세싱은 완성되지 않는다(708-아니오). 따라서, 다음 부분 쿼리가 식별된다(710). 소정의 실시예에서, 다음 부분 쿼리는 이전에 식별된 부분 쿼리에 다음 추가적인 문자를 추가하는 것에 의해 식별된다(즉, "hot dog ingredients"의 쿼리 스트링에 대한 "ho"). 식별 프로세스(710) 및 쿼리 완성 테이블을 업데이트하는 프로세스(706)는 전체 쿼리가 프로세스될 때까지(708-예) 계속된다. 모든 쿼리들이 아직 프로세싱되지 않는다면(712-아니오), 그 다음에 히스토릭컬 쿼리 로그(들)로부터 다음 쿼리는 선택되며(702) 모든 쿼리들이 프로세싱될 때까지(712-예) 프로세싱된다. 소정의 실시예에서, 아이템들이 쿼리 완성 테이블에 추가될 때, 테이블의 아이템들이 랭크 또는 점수에 따라 순서화되도록 아이템들이 삽입된다. 다른 실시예에서, 모든 쿼리 완성 테이블들은 각각의 쿼리 완성 테이블에서 아이템들이 쿼리 완성 테이블의 아이템들의 랭크 또는 점수에 따라 순서화되도록 테이블 빌딩 프로세스의 끝에서 정렬된다. 추가적으로, 테이블이 미리 정해진 수의 엔트리들만을 포함하기 위해 하나 이상의 쿼리 완성 테이블들은 절단될(truncated) 수 있다.
[0059] 위에서 기술된 바와 같이, 소정의 실시예에서, 이의가 있고, 문화적으로 민감하고, 그 밖의 동등한 것으로 고려될 수 있는 단어와 같이, 하나 이상의 미리 정해진 용어들의 세트들과 매칭되는 쿼리들을 배제하기 위해 히스토릭컬 쿼리 로그들(201, 202)로부터의 완성 쿼리들은 쿼리 완성 테이블들에 그들을 삽입하기에 앞서 필터링된다(714). 선택적으로, 쿼리 로그(201)의 쿼리들을 제출했던 사용자들의 커뮤니티는 쿼리 로그(202)에서 쿼리들을 제출했던 사용자들 커뮤니티와 상이할 수 있고, 이러한 경우에서 전에 기술된 "사용자들의 커뮤니티"는 두 개 이상의 사용자들의 커뮤니티들을 포함한다. 쿼리가 필터링되고 이에 따라 쿼리 완성 테이블들로 삽입을 위한 후보들(candidates)인 쿼리들 세트로부터 제거된다면, 히스토릭컬 쿼리 로그들(201, 202)로부터 (만약 있다면) 다음 쿼리가 선택된다(702).
[0060] 도 8을 참조하여, "hot dog ingredients"의 쿼리 스트링의 처음 5 개 문자들의 예시적 프로세싱은 804에서 812를 통해 테이블(802)에 도시된다. "hotmail"의 쿼리 스트링의 처음 4 개 문자의 예시적 프로세싱은 814에서 820을 통해 도시된다.
[0061] 소정의 실시예에서, 주어진 부분 쿼리에 대한 쿼리 완성 테이블은 테이블로부터 주어진 부분 쿼리에 상응하는 가장 빈번하게 제출된 쿼리들을 식별하는 것 및 가장 높은 랭크(예, 가장 높은 랭킹 점수 또는 빈도)를 갖는 쿼리가 리스트의 맨 위에 있을 수 있도록 랭킹된 순서로 쿼리들을 위치시키는 것에 의해 생성된다. 예를 들면, 부분 쿼리 "hot"에 대한 쿼리 완성 테이블은 808 및 818의 양쪽의 완성 쿼리 스트링들을 포함할 것이다. 랭킹이 빈도에 기초할 때, 818에서의 쿼리 스트링의 빈도(즉, 300,000)가 808에서의 쿼리 스트링의 빈도(즉, 100,000)보다 더 크기 때문에 "hotmail"에 대한 쿼리 스트링은 "hot dog ingredients"에 대한 쿼리 스트링 위에 나타날 것이다. 따라서, 예측들의 순서화 세트가 사용자에 반환될 때, 선택되고 있는 더 높은 가망성을 갖는 쿼리들이 처음에 제공된다. 상기 언급된 바와 같이, 다른 값들은 예측된 완성 쿼리들을 랭킹하기 위해 사용될 수 있다. 소정의 실시예에서, 사용자의 프로파일로부터 개인화 정보가 예측된 완성 쿼리들을 랭킹하기 위해 사용될 수 있다.
[0062] 도 9 및 도 10을 참조하여, 소정의 실시예에서 쿼리 완성 테이블들(212)의 수는 히스토릭컬 쿼리 스트링들을 네 개(4) 문자와 같이, 미리 정해진 크기 C의 "청크(chunks)"로 분할하는 것에 의해 감소된다. C보다 적은 길이의 부분 쿼리들에 대한 쿼리 완성 테이블들(212)은 변하지 않는 채로 남는다. 그 길이가 적어도 C인 부분 쿼리들에 대해, 부분 쿼리는 두개의 일부분들로 분할된다: 프리릭스부(prefix portion) 및 서픽스부(suffix portion). 서픽스, S의 길이는 부분 쿼리(L) 모듈로(modulo) C 의 길이와 동등하다:
S = L modulo C.
여기서 L은 부분 쿼리의 길이이다. 프리픽스, P의 길이는 부분 쿼리의 길이에서 서픽스의 길이를 감산한다: P = L - S. 따라서, 예를 들면, 열(10)의 문자들(예, "hot potato")의 길이를 갖는 부분 쿼리는 청크 크기 C가 네 개(4)일 때 서픽스 길이 S=2 및 프리픽스 길이 P=8을 가질 것이다.
[0063] 도 7에 도시된 프로세스를 수행할 때, 부분 쿼리에 상응하는 쿼리 완성 테이블을 식별하거나 생성하는 단계 706은 도 9에서 개념적으로 도시된다. 도 9는 양쪽 쿼리 완성 테이블들을 발생시키기 위해 및 사용자 입력된 부분 쿼리를 프로세싱할 때 룩업을 위해 사용된 프로세스를 개략적으로 도시한다. 부분 쿼리의 길이가 "청크" C의 크기보다 더 적을 때, 부분 쿼리는 예를 들어 해쉬 함수(또는 다른 핑거프린트 함수) 318(도 3)을 사용하는 것에 의해, 쿼리 핑거프린트(fingerprint; 320)에 맵핑된다. 핑거프린트(320)는 핑거프린트 대 테이블 맵(210)에 의해 쿼리 완성 테이블(212)에 맵핑된다.
[0064] 부분 쿼리의 길이가 하나의 청크, 적어도 C의 크기일 때, 부분 쿼리(902)는 프리픽스(904) 및 서픽스(906) 내로 분해되며, 그 길이들은 상기 설명한 바와 같이, 청크 크기에 의해 지배를 받는다. 핑거프린트(908)는 프리픽스(904)에 대해 예를 들어 해쉬 함수(318)를 프리픽스(904)에 적용하는 것에 의해 발생되며, 그 다음에 이 핑거프린트(908)는 핑거프린트 대 테이블 맵(210)에 의해 "청크된" 쿼리 완성 테이블(212)에 맵핑된다. 소정의 실시예에서, 다른 실시예에서 청크된 쿼리 완성 테이블이 분리된 데이터 구조인 동안, 각각의 청크된 쿼리 완성 케이블(212)은 더 큰 쿼리 완성 테이블에서 엔트리들의 세트이다. 각각의 쿼리 완성 테이블의 각각 엔트리(911)는 완성 쿼리의 텍스트인 쿼리 스트링을 포함하며, 선택적으로 쿼리 완성 테이블(212)에서 엔트리들을 순서화하기 위해 사용되는 점수(916)를 또한 포함한다. 청크된 쿼리 완성 테이블의 각각의 엔트리는 상응하는 부분 쿼리의 서픽스(914)를 포함한다. 각각의 엔트리(911)의 서픽스(914)는 길이, S를 가지고, 이 길이는 0에서부터 C-1까지 어디에든 있을 수 있으며, 프리픽스(904)에서 포함되지 않은 부분 쿼리의 0 또는 더 많은 문자들을 포함한다. 소정의 실시예에서, 히스토릭컬 쿼리에 대한 쿼리 완성 테이블 엔트리들(911)을 발생시킬 때, 오직 하나의 엔트리가 히스토릭 쿼리에 상응하는 각각의 청크된 쿼리 완성 테이블(212)에 만들어진다. 특히, 하나의 엔트리(911)은 C-1의 문자들까지 길게, 히스토릭컬 쿼리에 대한 가장 긴 가능한 서픽스를 포함한다. 다른 실시예에서, C까지의 엔트리들은 각각의 구별 서픽스에 대해 하나로 특정 히스토릭컬 쿼리에 대한 각각의 청크된 쿼리 완성 테이블(212)에서 만들어진다.
[0065] 선택적으로, 각각의 쿼리 완성 테이블(212)에서 각각의 엔트리는 완성 쿼리(913)에 대한 언어를 지시하는 언어 값 또는 지시자(912)를 포함한다. 그러나, 언어 값(912)은 모든 쿼리 스트링들(913)이 그들의 원래 언어의 쿼리 완성 테이블들(212)에 저장되는 실시예에서 생략될 수 있다.
[0066] 선택적으로, 각각의 쿼리 완성 테이블(212)의 각각의 엔트리는 테이블 엔트리들을 부분 쿼리 프리픽스의 핑거프린트에 매칭하기 위해 쿼리 핑거 프린트(918)를 포함한다. 그러나, 소정의 실시예(예, 각각의 구별 부분 쿼리 프리픽스에 대해 분리된 쿼리 완성 테이블들을 갖는 실시예)에서, 핑거프린트(918)는 쿼리 완성 테이블들(212)의 엔트리들로부터 생략될 수 있다.
[0067] 도 10은 히스토릭컬 쿼리 "hot potato"에 상응하는 엔트리들(911)을 포함하는 쿼리 완성 테이블들의 세트를 도시한다. 이 예시는 4와 동등한 청크 크기, C를 가정한다. 다른 실시예에서 청크 크기는 2, 3, 5, 6, 7, 8, 또는 임의의 다른 적절한 값일 수 있다. 청크 값, C는 경험 정보에 기초하여 선택될 수 있다. 도 10에 도시된 쿼리 완성 테이블들의 첫 3개, 212-1에서 212-3은 각각 부분 쿼리들 "h", "ho" 및 "hot"에 대한 것이다. 다음의 2개의 쿼리 완성 테이블들, 212-4 및 212-5은 ("hot "을 그 프리픽스부로 갖고, "pot"을 그 서픽스부로 갖는) 부분 쿼리들 "hot pot" 및 ("hot pota"을 프리픽스부로 갖고, "to"를 서픽스부로 갖는) "hot potato"에 상응하고, 각각 7 및 10의 부분 쿼리 길이들을 갖는다. 다른 방법으로 진술하면, 쿼리 완성 테이블(212-4)은 "hot"으로 시작하고 4 및 7 사이의 길이를 갖는 모든 부분 쿼리들에 상응한다; 반면 쿼리 완성 테이블(212-5)은 "hot pota"로 시작하고 8 및 11 사이의 길이를 갖는 모든 부분 쿼리들에 상응한다.
[0068]다시 도 7을 참조하면, 작업(710)에 의해 부분적으로 형성된 루프의 각각의 반복으로, C-1의 길이가 도달될 때까지, 부분 쿼리들의 길이는 하나의 문자 단계에 의해 처음에 증가하며, 그 다음에 히스토릭컬 쿼리의 전체 길이에 도달할 때까지, 부분 쿼리들의 길이는 C 문자들의 단계들에 의해 증가한다. 결과적으로, C=4일 때, 히스토릭컬 쿼리 "hot potato"는 각각 1, 2, 3, 4-7 및 8-10 문자들의 길이를 갖는 (도 10에 도시된) 부분 서치 쿼리들에 상응하는 5개의 이러한 테이블들(212-1에서 212-5)에서 쿼리 완성 테이블 엔트리들을 생산한다.
[0069] 각각의 청크된 쿼리 완성 테이블의 엔트리들(911)은 엔트리들(911)의 쿼리 스트링들(913)의 (점수(916)에 의해 표시된) 랭킹 값들에 따라 순서화된다. C 문자들보다 적게 갖는 부분 쿼리들에 대해, 쿼리 완성 테이블(212)에서 쿼리들의 수는 첫번째 값(예, 10, 20, 또는 4와 20 사이의 임의의 적절한 값)이고, 이것은 예측들로서 반환될 쿼리들의 수를 표시할 수 있다. 소정의 실시예에서, 각각의 청크된 쿼리 완성 테이블(910)에서 엔트리들(911)의 최대 수(예, 1000 및 10000 사이의 수)는 첫번째 값보다 상당히 더 크다. 각각의 청크된 쿼리 완성 테이블(212)은 수십 또는 수백의 평상의 쿼리 완성 테이블들을 대체할 수 있다. 그러므로, 각각의 청크된 쿼리 완성 테이블(212)은 사용자 특정 부분 쿼리에 대한 예측된 완성 쿼리들의 리스트를 발생시키는데 부당한 지연을 야기시키지 않는 동안, 청크된 쿼리 완성 테이블에 상응하는 프리픽스부를 갖는 인가된 모든 또는 거의 모든 히스토릭컬 쿼리들에 상응하는 엔트리들의 수(p)를 포함한다.
[0070] 쿼리 완성 테이블들(212) 및 핑커프린트-대-테이블 맵(210)이 히스토릭컬 쿼리들의 세트로부터 발생된 후에, 이러한 동일한 데이터 구조들(또는 이것의 카피들)은 사용자 입력 부분 쿼리에 상응하는 예측된 쿼리들의 세트를 식별하기 위해 사용된다. 도 9에 도시된 바와 같이, 사용자 입력 부분 쿼리는 부분 쿼리의 길이에 의해 결정될 때, 전체 부분 쿼리(902)에 또는 부분 쿼리의 프리픽스부(904)에 해쉬 함수(또는 다른 핑거프린트 함수)를 적용하는 것에 의해, 쿼리 핑거프린트(320)에 먼저 맵핑된다. 그 다음에 쿼리 핑거프린트(320)는 핑거프린트-대-테이블 맵(210)에서 쿼리 핑거프린트의 룩업을 수행하는 것에 의해 쿼리 완성 테이블(212)에 맵핑된다. 결국, N까지 예측된 쿼리들의 순서화 세트가 식별된 쿼리 완성 테이블로부터 추출된다. 부분 쿼리의 길이가 청크 크기보다 적을 때, 예측된 쿼리들의 순서화 세트는 식별된 쿼리 완성 테이블에서 맨 위 N 쿼리들이다. 부분 쿼리의 길이가 청크 크기보다 더 길거나 동등할 때, 식별된 쿼리 완성 테이블은 부분 쿼리의 서픽스와 매칭되는 맨 위 N 아이템들에 대해 서치된다. 쿼리 완성 테이블(212)의 엔트리들이 감소하는 랭크로 순서화되기 때문에, 엔트리들을 매칭하기 위해 서치하는 프로세스는 맨 위에서 시작하여 반환될 예측들의 목표된 수(N)이 획득(예, 10)될 때까지 또는 쿼리 완성 테이블(212)의 끝이 도달될 때까지 계속된다. "매치"는 부분 쿼리의 서픽스(906)가 엔트리(911)에서 서픽스(914)의 상응하는 일부와 동일할 때 존재한다. 예를 들어, 도 10을 참조하여, 한 글자 서픽스 <p>는 각각 <pot> 및 <pla>의 서픽스들을 갖는 엔트리들(911-3 및 911-4)과 매칭된다. 제로 길이를 갖는(또한 널 스트링이라고 지칭되는) 빈 서픽스는 쿼리 완성 테이블의 모든 엔트리들과 매칭되며, 따라서 부분 쿼리의 서픽스부가 널 스트링일 때 케이블의 맨 위 N 아이템들은 예측된 쿼리들로서 반환된다.
[0071] 도 11, 위에서 기술된 방법을 구현하는 클라이언트 시스템(102)의 실시예는 하나 이상의 프로세싱 유닛(CPU's; 102), 하나 이상의 네트워크 또는 다른 통신 인터페이스들(1104), 메모리(1106), 및 이러한 구성요소들을 상호연결하기 위한 하나 이상의 통신 버스들(1108)을 포함한다. 소정의 실시예에서, 더 적고 및/또는 추가적인 구성요소들, 모듈들 또는 함수들(functions)은 클라이언트 시스템(102)에 포함한다. 통신 버스들(1108)은 시스템 구성 요소 간의 통신을 상호연결하고 제어하는 (때때로 칩셋라고 지칭되는) 회로를 포함할 수 있다. 클라이언트(102)는 선택적으로 사용자 인터페이스(1110)를 포함할 수 있다. 소정의 실시예에서, 사용자 인터페이스(1110)는 디스플레이 장치(1112) 및/또는 키보드(1114)를 포함하나, 사용자 인터페이스 장치의 다른 구성들이 또한 사용될 수 있다. 메모리(1106)는 고속 랜덤 액세스 메모리를 포함할 수 있으며 또한, 하나 이상 자기 또는 광학 스토리지 디스크, 플래시 메모리 장치, 또는 다른 비휘발성 솔리드 스테이트 스토리지 장치들(non-volatile solid state storage devices)을 포함할 수 있다. 고속 랜덤 액세스 메모리는 DRAM, SRAM, DDR 램 또는 기타 고체 상태 랜덤 액세스 메모리 장치와 같은 메모리 장치를 포함할 수 있다. 메모리(1106)는 선택적으로 CPU's(1102)로부터 원격 위치되는 대용량 저장 장치를 포함할 수 있다. 메모리(1106), 또는 교대로 메모리(1106) 내의 비휘발성 메모리 장치(들)은 컴퓨터 판독 가능 스토리지 매체를 포함한다. 메모리(1106)는 다음과 같은 요소들 또는 이러한 요소들의 서브세트를 저장하며, 또한 추가 요소들을 포함할 수 있다:
-다양한 기본 시스템 서비스들을 처리하기 위해 그리고 하드웨어 의존 태스크들(tasks)을 수행하기 위한 절차들을 포함하는 운영 시스템(1116);
-인터넷, 다른 광역 네트워크, 로컬 영역 네트워크들, 도심 영역 네트워크들, 등과 같은, 하나 이상의 통신 네트워크 인터페이스들(1104) 및 하나 이상의 통신 네트워크들을 통해 다른 컴퓨터에 클라이언트 시스템(102)을 연결하기 위해 이용되는 네트워크 통신 모듈(또는 명령들(instructions); 1118);
- 서치 쿼리들을 수신할 사용자와 인터페이스하고, 서버 또는 온라인 서비스에 서치 쿼리들을 제출하고, 및 그렇지 않으면 서치 결과들을 제공하는 것을 디스플레이하기 위한 명령들을 포함할 수 있는 클라이언트 어플리케이션(1120)(예, 인터넷 브라우저 어플리케이션);
- 클라이언트(102)에 디스플레이하거나 다른 방법으로 제공될 웹 페이지 컨텐츠(1124)를 포함하는 웹 페이지(1122); 클라이언트 어플리케이션(1120)과 관련된 웹 페이지가 웹 피에지 콘텐츠(1124)를 제공하기 위한 그리고 클라이언트(102)의 사용자와 상호작용하기 위한그래픽 유저 인터페이스를 구현하며;
-예측된 완성 서치 쿼리들을 포함하는 데이터(1136); 및
_서치 어시스턴트(104).
[0072] 적어도, 서치 어시스턴트(104)는 서버에 부분 서치 쿼리 정보를 전송한다. 서치 어시스턴트는 예측된 완성 쿼리들을 포함하는 예측 데이터의 디스플레이, 및 디스플레이된 예측된 완성 서치 쿼리의 사용자 선택을 또한 가능하게 할 수 있다. 소정의 실시예에서, 서치 어시스턴트(104)는 다음의 요소들, 또는 그러한 요소들의 서브세트를 포함한다: 서치 쿼리들의 엔트리를 모니터링하고 서버에 전송을 위한 부분 서치 쿼리들을 선택하기 위한 엔트리 및 선택 모니터링 모듈(또는 명령들)(1128); 부분 서치 쿼리들 및 (선택적으로) 완성된 서치 쿼리들을 서버에 전송하기 위한 부분/완성 엔트리 전송 모듈(또는 명령들)(1130); 예측된 완성 쿼리들을 수신하기 위한 예측 데이터 수신 모듈(또는 명령들)(1132); 및 예측된 완성 쿼리들의 적어도 서브세트 및 임의의 추가 정보를 디스플레이하기 위한 예측 데이터 디스플레이 모듈(또는 명령들)(1134). 완성된 쿼리들에 대한 서치 결과를 수신하며, 그 결과를 디스플레이하는 마지막(즉, 완성된) 쿼리들의 전송은 클라이언트 어플리케이션/브라우저(1120), 서치 어시스턴트(104), 또는 이들의 조합에 의해 처리될 수 있다. 서치 어시스턴트(104)는 많은 방법들로 수행될 수 있다.
[0073] 소정의 실시예에서, 쿼리의 엔트리를 위해 그리고 쿼리에 대한 응답을 제공하기 위해 사용되는 웹 페이지(또는 웹 페이지들)는 자바스크립트 또는 예를 들어 매크로미디어 플래시 오브젝트같은 다른 임베디드 코드 또는 마이크로소프트 실버라이트 오브젝트(이들 둘 다 각각의 브라우저 플러그인들과 함께 사용됨) 또는 예측된 서치 쿼리들을 수신하고 디스플레이하기 위해, 그리고 임의의 예측된 서치 쿼리들의 사용자 선택에 반응하기 위해,서버에 부분 서치 쿼리들의 전송을 촉진시키기 위한 명령들을 또한 포함한다. 특히 소정의 실시예에서 서치 어시스턴트(104)는 자바스크립트(선 마이크로시스템즈의 상표) 또는 클라이언트(102)에 의해 실행가능한 다른 명령들을 사용하여 구현되는, 예를 들어 실행 가능 함수로서 웹 페이지(1122)에 임베디드된다. 대안적으로, 서치 어시스턴트(104)는 클라이언트 어플리케이션(1120)의 부분으로서, 또는 클라이언트 어플리케이션(1120)과 관련된 클라이언트(102)에 의해 실행되는 클라이언트 어플리케이션(1120)의 확장 플러그인 또는 툴바로서 구현된다. 또 다른 실시예에서, 서치 어시스턴트(104)는 클라이언트 어플리케이션(1120)으로부터 분리되는 프로그램으로서 구현된다.
[0074] 소정의 실시예에서, 쿼리 정보를 프로세싱하기 위한 시스템은 프로그램들을 실행하기 위한 하나 이상의 중앙 프로세싱 유닛들 및 데이터를 저장하고 하나 이상의 중앙 프로세싱 유닛들에 의해 실행될 프로그램들을 저장할 메모리를 포함한다. 사용자들의 커뮤니티에 의해 이전에 제출되고, 랭킹 함수, 부분 서치 쿼리에 상응하는 세트에 따라 순서화되며, 영어 및 한국어 완성 서치 쿼리들 양쪽을 포함하는 완성 쿼리들의 세트를 저장한다. 메모리는 서치 요청자로부터 부분 서치 쿼리를 수신하기 위한 수신 모듈, 부분 서치 쿼리에 예측된 완성 쿼리들의 세트를 연관시키기 위한 예측 모듈, 및 서치 요청자에 상기 세트의 적어도 일부를 전송하기 위한 전송 모듈을 또한 저장한다.
[0075] 도 12는 상기 기술된 방법을 구현하는 서버 시스템(1200)의 실시예를 도시한다. 서버 시스템(1200)은 도 1의 서치 엔진(108) 및 도 3A의 서치 엔진(304)에 상응한다. 서버 시스템(1200)은 하나 이상의 프로세싱 유닛들(CPU's; 1202), 하나 이상의 네트워크 또는 다른 통신 인터페이스들(1204), 메모리(1206), 및 이러한 구성 요소들과 상호연결하기 위한 하나 이상의 통신 버스들(1208)을 포함한다. 통신 버스들은(1208)은 시스템 구성 요소들 사이의 통신을 상호 연결하고 제어하는(때때로 칩셋으로 지칭되는) 회로를 포함할 수 있다. 소정의 다른 실시예에서 서버 시스템(1200)은 그 처리량 및 안정성을 개선하기 위해 다중 서버들을 사용하여 구현될 수 있다. 예를 들어 쿼리 로그들(124 및 126)은 서버 시스템(1200) 서버들의 다른 쿼리로그들과 통신하고 관련되어 작업하는 구별 서버 상에 구현될 수 있다. 다른 예에서, 순서화 세트 빌더(208)은 분리 서버들 또는 컴퓨팅 장치들에 구현될 수 있다. 따라서, 도 12는 여기서 기술된 실시예의 개략적인 구조로서 보다 서버들 세트에 제공될 수 있는 다양한 특징들의 기능적 기술로서 더 의도된다. 서버 시스템(1200)을 구현하기 위해 사용된 서버들의 실제 수 및 특징들이 서버들 사이에서 어떻게 할당되는지는 하나의 구현으로부터 다른 것까지 다양할 것이며, 시스템이 피크 사용 기간들 동안 및 평균 사용 기간들 동안 처리해야 하는 데이터 트래픽의 양에 부분적으로 의존할 수 있다.
[0076] 메모리(1206)는 고속 랜덤 액세스 메모리를 포함할 수 있고 또한 하나 이상의 자기 또는 광학 스토리지 디스크들, 플래시 메모리 장치들, 또는 다른 비휘발성 고체 상태 스토리지 장치들(non- volatile solid state storage devices)을 포함할 수 있다. 고속 랜덤 액세스 메모리는 DRAM, SRAM, DDR 램 또는 다른 랜덤 액세스 고체 상태 메모리 장치들와 같은 메모리 장치들을 포함할 수 있다. 메모리(1206)는 선택적으로 CPU's(1202)로부터 원격 위치되는 대용량 저장 장치를 포함할 수 있다. 메모리(1206), 또는 교대로 메모리(1206) 내의 비휘발성 메모리 장치(들)은 컴퓨터 판독 가능 스토리지 매체를 포함한다. :메모리(1206)는 다음과 같은 요소들 또는 이러한 요소들의 서브세트를 저장하며, 또한 추가 요소들을 포함할 수 있다:
·다양한 기본 시스템 서비스들을 처리하기 위해 그리고 하드웨어 의존 태스크들을 수행하기 위한 절차들을 포함하는 운영 시스템(1216);
·인터넷, 다른 광역 네트워크, 로컬 영역 네트워크들, 도심 영역 네트워크들, 등과 같은, 하나 이상의 통신 네트워크 인터페이스들(1204) 및 하나 이상의 통신 네트워크들을 통해 다른 컴퓨터에 서버 시스템(1200)을 연결하기 위해 이용되는 네트워크 통신 모듈(또는 명령들(instructions)(1218);
·클라이언트로부터 부분 서치 쿼리들 및 완성 서치 쿼리들 및 전달되는 응답들을 수신하기 위한 쿼리 서버(110); 및
·쿼리 서버(110)로부터 부분 서치 쿼리들을 수신히기 위한 그리고 응답들을 생산하고 전달하기 위한 예측 서버(112).
[0077] 쿼리 서버(110)는 다음의 요소들, 또는 이러한 요소들의 서브세트를 포함할 수 있으며, 또한 추가적인 요소들을 포함할 수 있다:
·클라이언트와 쿼리들 및 응답들을 통신하기 위해 사용되는 클라이언트 통신 모듈(또는 명령들; 116);
·부분 쿼리 수신, 프로세싱 및 응답 모듈(또는 명령들; 120); 및
·사용자들의 커뮤니티에 의해 제출된 쿼리들에 대한 정보를 포함하는 하나 이상의 쿼리 로그(124 및 126).
[0078] 쿼리 프로세싱 모듈(또는 명령들)(114)는 쿼리 서버(110)로부터 완성 서치 쿼리들을 수신하며, 응답들을 생산하여 전달한다. 소정의 실시예에서, 쿼리 프로세싱 모듈(또는 명령들)은 쿼리 결과들 및 선택적으로 추가 정보, 예를 들어 쿼리 결과들과 관련된 광고들을 포함하는 정보를 포함하는 데이터베이스를 포함한다.
[0079] 예측 서버(112)는 다음의 요소들, 이러한 요소들의 서브세트를 포함할 수 있으며, 또한 추가 요소들을 포함할 수 있다:
·부분 쿼리 수신 모듈(또는 명령들)(1222);
·언어 결정 모듈(또는 명령들)(1224);
·언어 변환 모듈(또는 명령들)(1226);
·해쉬 함수(또는 다른 핑거프린트 함수)(1228);
·쿼리 완성 테이블 룩업을 위한 모듈(또는 명령들)(1230);
·결과들 순서화 모듈(또는 명령들)(1232);
·결과들 전송 모듈(또는 명령들)(1234); 및
·하나 이상의 쿼리 완성 테이블들(212) 및(상기 도 2를 참조하여 기술된) 하나 이상의 핑거프린트 대 테이블 맵들(210)을 포함할 수 있는 예측 데이터베이스(1220).
[0080] 순서화 세트 빌더(208)는 하나 이상의 필터들(204, 205) 및/또는 언어 변환 모듈(또는 명령들)(250)을 선택적으로 포함할 수 있다.
[0081] 여기서 서치 요청자로부터 원격 위치된 예측 데이터베이스를 이용하기 위해 설계되는 서버에 대해 설명된다 할지라도 여기서 개시된 개념들은 다른 서치 환경들에 동등하게 적용될 수 있다는 것이 이해되어 져야 한다. 예를 들어, 여기서 기술된 동일한 기술들은 어떤 쿼리들, 또는 서치들이 실행되는가에 대해 임의 타입의 정보 저장소에 대한 쿼리들에 적용될 수 있다. 따라서, 용어 "서버"는 모든 이러한 사용들을 완전히 처리하도록 광범위하게 구축되어야 한다.
[0082] 구별 모듈들 또는 구성 요소들로서 도 11 및 도 12에 도시된다 할지라도, 다양한 모듈들 또는 구성 요소들은 서버 또는 클라이언트 어느 한쪽 내에 위치되거나 함께 위치될 수 있다. 소정의 실시예에서, 예를 들어, 예측 서버(112)의 일부들, 및/또는 예측 데이터베이스(1220)는 클라이언트 시스템(102) 상에 상주하거나 서치 어시스턴트(104)의 부분을 형성한다. 소정의 실시예에서, 예를 들어 해쉬 함수(1228) 및 가장 인기 있는 서치들에 대한 하나 이상의 쿼리 완성 테이블들(212) 및 하나 이상의 핑거프린트 대 테이블 맵들(210)은 주기적으로 클라이언트 시스템(102)에 다운로딩될 수 있고, 이에 따라 적어도 소정의 부분 서치 쿼리들에 대한 완전히 클라이언트-기반 프로세싱을 제공할 수 있다.
[0083] 다른 실시예에서 서치 어시스턴트(104)는 사용자에 의해 선행 쿼리들에 적어도 부분적으로 기초한 완전 서치 쿼리 예측들을 만들기 위해, 예측 서버(112)의 로컬 버전을 포함할 수 있다. 대안적으로, 또는 추가적으로, 로컬 예측 서버는 서버 또는 원격 예측 서버로부터 데이터 다운로드에 기초한 예측들을 발생시킬 수 있다. 또한, 서치 어시스턴트(104)는 사용자에 표시를 위해 로컬로 발생된 및 원격으로 발생된 예측 세트들을 병합할 수 있다. 결과들은, 예를 들어 그러한 쿼리들이 예측된 쿼리들의 조합된 리스트의 맨위 쪽으로 위치되거나 삽입되는 경향이 있도록 사용자에 의해 이전에 제출된 쿼리들을 편향시키는 동안 세트들을 병합하는 것에 의해 또는 두 개의 세트들을 상호 배치하는 것에 의해 임의의 수많은 방법들로 병합될 수 있다. 소정의 실시예에서 서치 어시스턴트(104)는 예측들 세트 내로 사용자에게 중요하게 생각되는 쿼리들을 삽입한다. 예를 들어, 사용자에 의해 빈번하게 제출되나, 서버로부터 획득된 세트에 포함되지 않는 쿼리는 상기 예측들 내로 삽입될 수 있다.
[0084] 도 3A, 도 3B, 도 5, 도 7 및 도 9와 같이 순서도들에 도시된 작업들, 및 클라이언트 시스템, 서버, 서치 엔진 또는 동류의 것에 의해 수행되는 이 문서에 기술된 다른 작업들은 각각의 클라이언트 시스템, 서버 또는 다른 컴퓨터 시스템의 컴퓨터 판독 가능한 스토리지 매체에 저장되는 명령들에 상응한다. 그러한 컴퓨터 판독 가능한 스토리지 매체의 예시들은 도 11(메모리 1106) 및 도 12(메모리 1206)에 도시된다. 이 문서에 기술된 각각의 소프트웨어 모듈들, 프로그램들 및/또는 실행가능한 함수들은 각각 컴퓨터 판독 가능 스토리지 매체에 저장된 명령들에 상응하며, 상기 기술된 함수를 수행하기 위한 명령들의 세트에 상응한다. 식별된 모듈들, 프로그램들 및/또는 함수들(즉, 명령들의 세트들)은 별개의 소프트웨어 프로그램들, 프로시저들 또는 모듈들로서 구현될 필요 없으며, 따라서 이러한 모듈들의 다양한 서브세트들은 다양한 실시예에서 조합되거나 다른 방법으로 재배치될 수 있다.
[0085] 도 13은 설명한 클라이언트 시스템의 사용자 인터페이스를 도시한다. 이 실시예에서, 브라우저 어플리케이션의 윈도우(1310)는 부분 쿼리 <ah>의 엔트리를 나타내는 텍스트 엔트리 박스(1320)를 포함한다. 부분 쿼리를 탐지하고 및 예측 서버 또는 서치 엔진으로부터 예측된 완성 쿼리들을 수신에 응답하여, 예측된 완성 쿼리들의 적어도 서브세트는 클라이언트 시스템의 사용자에 의해 가능한 선택을 위해 디스플레이 영역(1330)에 디스플레이된다. 기술된 대로, 예측된 완성 쿼리들은 텍스트 엔트리 박스(1320)로부터 확장되는(디스플레이 영역(1330)에 상응하는) 드랍-다운 박스에 제공된다. 부분 쿼리 <ah>의 엔트리가 영어 결과들(예측된 완전 쿼리들), 즉 <aha> 및 <ahead>, 또한 한국어 결과를 발생시키는 것을 유의한다. 이것은 상기 설명된 바와 같이, 한국어 결과가 <ahqkdlf>의 로마자 표시에 상응하기 때문이다. 따라서, 부분 쿼리가 입력 방법 에러 때문에 실수로(예, 한국어 또는 한글 텍스트 엔트리 대신 영어 문자 엔트리를 사용하여) 사용자의 부분에 입력되고, 예측 결과들이 사용자가 관심 있는 한국어 쿼리를 포함한다면, 사용자는 목표된 한국어 쿼리를 선택하여 부분 쿼리의 리-엔트리(re-entry)를 피할 수 있다.
[0086] 소정의 다양한 도면들은 특정 순서로 수많은 로컬 단계들을 도시할지라도, 종속된 순서가 아닌 단계들은 다시 순서화될 수 있고 다른 단계들이 조합되거나 일어날 수 있다. 소정의 순서화 또는 다른 그룹핑들이 특별히 언급되는 반면, 다른 것들은 본 발명이 속한 기술분야의 통상의 지식을 가진자에 명백할 것이어서, 대안들의 철저한 리스트를 제공하지는 않는다. 더욱이, 단계들은 하드웨어, 펌웨어, 소프트웨어 또는 이들의 임의의 조합으로 구현될 수 있다.
[0087] 설명을 위해 앞서 말한 설명은 특정 실시예들을 참조하여 기술되었다. 그러나, 상기 도시적인 설명들은 개시된 정확한 형태들에 본 발명을 제한하거나 철저히 규명하려고 의도되지 않는다. 많은 수정예 및 변형예들가 상기 교습의 관점에서 가능하다. 상기 실시예들은 본 발명 원리 및 그 실시 어플리케이션들을 가장 잘 설명하기 위해 선택되고 기술되었고, 이에 따라 특정 사용에 적합한 다양한 수정예가 고려되면서 기술분야의 숙련된 기술을 가진 자가 본 발명 및 다양한 실시예들을 가장 잘 활용하게 한다.

Claims (31)

  1. 서버에서,
    상기 서버로부터 원격에 위치되는 서치 요청자로부터 부분 서치 쿼리를 수신하는 단계;
    상기 부분 서치 쿼리에 상응하는 예측된 완성 쿼리들의 세트를 복수의 이전에 제출된 완성 쿼리들로부터 획득하는 단계;
    상기 예측된 완성 쿼리들을 랭킹 기준에 따라 순서화하는 단계; 및
    상기 순서화된 세트의 적어도 서브세트를 상기 서치 요청자에 전달하는 단계를 포함하되,
    상기 예측된 완성 쿼리들의 세트가 제 1 언어 및 제 2 언어 양쪽의 완성 서치 쿼리들을 포함하는
    쿼리 정보를 프로세싱하기 위한 방법.
  2. 제 1 항에 있어서,
    상기 제 1 언어는 한국어이고 제 2 언어는 영어인
    쿼리 정보를 프로세싱하기 위한 방법.
  3. 제 1 항에 있어서,
    상기 부분 서치 쿼리가 부분적으로 입력된 제 1 언어 서치 쿼리를 포함할 때, 상기 부분 서치 쿼리의 로마자 표시를 발생시키는 단계를 포함하는
    쿼리 정보를 프로세싱하기 위한 방법.
  4. 제 1 항에 있어서,
    상기 예측된 완성 쿼리들의 세트를 획득하는 단계는
    상기 수신된 부분 서치 쿼리가 하나 이상의 제 1 언어 문자들을 포함할 때,
    상기 부분 서치 쿼리를 상기 제 2 언어의 문자들의 상기 부분 서치 쿼리의 표시로 변환하는 단계;
    상기 부분 서치 쿼리의 표시에 해쉬 함수를 적용시켜 해쉬 값을 생산하는 단계; 및
    상기 예측된 완성 쿼리들을 획득하도록 상기 해쉬 값을 사용하여 룩업 작업을 수행하는 단계를 포함하는
    쿼리 정보를 프로세싱하기 위한 방법.
  5. 제 1 항에 있어서,
    상기 예측된 완성 쿼리들의 세트를 획득하는 단계는
    상기 부분 서치 쿼리가 하나 이상의 제 1 언어 완성 문자들 및 제 1 언어 미완성 문자를 포함할 때,
    상기 부분 서치 쿼리를 상기 부분 서치 쿼리의 로마자 표시로 변환하는 단계;
    상기 부분 서치 쿼리의 로마자 표시에 해쉬 함수를 적용하여 해쉬 값을 생산하는 단계; 및
    상기 예측된 완성 쿼리들을 획득하도록 상기 해쉬 값을 사용하여 룩업 작업을 수행하는 단계를 포함하는
    쿼리 정보를 프로세싱하기 위한 방법.
  6. 제 1 항에 있어서,
    상기 수신된 부분 서치 쿼리가 하나 이상의 제 1 언어 완성 문자들 및 제 1 언어 미완성 문자를 포함하는
    쿼리 정보를 프로세싱하기 위한 방법.
  7. 제 1 항에 있어서,
    상기 전달하는 단계에 앞서, 하나 이상의 용어들을 하나 이상의 미리 정해진 용어들의 세트들와 매칭하여, 만약 있다면 쿼리들을 제거하도록 예측된 완성 쿼리들을 필터링하는 단계를 포함하는
    쿼리 정보를 프로세싱하기 위한 방법.
  8. 클라이언트에서,
    서치 요청자로부터 부분 서치 쿼리를 수신하는 단계;
    사용자들 커뮤니티에 의해 복수의 이전에 제출된 완성 쿼리들로부터 상기 부분 서치 쿼리에 상응하는 예측된 완성 쿼리들의 세트를 획득하는 단계; 및
    상기 서치 요청자에게 상기 순서화 세트의 적어도 서브세트를 디스플레이하는 단계를 포함하되,
    상기 예측된 완성 쿼리들의 세트가 제 1 언어 및 제 2 언어의 완성 서치 쿼리들 양쪽을 포함하고 랭킹 기준에 따라 순서화되는
    쿼리 정보를 프로세싱하기 위한 방법.
  9. 제 8 항에 있어서,
    상기 제 1 언어는 한국어이고 상기 제 2 언어는 영어인
    쿼리 정보를 프로세싱하기 위한 방법.
  10. 제 8 항에 있어서,
    상기 부분 서치 쿼리가 부분적으로 입력된 제 1 언어 서치 쿼리를 포함할 때, 상기 제 1 언어 부분 서치 쿼리의 로마자 표시를 발생시키는 단계를 포함하는
    쿼리 정보를 프로세싱하기 위한 방법.
  11. 제 8 항에 있어서,
    상기 수신된 부분 서치 쿼리가 하나 이상의 제 1 언어 문자들을 포함할 때, 상기 획득하는 단계는
    상기 부분 서치 쿼리를 상기 제 2 언어의 문자들의 상기 부분 서치 쿼리의 표시로 변환하는 단계;
    상기 부분 서치 쿼리의 표시에 해쉬 함수를 적용시켜 해쉬 값을 생산하는 단계; 및
    상기 예측된 완성 쿼리들을 획득하도록 상기 해쉬 값을 사용하여 룩업 작업을 수행하는 단계를 포함하는
    쿼리 정보를 프로세싱하기 위한 방법.
  12. 제 8 항에 있어서,
    상기 획득하는 단계는
    상기 수신된 부분 서치 쿼리가 하나 이상의 제 1 언어 완성 문자들 및 제 1 언어 미완성 문자를 포함할 때,
    상기 부분 서치 쿼리를 상기 부분 서치 쿼리의 로마자 표시로 변환하는 단계,
    상기 부분 서치 쿼리의 로마자 표시에 해쉬 함수를 적용하여 해쉬 값을 생산하는 단계, 및
    상기 예측된 완성 쿼리들을 획득하도록 상기 해쉬 값을 이용하여 룩업 작업을 수행하는 단계를 포함하는
    쿼리 정보를 프로세싱하기 위한 방법.
  13. 제 8 항에 있어서,
    상기 수신된 부분 서치 쿼리가 하나 이상의 제 1 언어 완성 문자들 및 제 1 언어 미완성 문자를 포함하는
    쿼리 정보를 프로세싱하기 위한 방법.
  14. 프로그램들 실행을 위한 하나 이상의 중앙 프로세싱 유닛들; 및
    상기 하나 이상의 중앙 프로세싱 유닛들에 의해 실행되도록 데이터를 저장하고 하나 이상의 프로그램들을 저장할 메모리를 포함하는 쿼리 정보를 프로세싱하기 위한 시스템으로서,
    상기 하나 이상의 프로그램들이
    서버로부터 원격에 위치하는 서치 요청자로부터 부분 서치 쿼리를 수신하는 명령;
    상기 부분 서치 쿼리에 상응하는 예측된 완성 쿼리들의 세트를 복수의 이전에 제출된 완성 쿼리들로부터 획득하는 명령;
    상기 예측된 완성 쿼리들을 랭킹 기준에 따라 순서화하는 명령; 및
    상기 순서화된 세트의 적어도 서브세트를 상기 서치 요청자에 전달하는 명령들을 포함하되
    상기 예측된 완성 쿼리들의 세트가 제 1 언어 및 상기 제 1 언어와 구별되는 제 2 언어 양쪽의 완성 서치 쿼리들을 포함하는
    쿼리 정보를 프로세싱하기 위한 시스템.
  15. 제 14항에 있어서,
    상기 하나 이상의 프로그램들이 부분적으로 입력된 제 1 언어 서치 쿼리를 포함하는 각각의 부분 서치 쿼리의 로마자 표시를 발생시키기 위한 명령들을 포함하는
    쿼리 정보를 프로세싱하기 위한 시스템.
  16. 제 14항에 있어서,
    상기 예측된 완성 쿼리들의 세트를 획득하기 위한 명령들은
    하나 이상의 제 1 언어 문자들을 포함하는 각각의 부분 서치 쿼리를 상기 제 2 언어의 문자들의 상기 각각의 부분 서치 쿼리의 표시로 변환하는 명령;
    상기 부분 서치 쿼리의 표시에 해쉬 함수를 적용시켜 해쉬 값을 생산하는 명령; 및
    상기 예측된 완성 쿼리들을 획득하도록 상기 해쉬 값을 사용하여 룩업 작업을 수행하는 명령을 포함하는
    쿼리 정보를 프로세싱하기 위한 시스템.
  17. 제 14항에 있어서,
    상기 예측된 완성 쿼리들의 세트를 획득하기 위한 명령들이
    하나 이상의 제 1 언어 완성 문자들 및 제 1 언어 미완성 문자를 포함하는 각각의 부분 서치 쿼리를 상기 각각의 부분 서치 쿼리의 로마자 표시로 변환하는 명령,
    상기 각각의 부분 서치 쿼리의 로마자 표시에 해쉬 함수를 적용하여 해쉬 값을 생산하는 명령, 및
    상기 예측된 완성 쿼리들을 획득하도록 상기 해쉬 값을 이용하여 룩업 작업을 수행하는 명령을 포함하는
    쿼리 정보를 프로세싱하기 위한 시스템.
  18. 제 14항에 있어서,
    상기 수신된 부분 서치 쿼리가 하나 이상의 제 1 언어 완성 문자들 및 제 1 언어 미완성 문자를 포함하는
    쿼리 정보를 프로세싱하기 위한 시스템.
  19. 제 14항에 있어서,
    상기 예측된 완성 쿼리들의 세트를 획득하기 위한 명령들은 하나 이상의 용어들을 하나 이상의 미리 정해진 용어들의 세트들과 매칭하여, 만약 있다면 쿼리들을 제거하도록 상기 예측된 완성 쿼리들을 필터링하기 위한 명령들을 포함하는
    쿼리 정보를 프로세싱하기 위한 시스템.
  20. 제 14항에 있어서,
    상기 예측된 완성 쿼리들의 세트를 획득하기 위한 명령들은
    하나 이상의 한국어 문자들을 포함하는 각각의 부분 서치 쿼리를 상기 각각의 부분 서치 쿼리의 로마자 표시로 변환하는 명령;
    상기 부분 서치 쿼리의 로마자 표시에 해쉬 함수를 적용시켜 해쉬 값을 생산하는 명령; 및
    상기 예측된 완성 쿼리들을 획득하도록 상기 해쉬 값을 사용하여 룩업 작업을 수행하는 명령을 포함하는
    쿼리 정보를 프로세싱하기 위한 시스템.
  21. 제 14항에 있어서,
    상기 예측된 완성 쿼리들의 세트를 획득하기 위한 명령들은
    하나 이상의 완성 한국어 문자들 및 미완성 한국어 문자를 포함하는 각각의 부분 서치 쿼리를 상기 각각의 부분 서치 쿼리의 로마자 표시로 변환하는 명령,
    상기 각각의 부분 서치 쿼리의 로마자 표시에 해쉬 함수를 적용하여 해쉬 값을 생산하는 명령, 및
    상기 예측된 완성 쿼리들을 획득하도록 상기 해쉬 값을 이용하여 룩업 작업을 수행하는 명령을 포함하는
    쿼리 정보를 프로세싱하기 위한 시스템.
  22. 제 14항에 있어서,
    상기 수신된 부분 서치 쿼리가 하나 이상의 완성 한국어 문자들 및 미완성 한국어 문자를 포함하는
    쿼리 정보를 프로세싱하기 위한 시스템.
  23. 쿼리 정보를 프로세싱하기 위해 데이터 구조를 구축하기 위한 방법에 있어서,
    사용자들의 커뮤니티에 의해 이전에 제출된 제 1 언어 완성 쿼리들의 세트를 획득하는 단계;
    사용자들의 커뮤니티에 의해 이전에 제출된 완성 제 2 언어 쿼리들의 세트를 획득하는 단계;
    상기 제 1 언어 완성 쿼리들의 세트를 로마자 표시의 완성된 제 2 언어 쿼리들의 세트로 변환하는 단계; 및
    상기 제 1 언어 완성 쿼리들 및 제 2 언어 로마자 완성 쿼리들을 하나 이상의 쿼리 완성 데이터 테이블들에 저장하는 단계를 포함하되,
    상기 하나 이상의 쿼리 완성 데이터 테이블들이 제 1 언어 부분 쿼리들 또는 제 2 언어 부분 쿼리들 중 한쪽에 상응하는 제 1 언어 및 제 2 언어 완성 쿼리들 양쪽을 예측하도록 사용될 수 있는 하나 이상의 데이터 구조들을 형성하는
    쿼리 정보를 프로세싱하기 위해 데이터 구조를 구축하기 위한 방법.
  24. 제 23항에 있어서,
    상기 이전에 제출된 제 1 언어 완성 쿼리들의 세트 및 상기 이전에 제출된 제 2 언어 쿼리들의 세트를 필터링하여서 하나 이상의 미리 정해진 용어들 세트들과 매칭되는 쿼리들을 배제시키는 단계를 포함하는
    쿼리 정보를 프로세싱하기 위해 데이터 구조를 구축하기 위한 방법.
  25. 제 23항에 있어서,
    상기 제 1 언어는 한국어이며 상기 제 2 언어는 영어인
    쿼리 정보를 프로세싱하기 위해 데이터 구조를 구축하기 위한 방법.
  26. 프로그램들을 실행하기 위한 하나 이상의 중앙 프로세싱 유닛들; 및
    상기 하나 이상의 중앙 프로세싱 유닛들에 의해 실행되도록 데이터를 저장하고 하나 이상의 프로그램들을 저장할 메모리를 포함하는 클라이언트 시스템으로서,
    상기 하나 이상의 프로그램들이
    서치 요청자로부터 부분 서치 쿼리를 수신하는 명령;
    상기 부분 서치 쿼리에 상응하는 예측된 완성 쿼리들의 세트를 사용자들의 커뮤니티에 의해 복수의 이전에 제출된 완성 쿼리들로부터 획득하는 명령; 및
    상기 서치 요청자에 상기 순서화된 세트의 적어도 서브세트를 디스플레이하는 명령을 포함하되,
    상기 예측된 완성 쿼리들의 세트가 제 1 언어 및 상기 제 2 언어 완성 서치 쿼리들을 포함하고 랭킹 기준에 따라 순서화되는
    클라이언트 시스템.
  27. 제 26 항에 있어서,
    상기 제 1 언어는 한국어이고 상기 제 2 언어는 영어인
    클라이언트 시스템.
  28. 상기 각각의 서버 시스템의 하나 이상의 프로세서들에 의한 실행을 위해 하나 이상의 프로그램들을 저장하는 컴퓨터 판독 가능 저장 매체로서,
    상기 하나 이상의 프로그램들이
    서버로부터 원격에 위치하는 서치 요청자로부터 부분 서치 쿼리를 수신하는 명령;
    상기 부분 서치 쿼리에 상응하는 예측된 완성 쿼리들의 세트를 사용자들의 커뮤니티에 의해 복수의 이전에 제출된 완성 쿼리들로부터 획득하는 명령;
    상기 예측된 완성 쿼리들을 랭킹 기준에 따라 순서화하는 명령; 및
    상기 순서화된 세트의 적어도 서브세트를 상기 서치 요청자에 전달하는 명령들을 포함하되,
    상기 예측된 완성 쿼리들의 세트가 제 1 언어 및 상기 제 2 언어 완성 서치 쿼리들 양쪽을 포함하는
    컴퓨터 판독 가능 저장 매체.
  29. 제 28 항에 있어서,
    상기 제 1 언어는 한국어이고 상기 제 2 언어는 영어인
    컴퓨터 판독 가능 저장 매체.
  30. 각각의 클라이언트 장치 또는 시스템의 하나 이상의 프로세서들에 의한 실행을 위해 하나 이상의 프로그램들을 저장하는 컴퓨터 판독 가능 저장 매체로서,
    상기 하나 이상의 프로그램들이
    서치 요청자로부터 부분 서치 쿼리를 수신하는 명령;
    상기 부분 서치 쿼리에 상응하는 예측된 완성 쿼리들의 세트를 사용자들의 커뮤니티에 의해 복수의 이전에 제출된 완성 쿼리들로부터 획득하는 명령; 및
    상기 서치 요청자에 상기 순서화된 세트의 적어도 서브세트를 디스플레이하는 명령을 포함하되,
    상기 예측된 완성 쿼리들의 세트가 제 1 언어 및 제 2 언어 완성 서치 쿼리들 양쪽을 포함하며 랭킹 기준에 따라 순서화되는
    컴퓨터 판독 가능 저장 매체.
  31. 제 30 항에 있어서,
    상기 제 1 언어는 한국어이고 상기 제 2 언어는 영어인
    컴퓨터 판독 가능 저장 매체.
KR1020107005258A 2007-08-09 2008-08-08 부분 입력된 검색 쿼리에 대한 자동완성 및 입력 방법 자동 변환 KR101533570B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US95489807P 2007-08-09 2007-08-09
US60/954,898 2007-08-09
US12/188,163 US20090043741A1 (en) 2007-08-09 2008-08-07 Autocompletion and Automatic Input Method Correction for Partially Entered Search Query
US12/188,163 2008-08-07
PCT/US2008/072678 WO2009021204A2 (en) 2007-08-09 2008-08-08 Autocompletion and automatic input method correction for partially entered search query

Publications (2)

Publication Number Publication Date
KR20100068382A true KR20100068382A (ko) 2010-06-23
KR101533570B1 KR101533570B1 (ko) 2015-07-06

Family

ID=40342066

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020107005258A KR101533570B1 (ko) 2007-08-09 2008-08-08 부분 입력된 검색 쿼리에 대한 자동완성 및 입력 방법 자동 변환

Country Status (4)

Country Link
US (1) US20090043741A1 (ko)
KR (1) KR101533570B1 (ko)
CN (1) CN101816000B (ko)
WO (1) WO2009021204A2 (ko)

Families Citing this family (78)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090006543A1 (en) * 2001-08-20 2009-01-01 Masterobjects System and method for asynchronous retrieval of information based on incremental user input
US7305700B2 (en) 2002-01-08 2007-12-04 Seven Networks, Inc. Secure transport for mobile communication network
US7836044B2 (en) 2004-06-22 2010-11-16 Google Inc. Anticipated query generation and processing in a search engine
US7487145B1 (en) 2004-06-22 2009-02-03 Google Inc. Method and system for autocompletion using ranked results
US20060106769A1 (en) 2004-11-12 2006-05-18 Gibbs Kevin A Method and system for autocompletion for languages having ideographs and phonetic characters
US8438633B1 (en) 2005-04-21 2013-05-07 Seven Networks, Inc. Flexible real-time inbox access
WO2006136660A1 (en) 2005-06-21 2006-12-28 Seven Networks International Oy Maintaining an ip connection in a mobile network
US8086624B1 (en) 2007-04-17 2011-12-27 Google Inc. Determining proximity to topics of advertisements
US8229942B1 (en) * 2007-04-17 2012-07-24 Google Inc. Identifying negative keywords associated with advertisements
US8805425B2 (en) 2007-06-01 2014-08-12 Seven Networks, Inc. Integrated messaging
US9002828B2 (en) * 2007-12-13 2015-04-07 Seven Networks, Inc. Predictive content delivery
US8862657B2 (en) 2008-01-25 2014-10-14 Seven Networks, Inc. Policy based content service
US20090193338A1 (en) 2008-01-28 2009-07-30 Trevor Fiatal Reducing network and battery consumption during content delivery and playback
US8312032B2 (en) * 2008-07-10 2012-11-13 Google Inc. Dictionary suggestions for partial user entries
US8909759B2 (en) 2008-10-10 2014-12-09 Seven Networks, Inc. Bandwidth measurement
JP2010102456A (ja) * 2008-10-22 2010-05-06 Sony Computer Entertainment Inc コンテンツ提供装置、コンテンツ提供システム、コンテンツ提供方法およびユーザインタフェースプログラム
CN102483752A (zh) * 2009-06-03 2012-05-30 谷歌公司 用于部分输入的查询的自动完成
WO2011026145A2 (en) 2009-08-31 2011-03-03 Google Inc. Framework for selecting and presenting answer boxes relevant to user input as query suggestions
US8676828B1 (en) * 2009-11-04 2014-03-18 Google Inc. Selecting and presenting content relevant to user input
US20120254216A1 (en) * 2009-12-14 2012-10-04 Mitsubishi Electric Corporation Input support device
US8631004B2 (en) * 2009-12-28 2014-01-14 Yahoo! Inc. Search suggestion clustering and presentation
CN102298582B (zh) * 2010-06-23 2016-09-21 商业对象软件有限公司 数据搜索和匹配方法和系统
US8560562B2 (en) * 2010-07-22 2013-10-15 Google Inc. Predictive query suggestion caching
US9043433B2 (en) 2010-07-26 2015-05-26 Seven Networks, Inc. Mobile network traffic coordination across multiple applications
US8838783B2 (en) 2010-07-26 2014-09-16 Seven Networks, Inc. Distributed caching for resource and mobile network traffic management
AU2011291544B2 (en) 2010-08-19 2015-03-26 Google Llc Predictive query completion and predictive search results
US8812733B1 (en) 2010-08-19 2014-08-19 Google Inc. Transport protocol independent communications library
US8843153B2 (en) 2010-11-01 2014-09-23 Seven Networks, Inc. Mobile traffic categorization and policy for network use optimization while preserving user experience
WO2012060995A2 (en) 2010-11-01 2012-05-10 Michael Luna Distributed caching in a wireless network of content delivered for a mobile application over a long-held request
US8515984B2 (en) 2010-11-16 2013-08-20 Microsoft Corporation Extensible search term suggestion engine
US10073927B2 (en) 2010-11-16 2018-09-11 Microsoft Technology Licensing, Llc Registration for system level search user interface
US10346479B2 (en) 2010-11-16 2019-07-09 Microsoft Technology Licensing, Llc Facilitating interaction with system level search user interface
US20120124072A1 (en) 2010-11-16 2012-05-17 Microsoft Corporation System level search user interface
US8364709B1 (en) 2010-11-22 2013-01-29 Google Inc. Determining word boundary likelihoods in potentially incomplete text
US8930391B2 (en) 2010-12-29 2015-01-06 Microsoft Corporation Progressive spatial searching using augmented structures
US9031970B1 (en) 2011-01-26 2015-05-12 Google Inc. Query autocompletions
GB2505103B (en) 2011-04-19 2014-10-22 Seven Networks Inc Social caching for device resource sharing and management cross-reference to related applications
US20120278431A1 (en) 2011-04-27 2012-11-01 Michael Luna Mobile device which offloads requests made by a mobile application to a remote entity for conservation of mobile device and network resources and methods therefor
KR101850124B1 (ko) * 2011-06-24 2018-04-19 구글 엘엘씨 교차-언어 쿼리 제안을 위한 쿼리 번역 평가
US8612418B2 (en) * 2011-07-14 2013-12-17 Google Inc. Mobile web browser for pre-loading web pages
US8762356B1 (en) 2011-07-15 2014-06-24 Google Inc. Detecting change in rate of input reception
US8645825B1 (en) 2011-08-31 2014-02-04 Google Inc. Providing autocomplete suggestions
US9043350B2 (en) * 2011-09-22 2015-05-26 Microsoft Technology Licensing, Llc Providing topic based search guidance
US9251126B1 (en) 2011-11-16 2016-02-02 Google Inc. System and method for using pre-defined character ranges to denote document features
US8612414B2 (en) 2011-11-21 2013-12-17 Google Inc. Grouped search query refinements
US8918503B2 (en) 2011-12-06 2014-12-23 Seven Networks, Inc. Optimization of mobile traffic directed to private networks and operator configurability thereof
EP2789138B1 (en) 2011-12-06 2016-09-14 Seven Networks, LLC A mobile device and method to utilize the failover mechanisms for fault tolerance provided for mobile traffic management and network/device resource conservation
GB2498064A (en) 2011-12-07 2013-07-03 Seven Networks Inc Distributed content caching mechanism using a network operator proxy
US9277443B2 (en) 2011-12-07 2016-03-01 Seven Networks, Llc Radio-awareness of mobile device for sending server-side control signals using a wireless network optimized transport protocol
US9348479B2 (en) 2011-12-08 2016-05-24 Microsoft Technology Licensing, Llc Sentiment aware user interface customization
WO2013090212A1 (en) 2011-12-14 2013-06-20 Seven Networks, Inc. Mobile network reporting and usage analytics system and method using aggregation of data in a distributed traffic optimization system
US9378290B2 (en) 2011-12-20 2016-06-28 Microsoft Technology Licensing, Llc Scenario-adaptive input method editor
US9285954B2 (en) * 2012-02-29 2016-03-15 Google Inc. Dynamically-generated selectable option icons
US10078672B2 (en) * 2012-03-21 2018-09-18 Toshiba Solutions Corporation Search device, search method, and computer program product
US8812695B2 (en) 2012-04-09 2014-08-19 Seven Networks, Inc. Method and system for management of a virtual network connection without heartbeat messages
CN104428734A (zh) 2012-06-25 2015-03-18 微软公司 输入法编辑器应用平台
CN104412212A (zh) * 2012-06-29 2015-03-11 微软公司 输入法编辑器
US8775631B2 (en) 2012-07-13 2014-07-08 Seven Networks, Inc. Dynamic bandwidth adjustment for browsing or streaming activity in a wireless network based on prediction of user behavior when interacting with mobile applications
WO2014032244A1 (en) 2012-08-30 2014-03-06 Microsoft Corporation Feature-based candidate selection
US9384279B2 (en) 2012-12-07 2016-07-05 Charles Reed Method and system for previewing search results
US9201856B2 (en) 2012-12-17 2015-12-01 Amadeus S.A.S. Recommendation engine for interactive search forms
US9268759B2 (en) 2012-12-17 2016-02-23 Amadeus S.A.S. Recommendation engine for interactive search forms
US8874761B2 (en) 2013-01-25 2014-10-28 Seven Networks, Inc. Signaling optimization in a wireless network for traffic utilizing proprietary and non-proprietary protocols
US9195716B2 (en) * 2013-02-28 2015-11-24 Facebook, Inc. Techniques for ranking character searches
US9326185B2 (en) 2013-03-11 2016-04-26 Seven Networks, Llc Mobile network congestion recognition for optimization of mobile traffic
US9065765B2 (en) 2013-07-22 2015-06-23 Seven Networks, Inc. Proxy server associated with a mobile carrier for enhancing mobile traffic management in a mobile network
CN105580004A (zh) 2013-08-09 2016-05-11 微软技术许可有限责任公司 提供语言帮助的输入方法编辑器
US20150142891A1 (en) * 2013-11-19 2015-05-21 Sap Se Anticipatory Environment for Collaboration and Data Sharing
US9727663B2 (en) * 2014-04-30 2017-08-08 Entit Software Llc Data store query prediction
US9727666B2 (en) 2014-04-30 2017-08-08 Entit Software Llc Data store query
US10134067B2 (en) * 2015-07-27 2018-11-20 Ariba, Inc. Autocomplete of searches for data stored in multi-tenant architecture
RU2015156695A (ru) 2015-12-29 2017-07-05 Общество С Ограниченной Ответственностью "Яндекс" Способ и система обработки префикса, связанного с поисковым запросом
US10936945B2 (en) 2016-06-06 2021-03-02 Microsoft Technology Licensing, Llc Query classification for appropriateness
US10698931B1 (en) * 2016-12-07 2020-06-30 Parallels International Gmbh Input prediction for document text search
US10803123B2 (en) 2018-01-26 2020-10-13 Verizon Patent And Licensing Inc. Automatic generation of variations of search criteria for use in a predictive search engine
FR3080472B1 (fr) * 2018-04-19 2021-06-04 Amadeus Sas Controle de la generation des resultats de recherche a entrees multiples
US11556707B2 (en) 2020-06-18 2023-01-17 Google Llc Fulfillment of actionable requests ahead of a user selecting a particular autocomplete suggestion for completing a current user input
WO2022040621A1 (en) 2020-08-21 2022-02-24 Cyborg Inc. System and method for encrypted search using hash vectorization models

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6564213B1 (en) * 2000-04-18 2003-05-13 Amazon.Com, Inc. Search query autocompletion
US7219090B2 (en) * 2003-04-25 2007-05-15 Overture Services, Inc. Method and system for blending search engine results from disparate sources into one search result
US7836044B2 (en) * 2004-06-22 2010-11-16 Google Inc. Anticipated query generation and processing in a search engine
US20060106769A1 (en) * 2004-11-12 2006-05-18 Gibbs Kevin A Method and system for autocompletion for languages having ideographs and phonetic characters
KR20070024771A (ko) * 2005-08-30 2007-03-08 엔에이치엔(주) 질의어 자동변환을 이용한 자동완성 질의어 제공 시스템 및방법
KR100643801B1 (ko) * 2005-10-26 2006-11-10 엔에이치엔(주) 복수의 언어를 연동하는 자동완성 추천어 제공 시스템 및방법

Also Published As

Publication number Publication date
WO2009021204A2 (en) 2009-02-12
WO2009021204A3 (en) 2009-05-28
US20090043741A1 (en) 2009-02-12
KR101533570B1 (ko) 2015-07-06
CN101816000A (zh) 2010-08-25
CN101816000B (zh) 2012-08-08

Similar Documents

Publication Publication Date Title
KR101533570B1 (ko) 부분 입력된 검색 쿼리에 대한 자동완성 및 입력 방법 자동 변환
JP5761833B2 (ja) ユーザ部分入力のための辞書候補
US9436781B2 (en) Method and system for autocompletion for languages having ideographs and phonetic characters
US8996550B2 (en) Autocompletion for partially entered query
JP5608766B2 (ja) ターゲットページとは異なる文字セットおよび/または言語で書かれたクエリを使用する検索のためのシステムおよび方法
US8583415B2 (en) Phonetic search using normalized string
JP2008250623A (ja) 検索システム
WO2022134824A1 (en) Tuning query generation patterns
US11487768B2 (en) Generating search results utilizing access control
JP2008250625A (ja) 検索システム

Legal Events

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

Payment date: 20180615

Year of fee payment: 4