이하, 첨부도면을 참조하여 본 발명에 대해 상세하게 설명한다. 이 상세한 설명은 본 발명을 제한하는 것이 아니다.
개요
원하는 지역이 한정된 로컬 검색 질의에 대한 결과를 생성할 수 있다. 예를 들면, 지역은 특정한 지점 또는 지역으로부터의 일정한 거리(예컨대, 20 마일)에 의해 규정될 수 있다. 검색 결과는 지리적으로 관련 있는 문서를, 문서의 컨텐츠 에 기초하여, 그리고 다수의 위치 식별자에도 기초하여 색인화 함으로써 효율적으로 생성될 수 있다. 일 실시예에서, 위치 식별자는 규칙적으로 간격을 둔 지역을 규정하고, 문서는 각각의 문서에 대해 색인화된 다수의 위치 식별자를 선택하여 문서가 연관된 지역 주변의 소정의 범위를 규정하도록 색인화된다. 이 문서 색인화 기술은 지역에 의해 효율적인 검색이 가능하다.
대표적인 네트워크 개요
도 1는 본 발명의 원리와 일치하는 시스템 및 방법이 구현될 수 있는 대표적인 네트워크(200)를 나타낸 도면이다. 네트워크(100)는 네트워크(140)를 통해 서버(120)와 연결된 클라이언트(110)를 포함할 수 있다. 네트워크(140)는 LAN(Local Area Network), WAN(Wide Area Network), PSTN(Pubic Switched Telephone Network)과 같은 전화망, 인트라넷, 인터넷, 또는 네트워크의 조합을 포함할 수 있다. 간결하게, 두 개의 클라이언트(110)와 하나의 서버(120)가 네트워크(140)에 연결되어 있는 것으로 예시하였다. 실제로, 클라언트와 서버는 더 많거나 더 적을 수 있다. 또, 어떤 경우에는 클라이언트가 서버의 기능을 수행할 수 있고, 서버가 클라이언트의 기능을 수행할 수도 있다.
클라이언트(110)는 무선 전화, 개인용 컴퓨터, 개인용 휴대 정보 단말기(personal digital assistant, PDA), 랩톱 컴퓨터, 또는 다른 타입의 계산 또는 통신 디바이스와 같은 디바이스, 이들 디바이스 중 하나에서 실행되는 스레드(thread)나 프로세스(process), 및/또는 이들 디바이스 중 하나에 의해 실행 가능한 객체(object)를 포함할 수 있다. 서버(120)는 문서를 처리, 검색 및/또는 유 지하는 서버 디바이스를 포함할 수 있다. 클라이언트(110) 및 서버(120)는 유선, 무선, 또는 광학적 접속을 통해 네트워크(140)에 연결될 수 있다.
서버(120)는 클라이언트(110)가 사용 가능한 검색 엔진(125)을 포함할 수 있다. 검색 엔진(125)은 질의기반 문서검색 엔진(query-based document search engine)과 같은 검색 엔진일 수 있다. 검색 엔진(125)은 지역에 대한 결과 로컬(result local)을 회신하도록 특히 설계될 수 있다. 검색 엔진(125)은 데이터베이스(135)에 저장된 문서에 기초하여 사용자 검색 질의에 응답할 수 있다. 데이터베이스(135)에 저장된 문서는 특정한 지역에 관련 있는 것으로 결정되었는 문서를 일반적으로 포함할 수 있다. 예를 들면, 이 문서들은 특정한 주소에 위치한 비즈니스에 대한 비즈니스 목록 정보 또는 지역과 어떤 식으로든 관련 있는 웹 문서(예컨데, 로컬 레스토랑에 대한 비평을 제공하는 웹 문서)를 포함할 수 있다.
여기에서 사용된 용어인 문서(document)는, 임의의 기계로 판독 가능하고 기계로 저장 가능한 자료(work product)를 포함하는 것으로 광의로 해석되어야 한다. 문서는 이메일, 검색 목록, 웹 사이트, 파일, 파일들의 조합, 다른 파일에 대한 링크가 삽입된 하나 이상의 파일, 뉴스 그룹 포스팅 등일 수 있다. 인터넷 환경에서, 일반적인 문서는 웹 페이지이다. 웹 페이지는 흔히 컨텐츠를 포함하고, (메타 정보, 하이퍼링크 등과 같은) 삽입된 정보 및/또는 (자바스크립트 등과 같은) 삽입된 명령어를 포함할 수 있다.
대표적인 클라이언트/서버 아키텍처
도 2는 본 발명의 원리와 일치하는 실시예에 따른, 컴퓨팅 디바이스(200)라 고 하는, 클라이언트(110) 또는 서버(120)의 대표적인 예를 나타낸 것이다. 컴퓨팅 디바이스(200)는 버스(210), 프로세서(220), 주 메모리(230), ROM(Read Only Memory)(240), 스토리지 디바이스(250), 입력 디바이스(260), 출력 디바이스(270), 및 통신 인터페이스(280)를 포함할 수 있다. 버스(210)는 컴퓨팅 디바이스(200)의 구성요소 사이의 통신을 가능하게 하는 경로를 포함할 수 있다.
프로세서(220)는 명령어를 해석하고 실행하는, 종래의 프로세서, 마이크로프로세서 또는 처리 논리회로(processing logic)를 포함할 수 있다. 주 메모리(230)는 프로세서(220)에서 실행하기 위한 정보 및 명령어를 저장하는 RAM(Random Access Memory) 또는 다른 타입의 동적 스토리지 디바이스(dynamic storage device)를 포함할 수 있다. ROM(240)은 프로세서(220)가 사용하는 정적인 정보 및 명령어를 저장하는 종래의 ROM 디바이스 또는 다른 타입의 정적 스토리지 디바이스를 포함할 수 있다. 스토리지 디바이스(250)는 자기 기록 매체 및/또는 광학 기록 매체와 그에 대응하는 드라이브를 포함할 수 있다.
입력 디바이스(260)는 키보드, 마우스, 펜, 음성 인식(voice recognition) 장치 및/또는 바이오메트릭(biometric) 장치 등과 같이 조작자가 컴퓨팅 디바이스(200)에 정보를 입력할 수 있도록 해주는 종래의 장치를 포함할 수 있다. 출력 디바이스(270)는 디스플레이, 프린터, 스피커 등을 포함하여, 조작자에게 정보를 출력하는 이상의 종래의 장치를 포함할 수 있다. 통신 인터페이스(280)는 컴퓨팅 디바이스(200)가 다른 디바이스 및/또는 시스템과 통신할 수 있도록 해주는 임의의 송수신기형(transceiver-like) 장치를 포함할 수 있다. 예를 들면, 통신 인터페이 스(280)는 네트워크(240)와 같은 네트워크를 통해 다른 디바이스나 시스템과 통신하는 장치를 포함할 수 있다.
검색 엔진(125)은 메모리(230)와 같은, 컴퓨터로 판독 가능한 매체에 저장될 수 있다. 컴퓨터로 판독 가능한 매체는 하나 이상의 물리 또는 논리 메모리 디바이스 및/또는 반송파(carrier wave, 搬送波)로서 규정될 수 있다. 검색 엔진(125)을 규정하는 소프트웨어 명령어는, 데이터 스토리지 디바이스(250)와 같은 컴퓨터로 판독 가능한 매체로부터, 또는 통신 인터페이스(280)를 통해 다른 디바이스로부터 주 메모리(230)로 판독될 수 있다. 주 메모리(230)에 저장된 소프트웨어 명령어는 프로세서(220)로 하여금 후술하는 프로세스들을 수행하도록 한다. 다르게는, 소프트웨어 명령어 대신에 또는 소프트웨어 명령어와 결합하여 고정 배선 회로(hardwired circuitry)를 사용하여 본 발명의 원리와 일치하는 프로세스들을 실행할 수 있다. 따라서, 본 발명의 원리와 일치하는 실시예들은 하드웨어 회로와 소프트웨어의 어떤 특정 조합으로 한정되는 것은 아니다.
위치 식별자
데이터베이스(135) 내의 문서는 각각 지역과 연관될 수 있다. 지역은 문서와 연관된 위치 식별자에 의해 특정될 수 있다. 일 실시예에서, 위치 식별자는, 잘 알려진 계층적 삼각형 메시(Hierarchical Triangular Mesh, HTM) 모델과 같은, 계층적 격자를 사용한 지구 표명의 모델로부터 얻을 수 있다. 독자의 편의를 위해, 계층적 삼각형 메시(HTM) 모델을 간략하게 설명한다.
계층적 삼각형 메시(HTM)는, 지구와 같은, 구의 표면을 구면 삼각형으로 나 누는 분할 방식이다. 이것은 계층적 방식이고, 분할부분(subdivision)은 정확하지는 않지만 대략 같은 면적을 가진다.
도 3은 구(300)(예컨대, 지구의 표면)를, N0, N1, N2, N3 및 S0, S1, S2, S3로 식별되는 8개의 구역으로 분할한 초기 분할을 나타낸 도면이다. 도 3a에서는, N0, N1 및 S0, S1 구역만 라벨이 있고, 다른 구역들은 구의 "뒤쪽 반"에 대응한다. 이들 분할부분은 8개의 같은 면적의 커다란 구면 삼각형이다. 각각의 분할 부분은 이웃하는 면(side)의 면 중간점(side-midpoint)을 연결함으로써 삼각형으로 더욱 세분될 수 있다. 도 3b는 그 다음의 분할부분 레벨을 나타낸 도면이다. 도 3b에 도시한 바와 같이 분할부분(N0)은, 분할부분 N00, N01, N02, N03으로 라벨을 붙인, 4개의 분할부분으로 세분된다. 각각의 분할부분은 실제로 구 상의 호(arc)로 형성되지만, 도 3b의 분할부분은 간결하게 삼각형의 선 분할로 도시되어있다. 분할부분의 크기가 감소함에 따라, 각각의 분할부분은 형상에 있어 삼각형에 더욱 가까워질 것이다.
이 분할부분은 8개의 근 노드(N0, N1, N2, N3, S0, S1, S2, S3)를 가지고, 각각의 근 노드가 4개의 자식 노드를 가지는 트리 구조에서의 자식 노드로 생각될 수 있다. 분할은 임의로 레벨까지 계속될 수 있다. 도시한 이름을 붙이는 방식에서는, 각각의 연속하는 레벨에서, 분할부분은 분할 레벨에 대한 부가 문자(addition character)를 추가함으로써 이름이 부여된다. 예로서, 노드 N201102를 생각하자. N2는 근 노드의 이름이고, 5개의 연속하는 숫자(01102)는 각각의 레벨에서 어떤 삼각형을 선택한 삼각형을 의미한다. 이 분할부분의 라벨은 데이터베 이스(135) 내의 지리적으로 관련 있는 문서와 연관된 위치 식별자로 사용될 수 있다.
해당 기술분야의 당업자는, 계층적 삼각형 메시(HTM)법 이외의 지리적 표면 모델링 기술 또는 계층적 삼각형 메시법의 다른 실시예를 사용하여 데이터베이스(135)에 저장된 위치 식별자를 구현할 수 있다는 것을 알 것이다. 예를 들면,
대안으로 사용될 수 있는 다른 가능한 분할 모델링 기술은 HEALPix(Hierarchical Equal Area isoLatitude Pixelisation), C-Keys, UTM (Universal Transverse Mercator), 및 기타 각종 지역 격자 시스템( United Kingdom's National Grid와 같은)을 포함한다.
데이터베이스(135)의
색인화
도 4는 지리적 관련이 있는 문서를 색인화하기 위는 본 발명의 실시태양과 일치하는 동작의 대표적인 예를 나타낸 흐름도이다.
설명한 바와 같이, 데이터베이스(135)는 지리적으로 관련 있는 웹 문서 및 비즈니스 목록과 같은, 문서의 색인을 포함할 수 있다. 색인은 문서 내에서 발견된 용어의 색인일 수 있으며, 각각의 용어에 대해, 그 용어를 포함하는 모든 문서의 리스트를 저장하는 반전형 색인 데이터 구조(inverted index data structure)로 구성될 수 있다.
지리적으로 관련 있는 문서를 식별한다(동작 401). 지리적으로 관련 있는 문서는, 여기에서 사용된 바와 같이, 어떤 일정한 방식으로 지리적 위치와 특별한 관련이 있는 것으로 결정되었던 임의의 문서를 일반적으로 가리킨다. 예를 들면, 업종별 전화번호 목록과 같은, 비즈니스 목록은 각각 비즈니스에 대한 주소에 의해 규정된 지역과 관련이 있는 지리적으로 관련 있는 문서로 간주될 수 있다. 웹 문서와 같은, 다른 문서도 또한 특정한 지리적 관련성을 가질 수 있다. 예를 들면, 어떤 비즈니스는 홈페이지가 있을 수 있고, 비즈니스를 논평 또는 비평하는 문서의 주제일 수 있으며, 어떤 다른 방식으로 비즈니스와 관련된 웹 페이지에 의해 언급될 수 있다. 문서가 연관되어 있는 특정한 지리적 위치는, 우편주소 또는 다른 지리적 신호로부터, 여러 방식으로 결정될 수 있다.
다음에, 지리적으로 관련 있는 문서와 연관된 지역을 그것의 대응하는 위치 식별자에 매핑시킬 있다(동작 402). 즉 문서와 연관된 HTM 식별자(예컨대, N201102)를 결정한다. 예를 들면, 이 매핑은 적절한 HTM 식별자에 대한 우편주소 위치(또는 위도/경도로 특정된 위치)에 대응하는 소정의 룩업 테이블 내에서 문서의 우편주소 또는 위도/경도 위치를 검색(look up)함으로써 실행될 수 있다.
문서에 대한 추가적인 위치 식별자를 결정할 수 있다. 특히, 소정의 범위 내의 주변 지역에 대응하는 위치 식별자를 또한 결정할 수 있다(동작 403). 도 5는 동작 403의 대표적인 실시예를 나타낸 도면이다. 이 예에서, 소정의 범위는 원(530)으로 나타낸 바와 같이 1 마일로 선택되었다고 가정하자. 격자(500)는
각각의 삼각형 지역이 대략 1 제곱 마일을 나타내는 메시 레벨과 같은, 특정한 메시 레벨에서의 HTM의 일부를 나타낸다. 문서가 삼각형 지역(510) 내의 비즈니스(505)와 연관되어 있다고 가정하자. 원(530)으로 나타낸 바와 같이, 지역 520-1 내지 520-12는 적어도 부분적으로 지역(510)의 1 마일 범위 내에 든다. 따 라서, 지역(510)의 중심의 대략 1 마일 이내에 있는 지역은 지역 510 및 520(도 5에서 굵은선으로 나타냄)에 의해 규정된 지역을 포함한다
도 4로 돌아가서, 검색 엔진(125)은, 문서가 문서의 지역과 동작 403에서 식별된 주변의 지역과 연관된 위치 식별자를 포함한 것처럼 각각의 지리적으로 관련 있는 문서를 색인화할 수 있다(동작 404). 도 5의 예에서, 예를 들면 지역 510, 및 520-1 내지 520-12 모두에 대한 HTM 식별자가, 이 문서에 대한 색인 내에 포함되도록, 문서를 색인화할 수 있다. 일 실시예에서, 위치 식별자는, 위치 식별자가 원래의 문서 텍스트의 부분이 아니라는 것을 나타내는, 데이터베이스(135) 내의 특수한 태그(tag)와 연관될 수 있다.
도 6a 및 도 6b는 도 4에 나타낸 동작을 사용하여 데이터베이스(315)에서 색인화될 수 있는 문서의 대표적인 예를 나타내는 도면이다. 도 6a는 가상의 레스토랑 "Gino's Pizza"에 대한 비즈니스 목록(605)을 나타낸 것이다. 검색 엔진(125)은 위치 식별자 및 어쩌면 문서와 연관된 다른 정보는 물론 문서(605)의 텍스트를 색인화 할 수 있다. 첫 번째 위치 식별자, HTM 지역 N201301은 Gino's Pizza가 위치한(예컨대, 도 5의 예에서 지역 510) 구체적인 지역을 가리킬 수 있고, 나머지 위치 식별자들은 N201301 주변의 지역을 가리킬 수 있다(예컨대, 도 5의 예에서 지역 520).
도 6b는 Gino's Pizza에 대한 비평을 포함하는 가상의 웹 페이지(620)을 나타낸 것이다. 웹 페이지(620)는 , 그것이 주로 특정한 지리적 위치에서의 비즈니스에 관한 것일 때, 지리적으로 관련 있는 것으로 결정될 수 있다. 따라서, 웹 페 이지(620)는 또한 Gino's Pizza와 동일한 지역과 연관될 수 있다. 위치 식별자(525)는 따라서 다수의 위치 식별자가 문서(520)와 연관될 수 있도록 비즈니스 목록(520)과 연관되고 비즈니스 목록(620)으로 색인화되는, 위치 식별자(615)와 같은 식으로 웹 페이지(620)와 연관되고 웹 페이지(620)로 색인화될 수 있다.
설명의 편의를 위해, 도 5, 도 6a, 및 도 6b에 도시한 대표적인 예의 HTM 지역은 제5 레벨의 자식 노드를 참조(reference)한다. 실제, 로컬 검색 결과를 제공하기에 적합한 영역을 가리키는 HTM 지역은 더 낮은 노드 레벨이 되는 경향이 있을 것이다.
도 7은 도 4에 도시한 동작을 사용하는 다른 문서의 대표적인 예의 색인화를 나타낸 도면이다. 도 7의 문서는, 두 개의 상이한 소정의 범위에 대응하는, 두 세트의 위치 식별자가 한 개의 세트 대신에 결정되었던 것을 제외하고는 도 6a와 동일하다. 이 예에서, 위치 식별자(710)는 소정의 범위가 1 마일일 때 결정된 위치 식별자의 세트일 수 있다. 위치 식별자(720)로 라벨이 붙은, 제2 세트의 위치 ㅅ식별자는, 5마일과 같은, 소정의 범위에 대한 다른 값에 기초하여 선택될 수 있다. 따라서, 더 많은 위치 식별자(710, 720)가 존재할 것이고, 위치 식별자(710)는 위치 식별자(720)의 서브세트(subset)이다. 위치 식별자의 세트 모두는 무서를 사용하여 독립적으로 색인화될 수 있다.
일 실시예에서, 세트 710 및 720에서 위치 식별자는 두 세트의 위치 식별자에 라벨을 부가하여 색인화하는 동안, 다른 것과 구별될 수 있다. 이 예에서, 라벨 ":1"을 위치 식별자(710)에 부가하여, 그것들이 1 마일 식별자 및 라벨에 대응 한다는 것을 나타내고, 라벨 ":5"는 위치 식별자(720)에 부가되어 그것들이 5마일 식별자에 대응한다는 것을 나타낸다.
검색 엔진의 동작
도 8은 로컬 검색 질의 처리 시의 검색 엔진(125)의 동작을 나타낸 흐름도이다. 검색 엔진(125)은 사용자로부터 검색 질의를 수신할 수 있다(동작 801). 검색 질의는 로컬 질의일 수 있고 지역과 연관되어 있을 수 있다. 예를 들면, 사용자는 "coffee shops"에 대해, 위치를 "Poughkeepsie, NY" 지역으로 특정하여 검색할 수 있다. 검색 엔진(125)은 사용자가 입력한 지역을, 데이터베이스(135)에 저장된 문서 색인을 생성할 때 사용한 위치 식별자(HTM 식별자)의 포맷을 가지는 하나 이상의 위치 식별자로 변환할 수 있다. 다음에, 검색 질의에 위치 식별자를 부가할 수 있다(동작 802). 예를 들면, 검색 질의가 "coffee shops"이고 대응하는 위치 식별자가 N03013으로 결정되면, 수정된 검색 질의는 "coffee shops N03013"일 수 있다. 서로 다른 세트의 위치 식별자를 서로 다른 소정의 범위에 기초하여 식별하였던 실시예에서, 수정된 검색 질의는 검색된 범위에 대응하는 위치 식별자를 포함할 수 있다. 예를 들면, 수정된 검색 질의 "coffee shops N03013:5"를 반경 5마일 내의 로컬 검색에 사용할 수 있다.
그리고, 수정된 검색 질의를 사용하여 종래의 방식으로 검색 결과를 취득할 수 있다(동작 803). 예를 들면, 검색 엔진(125)은 검색 질의 내의 용어를 포함하는 문서 색인으로부터 문서를 식별할 수 있다. 대안으로 또는 추가로, 검색 엔진(125)은 검색 용어의 동의어를 포함하는 문서를 식별할 수 있다. 수정된 검색 질의가 검색 지역의 중심에 대응하는 위치 식별자를 포함하기 때문에, 지리적으로 관련 있는 문서는 소정범위 내의 모든 지역에 대한 위치 식별자를 포함하도록 색인화되며, 검색 결과는 소정의 검색 범위 내의 문서로 한정될 것이다. 따라서, 검색예 "coffee shops N03013:5"의 경우, 검색 결과는 Poughkeepsie, NY의 5마일 이내의 커피숍 비즈니스 목록과 같은, 커피숍과 관련된 문서일 것이다.
그 후, 동작 803에서 취득된 검색 결과를 사용자에게 회신할 수 있다(동작 804). 일 실시예에서 결과는 사용자 질의에 관련된 비즈니스 목록의 순위 리스트로서 표시될 수 있다. 각각의 목록은 비즈니스 목록과 연관된 비즈니스에 대한 주소 정보, 해당 비즈니스에 대한 전화 번호, 해당 비즈니스와 연관된 더 많은 정보에 대한 링크, 해당 비즈니스로의 안내(direction)에 대한하는 링크, 및/또는 상기 비즈니스를 가리키는 하나 이상의 웹 문서에 대한 링크와 같은, 정보를 포함할 수 있다.
도 9는 선택된 검색 범위가 소정의 색인화된 범위와 일치하지 않은 경우, 로컬 검색 질의 처리 시의 검색 엔진(125)의 대표적인 동작을 나타낸 흐름도이다. 검색 엔진(125)은 사용자로부터 검색 질의를 받을 수 있다(동작 901).
검색 질의는 로컬 질의일 수 있고 지역과 연관될 수 있으며, 사용자가 검색하고 싶어하는 범위에 대한 지시(indication)을 포함할 수 있다. 예를 들면, 사용자는 "coffee shops"에 대해, 위치를 "Poughkeepsie, NY" 지역으로 특정하고, 검색 반경을 3마일로 특정하여 검색할 수 있다.
사용자가 선택한 3마일의 검색 범위가 데이터베이스(135) 내에 명확히 색인 화된 검색 범이가 아니라고 가정하자. 사용자 선택한 범위에 가장 가깝지만 사용자가 선택한 범위보다 크지 않은 사전 색인화된(pre-indexed) 범위를 결정할 수 잇다(동작 902). 이 예에서는 가장 가까운 사전 색인화된 범위는 1마일이라고 가정하자, 즉, 위치 식별자 세트가 1마일의 범위에 대한 색인에 추가되었다. 다음에, 검색 엔진(125)은 검색과 연관된 지역의 2마일(3마일 - 1마일) 내에 있는 지역의 세트를 찾는다(동작 903). 도 10은 동작 902 및 903을 설명하기 위한 대표적인 예의 HTM 격자(1000)이다. 지역(10100)은 검색과 연관된 지역이고, 안쪽의 점선으로 나타낸 원은 1마일 반경을 나타내고, 바깥쪽의 점선으로 나타낸 원은 2마일 반경을 나타낸다. 따라서, 이 예의 경우, 동작 903에서 검색 엔진(125)은 바깥쪽 원에 포함된 지역의 세트를 찾아낼 수 있다.
그리고 질의를 동작 903에서 식별된 위치 식별자를 논리 OR 연산으로 검색 질의에 부가함으로써 검색 질의를 수정할 수 있다(동작 904). 원래의 검색 질의가 "coffee shops"이었던 위의 예에서, 수정된 검색 질의는 "coffee shops"에 도 10의 바깥쪽의 점선으로 나타낸 원 내에 들어가는 삼각형 지역에 대응하는 모든 위치 식별자의 리스트를 논리적으로 OR한 것을 추가한 것이다. 그리고, 수정된 검색 질의를 사용하여, 검색 질의가 동작 902에서 결정된 사전 색인화된 위치 식별자에 적용되는 종래의 방식을 검색 결과를 취득할 수 있다(동작 905). 따라서 위의 "coffee shops" 검색은 1마일 사전 색인화된 위치 식별자에 대해 적용될 수 있다.
그 후, 동작 905에서 취득된 검색 결과를 사용자에게 회신할 수 있다(동작 906). 일 실시예에서 결과는 사용자 질의에 관련된 비즈니스 목록의 순위 리스트 로서 표시될 수 있다.
도 9에 도시한 기술의 다른 가능한 변형예로서, 다수의 위치 식별자를 사용하여 문서를 사전 색인화하는 대신에, 각 문서를 그 문서에 연관된 위치 식별자만으로 사용하여 색인화할 수 있다. 그리고 지역이 검색 지역 전체인 경우에, 검색 질의를, 동작 903에서 실행된 것처럼 체계적으로 나타낼 수 있다. 즉, 검색 질의는 검색 범위 내의 모든 위치 식별자의 논리 OR의 연쇄(concatenation)을 포함할 수 있다. 이 변형예는 색인 크기를 감소시키고 질의 시에 지역 크기 및 형상을 선택할 때 더 많은 유연성하지만 질의 복잡도를 증가시킬 수 있다.
사용자 인터페이스의 예
도 11 및 도 12는 본 발명의 원리와 일치하는 실시예에 따른, 사용자에게 표시될 수 있는 로컬 검색 사용자 인터페이스의 대표적인 예를 나타낸 도면이다. 도 11에 도시한 바와 같이, 사용자 인터페이스는 로컬 검색에 관한 것을 표시할 수 있다. 로컬 검색 사용자 인터페이스는 사용자가 특정한 위치 내에서 비즈니스 목록에 대한 검색을 할 수 있도록 한다. 검색 시에 사용자를 돕기 위해, 사용자 인터페이스는 "What" 필드 및 "Where" 필드를 제공할 수 있다. 예를 들면, 사용자는 비즈니스의 명칭(예컨대, "Pizza Hut") 또는 비즈니스의 타입(예컨대, pizza restaurnat)을 "What" 필드에 입력할 수 있다. 사용자는 위치의 명칭(예컨대, Albany, NY)을 "Where" 필드에 입력할 수 있다. 이 예에서는, 사용자가 사용자 ㅇ인터페이스의 WHat 필드에 "maternity dress"를, 그리고 Where 필드에 "Fairfax, VA"를 입력하였다고 가정하자.
전술한 바와 같이, 검색 엔진(125)은 검색 용어 "maternity dress"와 "Fairfax, VA"에 기초한 검색을 실행하여 "Fairfax, VA" 소재의 검색 용어 "maternity dress"에 관한 비즈니스와 연관된 문서를 식별하고 식별된 문서를 검색 결과의 리스트에 포함시킨다. 식별된 문서는 "Where" 필드에 입력된 위치의 추정된 중심으로부터 15마일인 디폴트 지역과 같은, 특정한 지역과 지리적으로 관련 있는 문서로부터 선택될 수 있다.
또한 도 12에 도시한 바와 같이, 로컬 검색 사용자 인터페이스는 검색 결과를 사용자에게 표시할 수 있다. 사용자는 범위(1205)에서 다른 검색 범위를 선택함으로써 검색되는 지역을 수정할 수 있다. 다른 범위의 선택은 선택된 범위를 사용하여 수행될 다른 검색을 발생시킬 수 있다.
결론
로컬 검색 엔진은, 각각의 문서에 대해, 집합적인 지역을 집합적으로 규정하는 다수의 위치 식별자를 색인화함으로써 효율적으로 지역에 관련된 문서를 색인화한다. 개별 검색 질의에 응하여 색인을 사용하는 경우, 검색 질의에 단지 위치 식별자를 부가함으로써 집학적인 지역을 효율적으로 검색할 수 있다.
이상에서 설명한 바와 같이, 본 발명의 실시양태들이, 도면에 예시된 실시예에서 소프트웨어, 펌웨어, 및 하드웨어의 여러 상이한 형태로 구현될 수 있다는 것은 이 기술분야의 당업자에게 명백할 것이다. 본 발명의 원리와 일치하는 실시양태들을 구현하는데 이용되는 실제의 소프트웨어 코드 또는 전용(specialized)의 제어 하드웨어는 본 발명의 범위를 제한하지 않는다. 따라서, 본 발명의 실시양태에 대한 동작 및 작용을 특정한 소프트웨어 코드에 대한 언급 없이 설명하였으며, 당업자라면 본 명세서의 상세한 설명에 기초하여 본 발명의 실시양태를 구현하기 위한 소프트웨어 및 제어 하드웨어를 설계할 수 있다는 것을 알 것이다.
본 발명의 바람직한 실시예에 대한 이상의 설명은, 본 발명에 대한 설명과 예시를 제공하지만, 본 발명을 총망라하거나 개시된 바로 그 형태로 한정하려는 의도는 아니다. 이상의 교시에 비추어, 또는 본 발명의 실시예로부터 변경 및 변형 이 가능하다. 예를 들면, 전술한 동작의 대다수는 특정한 순서로 설명하였지만, 동작의 대다수는 동시에 또는 다른 순서로 진행될 여지가 있다.
또, 본 발명의 어떤 부분은 하나 이상의 기능을 실행하는 "엔진"으로 설명하였다. 엔진은, 애플리케이션 특정 집적회로 또는 필드 프로그램 가능한 게이트 어레이, 소프트웨어, 또는 하드웨와 소프트웨어의 조합과 같은, 하드웨어를 포함할 수 있다.
본 출원의 설명에서 사용된 요소(element), 동작(act), 명령어(instruction)는 그러한 것으로 명백히 기술되지 않는 한, 본 발명에서 결정적이거나 필수적인 것으로 해석되어서는 안 된다. 또한, 여기에서 사용된 바와 같이, 관사 "a"는 하나 이상의 아이템을 포함하는 것으로 의도된다. 오직 하나의 아이템이 의도되는 경우, 용어 "하나(one)" 또는 유사한 표현을 사용한다. 또, 구 "...에 기초하여(based on)"는 명백히 다르게 나타내지 않는 한 "적어도 일부는 ...에 기초하여"를 의미하는 것으로 의도된다.