KR20130076876A - 언어 로캘에 기초한 인덱싱 및 검색 방법 - Google Patents
언어 로캘에 기초한 인덱싱 및 검색 방법 Download PDFInfo
- Publication number
- KR20130076876A KR20130076876A KR20137010787A KR20137010787A KR20130076876A KR 20130076876 A KR20130076876 A KR 20130076876A KR 20137010787 A KR20137010787 A KR 20137010787A KR 20137010787 A KR20137010787 A KR 20137010787A KR 20130076876 A KR20130076876 A KR 20130076876A
- Authority
- KR
- South Korea
- Prior art keywords
- state machine
- characters
- collation
- term
- search term
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/31—Indexing; Data structures therefor; Storage structures
- G06F16/316—Indexing structures
- G06F16/319—Inverted lists
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/33—Querying
- G06F16/3331—Query processing
- G06F16/3332—Query translation
- G06F16/3338—Query expansion
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Information Transfer Between Computers (AREA)
Abstract
클라이언트로부터 수신된 검색어를 갖는 검색 질의에 응답하여, 현재 언어 로캘이 결정된다. 상태 머신은 현재 언어 로캘에 기초하여 구축되는데, 그 상태 머신은 검색어의 동일 의미를 갖는 검색어의 변형을 표현하기 위해 하나 이상의 노드를 포함한다. 상태 머신의 각 노드에 대응하는 반전 인덱스의 하나 이상의 포스팅 목록을 식별하기 위해 상태 머신의 각 노드가 횡단된다. 하나 이상의 포스팅 목록으로부터 획득된 하나 이상의 항목 식별자가 클라이언트에 리턴되고, 항목 식별자들은 상태 머신에 의해 표현되는 검색어의 변형을 포함하는 하나 이상의 파일을 식별한다.
Description
본 발명의 실시예들은 일반적으로 데이터의 인덱싱 및 검색 분야에 관한 것이고, 더 구체적으로는 언어 로캘(language locale)에 기초한 인덱싱 및 검색에 관한 것이다.
범용 컴퓨터 시스템과 같은 최신의 데이터 프로세싱 시스템은 그러한 시스템의 사용자가 다양한 상이한 유형의 데이터 파일을 생성하는 것을 허용한다. 예를 들어, 데이터 프로세싱 시스템의 전형적인 사용자는 Microsoft Word와 같은 워드 프로세싱 프로그램으로 텍스트 파일을 생성할 수 있거나, Adobe의 Photoshop과 같은 이미지 프로세싱 프로그램으로 이미지 파일을 생성할 수 있다. 다수의 다른 유형의 파일이 전형적인 데이터 프로세싱 시스템에 대해 하나 이상의 사용자에 의해 생성 또는 수정, 편집 및 다르게 사용될 수 있다. 생성 또는 수정될 수 있는 다수의 상이한 유형의 파일은 생성되어 있는 특정 파일을 찾고자 하는 전형적인 사용자에게 어려움을 제공할 수 있다.
최신의 데이터 프로세싱 시스템은 종종 사용자가 다양한 디렉토리 또는 서브디렉토리(예를 들어, 폴더) 내에 파일을 위치시키는 것을 허용하고, 사용자가 파일에 이름을 부여하는 것을 허용하는 파일 관리 시스템을 포함한다. 또한, 이러한 파일 관리 시스템은 종종 사용자가 파일의 내용을 검색하는 것에 의해서뿐만 아니라, 파일의 이름, 생성 날짜, 수정 날짜 또는 파일 유형을 검색함으로써 파일을 찾는 것을 허용한다. 그러한 파일 관리 시스템의 예는 캘리포니아주 쿠퍼티노의 Apple Computer, Inc.로부터의 매킨토시 컴퓨터 상에서 동작하는 Finder 프로그램이다. 파일 관리 시스템 프로그램의 다른 예는 워싱턴주 레드몬드의 Microsoft Corporation으로부터의 윈도우즈 운영 체제 상에서 동작하는 Windows Explorer 프로그램이다. Finder 프로그램과 Windows Explorer 프로그램 둘 다는 사용자가 파일 이름 또는 생성 날짜 또는 수정 날짜 또는 파일 유형을 포함하는 다양한 기준에 의해 파일을 검색하는 것을 허용하는 찾기 커맨드를 포함한다. 이러한 검색 능력은 파일의 유형에 상관없이 각 파일에 대해 동일한 정보를 철저하게 조사한다. 따라서, 예를 들어, Microsoft Word 파일에 대한 검색가능한 데이터는 Adobe Photoshop 파일에 대해 검색가능한 데이터와 동일하며, 이 데이터는 전형적으로 파일 이름, 파일 유형, 생성 날짜, 최종 수정 날짜, 파일 크기, 및 파일 관리 시스템에 의해 파일에 대해 유지될 수 있는 소정의 다른 매개변수들을 포함한다.
현재 존재하는 소정의 애플리케이션 프로그램은 사용자가 특정 파일에 관한 데이터를 유지하는 것을 허용한다. 특정 파일에 관한 이러한 데이터는 메타데이터로 고려될 수 있는데, 왜냐하면 이것은 다른 데이터에 관한 데이터이기 때문이다. 특정 파일에 관한 이 메타데이터는 파일의 작성자, 문서의 요약, 및 다양한 다른 유형의 정보에 관한 정보를 포함할 수 있다. Finder 프로그램과 같은 일부 파일 관리 시스템들은 사용자가 메타데이터를 철저하게 조사함으로써 파일을 찾는 것을 허용한다.
전형적인 시스템에서, 다양한 컨텐츠, 파일 및 메타데이터는 Finder 프로그램과 같은 프로그램을 이용하여 나중의 불러오기(retrieval)를 위해, 통상적으로 반전 인덱스(inverted index)라고 지칭되는 것으로 인덱싱된다. 예를 들어, 반전 인덱스는 특정 단어가 나타나는 문서들에의 참조들의 목록을 포함할 수 있다.
본 발명의 한 양태에 따르면, 클라이언트로부터 수신된 검색어를 갖는 검색 질의에 응답하여, 현재 언어 로캘이 결정된다. 상태 머신은 현재 언어 로캘에 기초하여 구축되는데, 그 상태 머신은 검색어의 동일 의미를 갖는 검색어의 변형(variance)을 표현하기 위해 하나 이상의 노드를 포함한다. 상태 머신의 각 노드에 대응하는 반전 인덱스의 하나 이상의 포스팅 목록을 식별하기 위해 상태 머신의 각 노드가 횡단된다. 하나 이상의 포스팅 목록으로부터 획득된 하나 이상의 항목 식별자가 클라이언트에 리턴되고, 항목 식별자는 상태 머신에 의해 표현되는 검색어의 변형을 포함하는 하나 이상의 파일의 하나 이상의 엔트리 또는 위치를 식별할 수 있다.
본 발명의 다른 양태에 따르면, 검색어를 갖는 검색 질의에 응답하여, 검색어의 각 부분에 대하여 콜레이션 키(collation key)가 결정된다. 하나 이상의 노드를 갖는 상태 머신이 검색어에 기초하여 구축되고, 각 노드는 검색어 내의 캐릭터들 중 하나를 표현한다. 상태 머신의 각 노드에 대응하는 반전 인덱스의 하나 이상의 포스팅 목록을 식별하기 위해, 상태 머신 내의 노드들 각각이 횡단된다. 상태 머신의 각 노드에 대하여, 동일한 의미를 갖는 하나 이상의 등가 캐릭터가 현재 언어 로캘에 기초하여 식별된다. 등가 캐릭터들의 콜레이션 키는 검색어 내의 대응 캐릭터 또는 캐릭터들의 키 또는 키들과 비교된다. 검색어 내의 대응 캐릭터의 콜레이션 키와 일치하지 않는 콜레이션 키를 갖는 등가 캐릭터가 제거되며, 여기에서 나머지 캐릭터들은 반전 인덱스로 하나 이상의 포스팅 목록을 식별하기 위해 이용된다.
본 발명의 다른 양태에 따르면, 데이터 프로세싱 시스템에서의 제1 용어가 수신되고, 제1 용어는 인덱싱될 하나 이상의 캐릭터를 포함한다. 데이터 프로세싱 시스템의 현재 언어 로캘이 결정된다. 제1 용어의 캐릭터들 각각을 위한 콜레이션 키가 현재 언어 로캘 하에서 결정된다. 제1 용어의 캐릭터들 각각을 위한 콜레이션 키는 제1 용어의 실제 캐릭터들에 기초한 인덱싱 없이, 반전 인덱싱으로 인덱싱된다. 콜레이션 키는 현재 언어 로캘 하에서 동일한 의미를 갖는 하나 이상의 등가 캐릭터 군을 표현하며, 반전 인덱스는 콜레이션 키들에 기초한 후속 검색을 위해 이용된다.
본 발명의 다른 특징들은 첨부 도면 및 이하의 상세한 설명으로부터 분명해질 것이다.
본 발명의 실시예들은 유사한 참조번호가 유사한 구성요소들을 나타내는 첨부 도면의 도면들에 의해 제한이 아닌 예로서 도시된다.
도 1은 본 발명의 일 실시예에 따른 인덱싱 및 검색 시스템을 도시하는 블록도이다.
도 2-4는 본 발명의 일부 실시예에 따른 소정의 상태 머신을 도시하는 상태도이다.
도 5는 본 발명의 일 실시예에 따른 언어 로캘에 기초한 인덱싱 및 검색을 위한 방법을 도시하는 흐름도이다.
도 6 및 7은 본 발명의 일부 실시예들에 따른 콜레이션 키에 기초하는 상태 머신을 도시하는 도면이다.
도 8 및 9는 본 발명의 일부 실시예들에 따른 소정의 데이터 구조들을 도시하는 도면이다.
도 10은 본 발명의 다른 실시예에 따른 검색 방법을 도시하는 흐름도이다.
도 11은 본 발명의 일 실시예에 따른 콜레이션 키들에 기초하는 인덱싱 및 검색을 위한 방법을 도시하는 흐름도이다.
도 12는 본 발명의 일 실시예와 함께 사용될 수 있는 데이터 프로세싱 시스템의 블록도이다.
도 1은 본 발명의 일 실시예에 따른 인덱싱 및 검색 시스템을 도시하는 블록도이다.
도 2-4는 본 발명의 일부 실시예에 따른 소정의 상태 머신을 도시하는 상태도이다.
도 5는 본 발명의 일 실시예에 따른 언어 로캘에 기초한 인덱싱 및 검색을 위한 방법을 도시하는 흐름도이다.
도 6 및 7은 본 발명의 일부 실시예들에 따른 콜레이션 키에 기초하는 상태 머신을 도시하는 도면이다.
도 8 및 9는 본 발명의 일부 실시예들에 따른 소정의 데이터 구조들을 도시하는 도면이다.
도 10은 본 발명의 다른 실시예에 따른 검색 방법을 도시하는 흐름도이다.
도 11은 본 발명의 일 실시예에 따른 콜레이션 키들에 기초하는 인덱싱 및 검색을 위한 방법을 도시하는 흐름도이다.
도 12는 본 발명의 일 실시예와 함께 사용될 수 있는 데이터 프로세싱 시스템의 블록도이다.
본 발명의 다양한 실시예들 및 양태들은 이하에 논의되는 상세를 참조하여 설명될 것이며, 첨부 도면들은 다양한 실시예들을 도시할 것이다. 이하의 설명 및 도면은 본 발명을 예시하며, 본 발명을 제한하는 것으로 해석되어서는 안 된다. 본 발명의 다양한 실시예들의 완전한 이해를 제공하기 위해 다수의 구체적인 상세가 설명된다. 그러나, 일부 경우들에서, 본 발명의 실시예들의 간결한 논의를 제공하기 위해, 잘 알려진 상세 또는 종래의 상세는 설명되지 않는다.
명세서 내에서 "일 실시예" 또는 "실시예"에 관한 언급은 그 실시예와 관련하여 설명되는 특정한 특징, 구조 또는 특성이 본 발명의 적어도 하나의 실시예에 포함될 수 있음을 의미한다. 본 명세서 내의 다양한 장소에서 "일 실시예에서"라는 문구의 출현이 반드시 모두 동일 실시예를 지칭하는 것은 아니다.
소정의 실시예에 따르면, 인덱스(예를 들어, 반전 인덱스)는 사용되는 언어 로캘의 종류에 기초하여 다르게 구축될 수 있다. 일 실시예에서, 인덱스는 인덱싱 페이즈 동안 대부분의 또는 모든 언어 로캘의 캐릭터들(특수 캐릭터를 포함함)의 대부분 또는 전부를 커버하도록 구축된다. 후속하여, 검색 질의의 검색어를 포함하는 임의의 파일을 검색하기 위해 검색 질의가 수신될 때, 상태 머신은 그 시점에서의 언어 로캘에 기초하여 동적으로 구축되며, 여기에서 상태 머신은 그 언어 로캘 하에서 동일하거나 유사한 의미를 갖는 검색어들의 모든 변형을 표현한다. 이것은 사실상, 다른 언어 로캘들에서는 동일한 의미를 가질 수 있었지만 그 시점에서의 언어 로캘 하에서는 다른 의미를 갖는 임의의 캐릭터들을 걸러낸다.
대안적인 실시예에 따르면, 모바일 디바이스와 같은 일부 동작 환경에서, 로컬라이제이션은 정적으로 남아있는 경향이 있으므로(예를 들어, 언어 로캘은 비교적 긴 기간 동안 동일하게 남아있음), 인덱스는 언어 특정적인 방식으로 구축될 수 있다. 예를 들어, 복수의 캐릭터 또는 질의어가 등가인 경우에는, 실제의 캐릭터들 또는 용어들을 인덱싱하는 대신에, 캐릭터들 또는 용어들에 대응하는 콜레이션 키가 인덱싱된다. 결과로서, 인덱스는 비교적 작은 크기로 유지될 수 있으며, 이는 결국 더 빠른 검색을 유발한다.
도 1은 본 발명의 일 실시예에 따른 인덱싱 및 검색 시스템을 도시하는 블록도이다. 도 1을 참조하면, 시스템(100)은 인덱싱 소프트웨어(101), 검색 소프트웨어(102), 및 인덱싱 소프트웨어(101) 및 검색 소프트웨어(102)와 다른 소프트웨어 프로그램들에 동작상 연결되는 운영 체제(OS)의 커널과 같은 하나 이상의 시스템 컴포넌트를 포함하며, 이에 한정되지 않는다. 검색 소프트웨어(102)는 컨텐츠에 의한 검색(search by content)(컨텐츠에 의한 찾기라고도 지칭됨) 소프트웨어(107), 메타데이터에 의한 검색(메타데이터에 의한 찾기라고도 지칭됨) 소프트웨어(108)와 같은 다양한 검색 프로그램을 포함한다. 예를 들어, 컨텐츠에 의한 검색 소프트웨어(107) 및/또는 메타데이터에 의한 검색 소프트웨어(108)는 캘리포니아주 쿠퍼티노의 Apple Inc.로부터 입수가능한 Mac OS™의 Finder™ 프로그램과 같이, 임의의 종류의 운영 체제의 브라우징 프로그램의 일부로서 구현될 수 있다.
일 실시예에서, 컨텐츠에 의한 찾기 소프트웨어(107) 및/또는 메타데이터에 의한 찾기 소프트웨어(108)는 컨텐츠 파일(103) 또는 메터데이터(104) 내에 존재하는 용어를 찾기 위해 이용된다. 예를 들어, 소프트웨어(107/108)는 Microsoft Word 등과 같은 워드 프로세싱 프로그램에 의해 생성된 워드 프로세싱 또는 텍스트 프로세싱 파일로부터의 텍스트 및 기타 정보를 찾기 위해 이용될 수 있다.
컨텐츠에 의해 찾기 소프트웨어(107) 및 메타데이터에 의한 찾기 소프트웨어(108)는 하나 이상의 인덱스(105)를 포함하는 데이터베이스에 동작상 연결된다. 인덱스들(105)은 파일 데이터(103) 및 메타데이터(104)를 포함하는 저장 디바이스 내의 데이터 파일들의 적어도 부분집합을 표현하며, 컴퓨터 시스템의 메인 하드 드라이브와 같은 특정 저장 디바이스(또는 수 개의 저장 디바이스) 내의 데이터 파일들 전부를 포함할 수 있다. 하나 이상의 인덱스(105)는 텍스트 문서, 음악, 비디오 또는 다른 유형의 파일과 같은 파일들(103/104) 상에 저장된 각 항목의 컨텐츠 및/또는 메타데이터의 인덱스화된 표현을 포함한다. 컨텐츠에 의한 찾기 소프트웨어(107)는 인덱싱되어 있는 데이터 파일들(103) 상에 저장된 항목들 내에 특정 용어(예를 들어, 특정 단어)가 존재하는지를 판정하기 위해, 하나 이상의 인덱스 파일(105)을 철저하게 조사함으로써 그 컨텐츠 내의 용어에 대해 검색한다. 컨텐츠에 의한 찾기 소프트웨어 기능은, 사용자가 데이터 파일들(103)에 저장된 항목 내의 컨텐츠(103)는 물론 그 항목에 대해 생성되어 있을 수 있는 임의의 메타데이터(108)에 대해 인덱스들(105)을 검색할 수 있다는 이점을 사용자에게 제공하는 메타데이터에 의한 찾기 소프트웨어(108)를 통해 이용가능하다.
본 발명의 일 실시예에서, 인덱싱 소프트웨어(101)는 컨텐츠 및 메타데이터에 의한 찾기 소프트웨어 애플리케이션(107/108)에 동작상 연결된 하나 이상의 인덱스(105)를 생성하고 유지하기 위해 이용된다. 다른 기능들 중에서도, 인덱싱 소프트웨어(101)는 컨텐츠 파일들(103) 및 메타데이터(104)를 스캐닝함으로써 획득된 정보를 수신하고, 그 정보를 이용하여 특정 용어를 포함하거나 특정 용어를 포함하는 메타데이터를 갖는 항목(예를 들어, 파일)을 식별하는 하나 이상의 포스팅 목록(106)을 생성한다. 따라서, 포스팅 목록은 검색어와 같은 용어를 목록 내에 식별된 항목들에 맵핑하는 일종의 반전 인덱스이다.
일 실시예에서, 스캔 동안 획득된 정보는 특정 용어를 포함하거나 그 용어를 포함하는 메타데이터를 갖는 항목을 고유하게 식별하는 고유 식별자를 포함한다. 예를 들어, 워드 프로세싱 또는 텍스트 프로세싱 파일과 같은 항목들은 ITEMID라고 지칭되는 고유 식별자들을 갖는다. ITEMID들은 단어 "Apple"과 같은 특정 용어를 포함하는 항목들을 식별하기 위해 포스팅 목록(예를 들어, 포스팅 파일(106))을 생성할 때 이용된다. 이미지 파일 또는 음악 파일과 같은 다른 유형의 파일을 식별하는 ITEMID들은 또한 하나 이상의 포스팅 목록(106)에 포스팅될 수 있으며, 이 경우에서 ITEMID는 전형적으로 특정 용어를 포함하는 메타데이터를 갖는 항목들을 식별한다. 일 실시예에서, 인덱싱 소프트웨어(101)는 하나 이상의 용어에 대한 포스팅 목록들(106)을 하나 이상의 업데이트 세트(도시되지 않음)에 축적하고, 가끔씩 업데이트 세트들을 하나 이상의 인덱스 파일(105)로 플러시(flush)한다.
일 실시예에서, 검색 소프트웨어(102)는 운영 체제의 일부 또는 시스템/사용자 구성으로서 구성되어 있을 수 있는 언어 로캘 정보(110)에 기초하여 검색 시에 상태 머신을 구축하도록 구성된 검색 상태 머신 구축기(109)를 더 포함한다. 일 실시예에서, 검색어를 포함하는 임의의 컨텐츠 파일 또는 메타데이터를 검색하기 위해 검색 질의가 수신될 때, 상태 머신 구축기(109)는 로캘 정보(110)로부터 획득된 현재 언어 로캘에 기초하여 검색어를 표현하기 위해 상태 머신을 동적으로 구축하도록 구성된다. 상태 머신은 하나 이상의 노드를 포함할 수 있고, 노드들 각각은 현재 언어 로캘 하에서 검색어의 캐릭터 또는 등가 캐릭터를 표현한다. 즉, 상태 머신은 언어 로캘 하에서 동일 또는 유사한 의미를 갖는 검색어들의 모든 변형을 표현한다. 이것은 사실상, 다른 언어 로캘들에서는 동일한 의미를 가질 수 있었지만 그 시점에서의 언어 로캘 하에서는 다른 의미를 갖는 임의의 캐릭터들을 걸러낸다.
예를 들어, 영어에서, 용어 "var", "" 및 ""는 등가이며, 그들은 동일한 의미를 갖는다. 검색어가 용어 "var", "" 및 "" 중 하나를 포함하고, 언어 로캘이 영어일 때, 정확한 용어들 및 등가 용어(예를 들어, "var", "" 및 "") 중 임의의 것을 포함하는 모든 파일이 검색되고 식별되어야 한다. 그러나, 스웨덴어에서, 단어 "var"는 "was"를 의미하는 반면에, 단어 ""는 "spring"을 의미한다. 스웨덴어에서의 이들 두 용어는 상이한 의미를 가지므로, "var"의 검색이 용어 ""를 포함하는 파일로 되어서는 안 되고, 그 반대로 되어서도 안 된다.
일 실시예에서, 현재 언어 로캘 하에서의 유효한 등가 용어들을 표현하기 위해, 현재 언어 로캘에 기초하여 상태 머신이 동적으로 구축된다. 예를 들어, 도 2에 도시된 바와 같이, 영어 로캘에서, 검색어가 "var" 및 "" 중 하나를 포함할 때, 컨텐츠 데이터로서든 메타데이터로서든 "var", "" 및 "" 중 하나 이상을 포함하는 모든 파일이 검색되고 식별되어야 한다. 이 예에서, 검색은 대소문자 구분없는 검색(case insensitive search)인 것으로 가정된다. 검색어(예를 들어, "var" 또는 "")에 응답하여, 영어 로캘 하에서 동일하거나 유사한 의미를 갖는 3개의 용어로 되는 상태 머신이 구축된다. 그러면, 상태 머신에 의해 표현되는 용어들(본 예에서는 용어 "var", "" 및 "")에 대응하는 임의의 포스팅 목록들에 대해 검색하기 위해, 도 2에 도시된 것과 같은 상태 머신이 이용될 수 있다.
한편, 덴마크어 로캘에서, 용어 "var" 및 ""는 덴마크어에서 상이한 의미를 가지므로, 용어 "var" 및 ""에 대한 검색은 상이한 결과들을 만들어낼 수 있다. 덴마크어에서의 용어 ""는 도 3에 도시된 것과 같은 상태 머신을 만들어낼 수 있는 반면에, 용어 "var"는 도 4에 도시된 것과 같은 상태 머신을 만들어낼 수 있고, 덴마크어에서의 용어 "var" 및 ""는 등가이다. 따라서, 본 예에서, "var"와 같은 용어에 대한 검색은 그 시점에서의 언어 로캘에 따라 상당히 다른 결과들을 만들어낼 수 있다. 검색 시점에서 동적으로 생성되는 상태 머신을 이용함으로써, 검색 결과는 현재 언어 로캘에 더 특정하게 맞춰질 수 있다.
도 5는 본 발명의 일 실시예에 따라 언어 로캘에 기초하여 인덱싱 및 검색하기 위한 방법을 도시하는 흐름도이다. 예를 들어, 방법(500)은 도 1의 시스템(100)에 의해 수행될 수 있다. 도 5를 참조하면, 블록(501)에서, 언어 로캘들 전부 또는 대부분의 용어들 및 캐릭터들에 대하여 반전 인덱스가 유지된다. 클라이언트로부터 수신된 검색어를 갖는 검색 질의에 응답하여, 그 시점에서의 현재 언어 로캘이 결정된다. 현재 언어 로캘에 기초하여, 블록(503)에서, 검색어 내의 각 캐릭터의 모든 변형(즉, 등가 캐릭터들)을 표현하기 위해 상태 머신이 동적으로 구축된다. 즉, 상태 머신은 현재 언어 로캘 하에서 검색어들의 모든 다양한 등가 캐릭터들의 모든 조합 또는 변이(mutations)를 표현한다. 블록(504)에서, 상태 머신에 의해 표현되는 하나 이상의 용어를 포함하는 항목들(예를 들어, 파일들)의 목록을 식별하여 검색 결과를 생성하기 위해, 상태 머신의 노드들에 의해 표현되는 용어들에 기초하여 인덱스의 포스팅 목록들이 검색된다. 블록(505)에서, 검색 결과가 클라이언트에게 리턴된다.
다시 도 1을 참조하면, 일부 실시예들에 따르면, 인덱스 파일들(105) 및/또는 포스팅 목록 파일들(106)은 트라이 데이터 구조(trie data structure) 또는 플랫 구조(flattened structure)와 같은 트리 구조 내에 저장될 수 있다. 트라이는 트리의 각 노드가 일치되는 스트링의 하나의 캐릭터로 되는 트리 구조이다. 각각의 내부 노드는 캐릭터들의 목록으로 구성된다. 각 캐릭터에는 다른 내부 노드 또는 리프 노드(leaf node)에의 외향 링크(outgoing link)가 연관지어진다. 각각의 리프 노드는 그 리프 노드로 이어지는 프리픽스에 연관된 결과 데이터를 보유한다. 트라이를 검색하기 위해, 루트 노드에서 시작하여, 일치시켜질 스트링 내의 다음 캐릭터에 대응하는 각 노드에서 외향 링크를 따라감으로써 트리를 횡단한다. 일치하는 외향 링크를 발견할 수 없을 때, 일치(matching)가 발견된 것이다.
각각의 캐릭터는 그것의 유니코드 및/또는 대응하는 콜레이션 키에 의해 표현될 수 있다. 예를 들어, 그러한 유니코드 및 콜레이션 키는 ICU(International Components for Unicode) 위원회에 의해 정의될 수 있다. 캐릭터는 단일 유니코드에 의해 표현되는 구성된 형태(composed form)로, 또는 복수의 유니코드에 의해 표현될 수 있는 분해된 형태(decomposed form)로 저장될 수 있다. 일 실시예에서, 캐릭터는 UTF-8(8-bit Unicode Transformation Format) 캐릭터와 같은 유니코드를 위한 가변 길이 캐릭터 인코딩으로서 저장된다.
도 6 및 7은 본 발명의 일부 실시예들에 따른 콜레이션 키들에 기초한 상태 머신을 도시하는 도면이다. 본 예에서, 도 6에 도시된 것과 같은 상태 머신은 각각 콜레이션 키 0x57, 0x2D, 0x4F로 영어 로캘에서의 "var" 및 "" 또는 덴마크어 로캘에서의 "var"를 검색하기 위해 이용될 수 있다. 콜레이션 키는 주어진 언어 로캘 내에서의 용어의 각 부분에 기초하여 결정된다는 점에 주목해야 한다. 예를 들어, 영어에서, 용어 "vaar"는 콜레이션 키 (0x57 0x23 0x23 0x4F)를 가지며, "v"의 부분은 키 "0x57"에 의해 표현되고, "aa"의 부분은 키 "0x23 0x23"에 의해 표현되고, "r"의 부분은 키 "0x4F"에 의해 표현된다. 그러나, 덴마크어에서, 용어 "vaar"는 콜레이션 키 (0x57 0x60 0xC3 0x06 0x4F)를 가지며, "v"의 부분은 키 "0x57"에 의해 표현되고, "aa"의 부분은 키 "0x60 0xC3 0x06"에 의해 표현되고, "r"의 부분은 키 "0x4F"에 의해 표현된다. 덴마크어 로캘에서 용어 ""를 검색하기 위해, 도 7에 도시된 것과 같은 상태 머신이 이용될 수 있다. 위에 설명된 바와 같이, 도 6 및 7에 도시된 것과 같은 상태 머신은 검색어에 응답하여 현재 언어 로캘에 기초하여 동적으로 구축될 수 있다.
본 예에서, "var"의 검색이 영어 로캘에서 수신되고, 도 6에 도시된 것과 같은 상태 머신이 동적으로 생성되며, 캐릭터들은 도 8에 도시된 것과 같은 트라이 아키텍처 또는 도 9에 도시된 것과 같은 플랫 형태로 저장된다고 가정된다. 프로세싱 로직(예를 들어, 검색 소프트웨어)은 도 6의 상태 A1에서 시작하며, 거기에서 변수 match_info 내에 저장된 일치 정보는 비어 있다. 도 6을 참조하면, 상태 A1에서, 프로세싱 로직은 일치하는 스트링들을 찾아보고 "v"를 발견하며, match_info={"v" next=T2}이다. 다음으로, 프로세싱 로직은 상태 A2로 전이된다. 상태 A2에서, 프로세싱 로직은 임의의 후속하는 결합 캐릭터들(combining characters)을 찾아보고 어떤 것도 발견하지 못하며, match_info={"v" next=T2}이다. 다음으로, 그것은 상태 A3로 전이한다. 상태 A3에서, 프로세싱 로직은 일치하는 스트링들을 찾아보고 "a"를 발견하며, match_info={"va" next=T3}이다. 다음으로, 그것은 상태 A4로 전이한다.
상태 A4에서, 프로세싱 로직은 임의의 후속하는 결합 캐릭터들을 찾아보고 "" 및 ""를 발견한다. 따라서, match_info={"va" next=T3, "" next=T4, "" next=T5}이다. 다음으로, 프로세싱 로직은 연관된 콜레이션 키들 {s:"va" k: 0x57 0x2D, s:"" k: 0x57 0x2D, s:"" k: 0x57 0x2D}의 유효성을 검증한다. 이 예에서, 모든 콜레이션 키가 콜레이션 키 0x57, 0x2D, 0x4F와 일치된다. 이 시점에서, match_info={"va" next=T3, "" next=T4, "" next=T5}이고, 프로세싱 로직은 상태 A5로 전이한다. 상태 A5에서, 프로세싱 로직은 일치하는 스트링들을 찾아보고, "r"을 발견한다. match_info={"var" next=0, "" next=0, "" next=0}이다. 다음으로, 그것은 상태 A6로 전이한다. 상태 A6에서, 프로세싱 로직은 임의의 후속하는 결합 캐릭터를 찾아보고 어떤 것도 발견하지 못한다. 이 시점에서, match_info={"var" next=0, "" next=0, "" next=0}이다. 다음으로, 프로세싱 로직은 상태 A7으로 전이하고, "var", "" 및 ""에 대한 최종 일치를 갖는다. 그러면, 이 용어들의 포스팅 목록은 도 8-9에 도시된 것과 같은 데이터 구조들 중 임의의 것으로부터 식별되고 검색될 수 있다.
도 7을 참조하면, 덴마크어에서 ""를 검색하는 다른 예에서, 프로세싱 로직은 match_info={empty}인 상태 B1에서 시작한다. 상태 B1에서, 프로세싱 로직은 일치하는 스트링들을 찾아보고 "v"를 발견하며, 여기에서 match_info={"v" next=T2}이다. 상태 B2에서, 프로세싱 로직은 임의의 후속하는 결합 캐릭터들을 찾아보고 어떤 것도 발견하지 못하며, 여기에서 match_info={"v" next=T2}이다. 상태 B3에서, 프로세싱 로직은 일치하는 스트링들을 찾아보고 ""를 발견하며, 여기에서 match_info={"" next=T4}이다. 상태 B4에서, 프로세싱 로직은 임의의 후속하는 결합 캐릭터들을 찾아보고 어떤 것도 발견하지 못하며, 여기에서 match_info={"" next=T4}이다. 상태 B5에서, 프로세싱 로직은 일치하는 스트링들을 찾아보고 "r"을 발견하며, 여기에서 match_info={"" next=0}이다. 상태 B6에서, 프로세싱 로직은 임의의 후속하는 결합 캐릭터들을 찾아보고 어떤 것도 발견하지 못하며, 여기에서 match_info={"" next=0}이다. 상태 B7에서, ""를 위한 최종 일치를 갖게 된다.
덴마크어에서 "var"를 검색하는 데에 있어서, 프로세싱 로직은 match_info={empty}인 상태 A1에서 시작한다. 상태 A1에서, 프로세싱 로직은 일치하는 스트링들을 찾아보고 "v"를 발견하며, 여기에서 match_info={"v" next=T2}이다. 상태 A2에서, 프로세싱 로직은 임의의 후속하는 결합 캐릭터들을 찾아보고 어떤 것도 발견하지 못하며, 여기에서 match_info={"v" next=T2}이다. 상태 A3에서, 프로세싱 로직은 일치하는 스트링들을 찾아보고 "a"를 발견하며, 여기에서 match_info={"va" next=T3}이다. 상태 A4에서, 프로세싱 로직은 임의의 후속하는 결합 캐릭터들을 찾아보고 몇몇을 발견하며, 여기에서 match_info={"va" next=T3, "" next=T4, "" next=T5}이다. 추가로, 프로세싱 로직은 콜레이션 키 {s:"va" k: 0x57 0x2D, s:"" k: 0x57 0x60 0xC3 0x06, s:"" k: 0x57 0x2D}의 유효성을 검증한다. 이 예에서, "va" 및 ""(예를 들어, 0x60, 0xC3 및 0x06)의 콜레이션 키만이 검색어를 갖는 것과 일치하며(예를 들어, 0x57 및 0x2D), 여기에서 ""의 콜레이션 키는 일치하지 않는다. 따라서, match_info={"va" next=T3, "" next=T5}이고, ""는 제거된다. 상태 A5에서, 프로세싱 로직은 일치하는 스트링들을 찾아보고 "r"을 발견하며, 여기에서 match_info={"var" next=0, "" next=0}이다. 상태 A6에서, 프로세싱 로직은 임의의 후속하는 결합 캐릭터들을 찾아보고 어떤 것도 발견하지 못하며, 여기에서 match_info={"var" next=0, next=0, "" next=0}이다. 상태 A7에서, "var" 및 ""를 위한 최종 매치를 갖게 된다.
도 10은 본 발명의 다른 실시예에 따른 검색 방법을 도시한 흐름도이다. 예를 들어, 방법(1000)은 도 1의 시스템(100)에 의해 수행될 수 있다. 도 10을 참조하면, 블록(1001)에서, 검색어에 응답하여, 검색어 내의 각 캐릭터를 위한 콜레이션 키가 결정된다. 그러한 콜레이션 키는 ICU 위원회에 의해 제시된 하나 이상의 규칙에 따라 결정될 수 있다. 블록(1002)에서, 상태 머신이 동적으로 구축되는데, 이 상태 머신은 하나 이상의 노드를 포함하며, 노드 각각은 검색어의 캐릭터들 중 하나에 대응한다. 블록(1003)에서, 상태 머신 내의 각 노드에 대하여, 현재 언어 로캘에 기초하여 하나 이상의 등가 캐릭터가 식별된다. 블록(1004)에서, 등가 캐릭터들의 콜레이션 키들은 검색어에 연관된 콜레이션 키들과 대조된다. 블록(1005)에서, 콜레이션 키가 검색어의 대응하는 것과 일치하지 않는 임의의 캐릭터가 제거된다.
모바일 디바이스와 같은 일부 운영 환경에서, 언어 로캘은 안정적인 경향이 있다. 즉, 운영 환경의 언어 로캘이 자주 변하지 않는다. 오히려, 그러한 운영 환경에서는, 메모리 및/또는 저장소와 같은 프로세싱 대역폭이 제한되는 경향이 있다. 본 발명의 일부 실시예들에 따르면, 용어의 실제 캐릭터들을 인덱싱하는 대신에, 현재 언어 로캘에 대한 용어의 캐릭터들의 콜레이션 키들이 인덱싱된다. 예를 들어, 이동 전화기는 전형적으로 인덱싱되고 있는 작은 문서 집합을 갖는다. 일 실시예에서, 콜레이션 키들은 현재 언어 로캘에 기초하여 인덱싱된다. 언어 로캘이 변하는 경우, 새로운 언어 로캘 하에서의 문서들의 콜레이션 키들이 다시 인덱싱된다.
영어에 있어서, 용어 "var", "" 및 "" 모두는 대소문자/분음부호(diacritic) 비구별 검색에 대하여 동일한 콜레이션 키 (0x57 0x2D 0x4F)를 갖는다. 이러한 상황에서는, 원래의 용어 대신에 단순히 콜레이션 키를 인덱싱할 수 있다. 검색 시에, 콜레이션 키는 검색어에 기초하여 동적으로 구축된다. 이것은 더 적은 고유 용어를 저장하는 이점을 갖지만, 프로세스에서 원래 용어를 마구 늘어놓을 수 있다(즉, 단일 콜레이션 키가 복수의 캐릭터를 표현할 수 있기 때문에, 원래의 용어가 콜레이션 키로부터 재생성되지 못한다). 그러나, 인덱스는 비교적 작은 크기로 유지될 수 있다.
도 11은 본 발명의 일 실시예에 따른 콜레이션 키에 기초한 인덱싱 및 검색을 위한 방법을 도시하는 흐름도이다. 예를 들어, 방법(1100)은 도 1의 시스템(100)에 의해 수행될 수 있다. 도 11을 참조하면, 블록(1101)에서, 인덱싱될 하나 이상의 캐릭터를 갖는 용어에 응답하여, 현재 언어 로캘이 결정된다. 언어 로캘은 시스템의 운영 환경의 사용자 및/또는 시스템 구성으로부터 획득될 수 있다. 블록(1102)에서, 현재 언어 로캘에 기초하여 용어 내의 캐릭터들 각각 또는 전부에 대해 콜레이션 키가 생성된다. 블록(1103)에서, 용어를 표현하는 콜레이션 키들은 반전 인덱스로 인덱싱된다. 후속하여, 블록(1104)에서, 검색어에 응답하여, 검색어 내의 캐릭터들 각각을 위한 콜레이션 키가 현재 언어 로캘에 기초하여 생성된다. 블록(1105)에서, 콜레이션 키에 대응하는 용어를 포함하는 하나 이상의 파일을 식별하기 위해, 검색어를 표현하는 콜레이션 키에 기초하여 반전 인덱스가 검색된다. 블록(1101-1103) 및 블록(1104-1105)에 수반되는 동작들은 예를 들어 상이한 스레드들을 통해 독립적으로 수행될 수 있음에 주목해야 한다.
도 12는 본 발명의 일 실시예와 함께 이용될 수 있는 데이터 프로세싱 시스템의 블록도이다. 예를 들어, 시스템(1200)은 도 1의 시스템(100)으로서 이용될 수 있다. 도 12가 컴퓨터 시스템의 다양한 컴포넌트들을 예시하고 있지만, 컴포넌트들을 상호접속하는 임의의 특정 아키텍처 또는 방식을 표현하도록 의도되지는 않았음을 주목해야 하는데, 왜냐하면 그러한 상세들은 본 발명과 밀접한 관련이 있지 않기 때문이다. 또한, 아마도 더 많은 컴포넌트 또는 더 적은 컴포넌트를 갖는 네트워크 컴퓨터, 핸드핼드형 컴퓨터, 셀폰 및 다른 데이터 프로세싱 시스템들도 본 발명과 함께 이용될 수 있음을 알아야 한다. 도 12의 컴퓨터 시스템은 예를 들어 Apple Macintosh 컴퓨터 또는 MacBook, 또는 IBM 호환 PC일 수 있다.
도 12에 도시된 바와 같이, 데이터 프로세싱 시스템의 한 형태인 컴퓨터 시스템(1200)은 하나 이상의 마이크로프로세서(1203) 및 ROM(1207), 휘발성 RAM(1205) 및 비휘발성 메모리(1206)에 연결된 버스 또는 상호접속부(1202)를 포함한다. 마이크로프로세서(1203)는 캐시 메모리(1204)에 연결된다. 버스(1202)는 이들 다양한 컴포넌트들을 함께 상호접속하고, 또한 이들 컴포넌트들(1203, 1207, 1205 및 1206)을 디스플레이 컨트롤러 및 디스플레이 디바이스(1208)와, 마우스, 키보드, 모뎀, 네트워크 인터페이스, 프린터 및 본 기술분야에 잘 알려져 있는 다른 디바이스일 수 있는 입력/출력(I/O) 디바이스들(1210)에 상호접속한다.
전형적으로, 입력/출력 디바이스들(1210)은 입력/출력 컨트롤러(1209)를 통해 시스템에 연결된다. 휘발성 RAM(1205)은 전형적으로 메모리 내의 데이터를 리프레시 또는 유지하기 위해 지속적으로 전력을 요구하는 동적 RAM(DRAM)으로서 구현된다. 비-휘발성 메모리(1206)는 전형적으로, 자기 하드 드라이브, 자기 광학 드라이브, 광학 드라이브, 또는 DVD RAM 또는 시스템으로부터 전력이 제거된 후에도 데이터를 유지하는 다른 유형의 메모리 시스템이다. 전형적으로, 비휘발성 메모리는 또한 랜덤 액세스 메모리일 것이지만, 이것이 필수적인 것은 아니다.
도 12는 비휘발성 메모리를 데이터 프로세싱 시스템 내의 나머지 컴포넌트들에 직접 연결된 로컬 디바이스로 도시하고 있지만, 본 발명은 모뎀 또는 이더넷 인터페이스와 같이 네트워크 인터페이스를 통해 데이터 프로세싱 시스템에 연결되는 네트워크 저장 디바이스와 같이, 시스템으로부터 원격인 비휘발성 메모리를 이용할 수 있다. 버스(1202)는 본 기술분야에 잘 알려져 있는 바와 같이, 다양한 브리지, 컨트롤러 및/또는 어댑터를 통해 서로 접속된 하나 이상의 버스를 포함할 수 있다. 일 실시예에서, I/O 컨트롤러(1209)는 USB(Universal Serial Bus) 주변장치를 제어하기 위한 USB 어댑터를 포함한다. 대안적으로, I/O 컨트롤러(1209)는 Fire Wire 디바이스를 제어하기 위한 Fire Wire 어댑터라고도 알려져 있는 IEEE-1394 어댑터를 포함할 수 있다.
앞의 상세한 설명의 일부 부분들은 컴퓨터 메모리 내의 데이터 비트들에 대한 동작의 알고리즘 및 기호적 표현과 관련하여 제공되었다. 이러한 알고리즘적 설명 및 표현은 데이터 프로세싱 기술분야의 숙련된 자들이 그 기술분야의 숙련된 다른 이들에게 자신의 작업의 본질을 가장 효과적으로 전달하기 위해 이용하는 방식이다. 여기에서, 그리고 일반적으로, 알고리즘은 원하는 결과를 야기하는 동작들의 자기 모순이 없는 시퀀스로 생각되어야 한다. 동작들은 물리적 수량의 물리적 조작을 요구하는 것들이다.
그러나, 이러한 용어들 및 유사한 용어들 전부는 적절한 물리적 수량과 연관지어질 것이며 그러한 수량들에 적용되는 편리한 라벨에 지나지 않음을 염두에 두어야 한다. 위의 논의에서 명백한 대로 다르게 명시적으로 언급되지 않는 한, 명세서 전체에서 이하의 청구항들에 제시된 것과 같은 용어들을 이용한 논의는, 컴퓨터 시스템의 레지스터 및 메모리 내에서 물리적(전자적) 수량으로서 표현된 데이터를 조작하여, 컴퓨터 시스템의 메모리 또는 레지스터, 또는 다른 그러한 정보 저장, 전송 또는 디스플레이 디바이스 내의 물리적 수량으로서 유사하게 표현되는 다른 데이터로 변환하는 컴퓨터 시스템 또는 유사한 전자 컴퓨팅 디바이스의 액션 및 프로세스를 지칭함을 알아야 한다.
본 발명의 실시예들은 또한 여기에서의 동작들을 수행하기 위한 장치에 관한 것이다. 그러한 컴퓨터 프로그램은 비-일시적인 컴퓨터 판독가능한 매체에 저장된다. 머신 판독가능한 매체는 머신(예를 들어, 컴퓨터)에 의해 판독가능한 형태로 정보를 저장하기 위한 임의의 메커니즘을 포함한다. 예를 들어, 머신 판독가능한(예를 들어, 컴퓨터 판독가능한) 매체는 머신(예를 들어, 컴퓨터) 판독가능한 저장 매체(예를 들어, 판독 전용 메모리(ROM), 랜덤 액세스 메모리(RAM), 자기 디스크 저장 매체, 광학 저장 매체, 플래시 메모리 디바이스)를 포함한다.
위의 도면들에 도시된 프로세스 또는 방법은 하드웨어(예를 들어, 회로망, 전용 로직 등), 소프트웨어(예를 들어, 비-일시적인 컴퓨터 판독가능한 매체 상에 구현된 것), 또는 그 둘의 조합을 포함하는 프로세싱 로직에 의해 수행될 수 있다. 프로세스 또는 방법이 소정의 순차적인 동작들과 관련하여 위에 설명되지만, 설명된 동작들 중 일부는 다른 순서로 수행될 수 있음을 알아야 한다. 더욱이, 일부 동작들은 순차적으로 수행되지 않고 병렬로 수행될 수 있다.
본 발명의 실시예들은 어떠한 특정한 프로그래밍 언어도 참조하여 설명되지 않는다. 여기에 설명된 본 발명의 실시예들의 교시를 구현하기 위해 다양한 프로그래밍 언어가 이용될 수 있음을 알 것이다.
위의 명세서에서는 본 발명의 실시예들이 구체적인 구현예들을 참조하여 설명되었다. 이하의 청구항들에 제시된 본 발명의 더 넓은 취지 및 범위를 벗어나지 않고서 다양한 수정이 이루어질 수 있음이 분명할 것이다. 따라서, 명세서 및 도면은 제한의 의미가 아니라 예시의 의미로 취급되어야 한다.
Claims (20)
- 인덱싱을 위한 컴퓨터 구현 방법으로서,
클라이언트로부터 수신된 검색어를 갖는 검색 질의에 응답하여, 현재 언어 로캘(language locale)을 결정하는 단계;
상기 현재 언어 로캘에 기초하여 상기 검색어와 동일한 의미를 갖는 상기 검색어의 변형(variance)을 표현하기 위해 복수의 노드를 갖는 상태 머신을 동적으로 구축하는 단계;
상기 상태 머신의 각 노드에 대응하는 반전 인덱스(inverted index)의 하나 이상의 포스팅 목록(posting list)을 식별하기 위해 상기 상태 머신의 각 노드를 횡단(traversing)하는 단계; 및
상기 하나 이상의 포스팅 목록으로부터 획득된 하나 이상의 항목 식별자를 상기 클라이언트에 리턴하는 단계 - 상기 항목 식별자들은 상기 상태 머신에 의해 표현되는 상기 검색어의 상기 변형을 포함하는 하나 이상의 파일을 식별함 -
를 포함하는 컴퓨터 구현 방법. - 제1항에 있어서,
복수의 언어 로캘로부터의 하나 이상의 캐릭터를 갖는 복수의 용어(term)에 대해 상기 반전 인덱스를 유지하는 단계를 더 포함하고, 각각의 용어는 그 대응하는 용어를 포함하는 하나 이상의 파일을 식별하는 항목 식별자들을 갖는 포스팅 목록에 대응하는 컴퓨터 구현 방법. - 제1항에 있어서,
상기 상태 머신 내의 노드들 각각은 결정된 언어 로캘 하에서 상기 검색어 내의 대응하는 캐릭터와 동일한 의미를 갖는 캐릭터를 표현하는 컴퓨터 구현 방법. - 제1항에 있어서,
상기 상태 머신의 각 노드는 상이한 언어 로캘들 내에서 동일한 의미를 갖는 상이한 캐릭터들의 변형의 콜레이션(collation)을 표시하는 콜레이션 키(collation key)에 연관되는 컴퓨터 구현 방법. - 제4항에 있어서,
상기 콜레이션 키는 상이한 언어 로캘들 내에서 상기 캐릭터들 각각을 표현하는 ICU(International Component Unicode)로부터 도출되는 컴퓨터 구현 방법. - 제4항에 있어서,
상기 상태 머신을 횡단하는 단계는,
상기 상태 머신의 각 노드의 제1 콜레이션 키를 상기 검색어의 대응하는 캐릭터의 제2 콜레이션 키에 대조하는 단계; 및
상기 제2 콜레이션 키와 일치하지 않는 콜레이션 키를 갖는 캐릭터 후보를 상기 상태 머신으로부터 제거하는 단계
를 포함하는 컴퓨터 구현 방법. - 제1항에 있어서,
상기 반전 인덱스의 용어들은 트라이 아키텍처(trie architecture) 내에 저장되고, 대응하는 포스팅 목록을 식별하기 위해 상기 트라이 아키텍처 내의 대응하는 노드의 위치를 찾기 위해 상기 상태 머신의 각 노드가 횡단되는 컴퓨터 구현 방법. - 컴퓨터에 의해 실행될 때, 상기 컴퓨터로 하여금 인덱싱을 위한 방법을 수행하게 하는 명령어들이 저장되어 있는 컴퓨터 판독가능한 저장 매체로서,
상기 방법은,
클라이언트로부터 수신된 검색어를 갖는 검색 질의에 응답하여, 현재 언어 로캘을 결정하는 단계;
상기 현재 언어 로캘에 기초하여 상기 검색어와 동일한 의미를 갖는 상기 검색어의 변형을 표현하기 위해 복수의 노드를 갖는 상태 머신을 동적으로 구축하는 단계;
상기 상태 머신의 각 노드에 대응하는 반전 인덱스의 하나 이상의 포스팅 목록을 식별하기 위해 상기 상태 머신의 각 노드를 횡단하는 단계; 및
상기 하나 이상의 포스팅 목록으로부터 획득된 하나 이상의 항목 식별자를 상기 클라이언트에 리턴하는 단계 - 상기 항목 식별자들은 상기 상태 머신에 의해 표현되는 상기 검색어의 상기 변형을 포함하는 하나 이상의 파일을 식별함 -
를 포함하는 컴퓨터 판독가능한 저장 매체. - 제8항에 있어서,
상기 방법은 복수의 언어 로캘로부터의 하나 이상의 캐릭터를 갖는 복수의 용어에 대해 상기 반전 인덱스를 유지하는 단계를 더 포함하고, 각각의 용어는 그 대응하는 용어를 포함하는 하나 이상의 파일을 식별하는 항목 식별자들을 갖는 포스팅 목록에 대응하는 컴퓨터 판독가능한 저장 매체. - 제8항에 있어서,
상기 상태 머신 내의 노드들 각각은 결정된 언어 로캘 하에서 상기 검색어 내의 대응하는 캐릭터와 동일한 의미를 갖는 캐릭터를 표현하는 컴퓨터 판독가능한 저장 매체. - 제8항에 있어서,
상기 상태 머신의 각 노드는 상이한 언어 로캘들 내에서 동일한 의미를 갖는 상이한 캐릭터들의 변형의 콜레이션을 표시하는 콜레이션 키에 연관되는 컴퓨터 판독가능한 저장 매체. - 제11항에 있어서,
상기 콜레이션 키는 상이한 언어 로캘들 내에서 상기 캐릭터들 각각을 표현하는 ICU(International Component Unicode)로부터 도출되는 컴퓨터 판독가능한 저장 매체. - 제11항에 있어서,
상기 상태 머신을 횡단하는 단계는,
상기 상태 머신의 각 노드의 제1 콜레이션 키를 상기 검색어의 대응하는 캐릭터의 제2 콜레이션 키에 대조하는 단계; 및
상기 제2 콜레이션 키와 일치하지 않는 콜레이션 키를 갖는 캐릭터 후보를 상기 상태 머신으로부터 제거하는 단계
를 포함하는 컴퓨터 판독가능한 저장 매체. - 제8항에 있어서,
상기 반전 인덱스의 용어들은 트라이 아키텍처 내에 저장되고, 대응하는 포스팅 목록을 식별하기 위해 상기 트라이 아키텍처 내의 대응 노드의 위치를 찾기 위해 상기 상태 머신의 각 노드가 횡단되는 컴퓨터 판독가능한 저장 매체. - 인덱싱을 위한 컴퓨터 구현 방법으로서,
검색어를 갖는 검색 질의에 응답하여, 상기 검색어의 각 캐릭터를 위한 콜레이션 키를 결정하는 단계;
상기 검색어에 기초하여 복수의 노드를 갖는 상태 머신을 동적으로 구축하는 단계 - 각 노드는 상기 검색어 내의 캐릭터들 중 하나를 표현함 -; 및
상기 상태 머신의 각 노드에 대응하는 반전 인덱스의 하나 이상의 포스팅 목록을 식별하기 위해 상기 상태 머신 내의 상기 노드들 각각을 횡단하는 단계
를 포함하고, 상기 횡단하는 단계는,
상기 상태 머신의 각 노드에 대해, 현재 언어 로캘에 기초하여 동일 의미를 갖는 하나 이상의 등가 캐릭터를 식별하는 단계,
상기 등가 캐릭터들의 콜레이션 키들을 상기 검색어 내의 대응하는 캐릭터의 콜레이션 키와 비교하는 단계, 및
상기 검색어 내의 상기 대응하는 캐릭터의 상기 콜레이션 키와 일치하지 않는 콜레이션 키를 갖는 등가 캐릭터를 제거하는 단계
를 포함하고, 남아있는 캐릭터들은 상기 반전 인덱스 내의 상기 하나 이상의 포스팅 목록을 식별하는 데에 이용되는 컴퓨터 구현 방법. - 제15항에 있어서,
상기 하나 이상의 포스팅 목록으로부터 획득된 하나 이상의 항목 식별자를 클라이언트에게 표시하는 단계를 더 포함하고, 상기 항목 식별자들은 상기 상태 머신에 의해 표현된 상기 검색어의 변형을 포함하는 하나 이상의 파일을 식별하는 컴퓨터 구현 방법. - 제15항에 있어서,
상이한 언어 로캘들 내에서 캐릭터를 표현하는 ICU(International Component Unicode)로부터 콜레이션 키가 도출되는 컴퓨터 구현 방법. - 인덱싱을 위한 컴퓨터 구현 방법으로서,
데이터 프로세싱 시스템에서 제1 용어를 수신하는 단계 - 상기 제1 용어는 인덱싱될 하나 이상의 캐릭터를 가짐 -;
상기 데이터 프로세싱 시스템의 현재 언어 로캘을 결정하는 단계;
상기 현재 언어 로캘 하에서 상기 제1 용어의 상기 캐릭터들 각각에 대한 콜레이션 키를 결정하는 단계; 및
상기 제1 용어의 실제 캐릭터들에 기초하여 인덱싱하지 않고서, 상기 제1 용어의 상기 캐릭터들 각각을 위한 상기 콜레이션 키를 반전 인덱스로 인덱싱하는 단계
를 포함하고, 상기 콜레이션 키는 상기 현재 언어 로캘 하에서 동일한 의미를 갖는 하나 이상의 등가 캐릭터 군을 표현하고, 상기 반전 인덱스는 콜레이션 키들에 기초한 후속 검색들을 위해 이용되는 컴퓨터 구현 방법. - 제18항에 있어서,
상기 데이터 프로세싱 시스템에서, 클라이언트로부터 제2 용어를 갖는 검색 질의를 수신하는 단계 - 상기 제2 용어는 하나 이상의 캐릭터를 가짐 -;
상기 현재 언어 로캘에 기초하여 상기 캐릭터들 각각을 표현하는 하나 이상의 콜레이션 키의 시퀀스를 생성하는 단계;
상기 콜레이션 키들에 연관된 하나 이상의 포스팅 목록을 식별하기 위해 상기 콜레이션 키들의 시퀀스에 기초하여 상기 반전 인덱스를 검색하는 단계; 및
상기 포스팅 목록들로부터 획득된 하나 이상의 항목 식별자의 목록을 상기 클라이언트에게 리턴하는 단계 - 상기 항목 식별자들은 상기 콜레이션 키들에 대응하는 캐릭터들을 포함하는 하나 이상의 파일을 식별함 -
를 포함하는 컴퓨터 구현 방법. - 제18항에 있어서,
상이한 언어 로캘들 내에서 캐릭터를 표현하는 ICU(International Component Unicode)로부터 콜레이션 키가 도출되는 컴퓨터 구현 방법.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/913,517 US8577891B2 (en) | 2010-10-27 | 2010-10-27 | Methods for indexing and searching based on language locale |
US12/913,517 | 2010-10-27 | ||
PCT/US2011/056963 WO2012058077A2 (en) | 2010-10-27 | 2011-10-19 | Methods for indexing and searching based on language locale |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20130076876A true KR20130076876A (ko) | 2013-07-08 |
KR101510973B1 KR101510973B1 (ko) | 2015-04-10 |
Family
ID=44872635
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020137010787A KR101510973B1 (ko) | 2010-10-27 | 2011-10-19 | 언어 로캘에 기초한 인덱싱 및 검색 방법 |
Country Status (9)
Country | Link |
---|---|
US (2) | US8577891B2 (ko) |
EP (1) | EP2619689A2 (ko) |
JP (1) | JP5744216B2 (ko) |
KR (1) | KR101510973B1 (ko) |
CN (1) | CN103282900B (ko) |
AU (1) | AU2011320744A1 (ko) |
BR (1) | BR112013010013B1 (ko) |
MX (1) | MX2013004765A (ko) |
WO (1) | WO2012058077A2 (ko) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20180060471A (ko) * | 2016-11-29 | 2018-06-07 | 주식회사 닷 | 제한된 영역을 활용한 데이터 변환 장치, 방법 및 컴퓨터 프로그램 |
WO2018101735A1 (ko) * | 2016-11-29 | 2018-06-07 | 주식회사 닷 | 제한된 영역을 활용한 데이터 변환 장치, 방법 및 컴퓨터 프로그램 |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8527518B2 (en) * | 2010-12-16 | 2013-09-03 | Sap Ag | Inverted indexes with multiple language support |
US20150169740A1 (en) * | 2011-11-21 | 2015-06-18 | Google Inc. | Similar image retrieval |
US10311062B2 (en) * | 2012-08-21 | 2019-06-04 | Microsoft Technology Licensing, Llc | Filtering structured data using inexact, culture-dependent terms |
US11003672B2 (en) * | 2016-10-28 | 2021-05-11 | Apple Inc. | Re-ranking search results using blended learning models |
US10831801B2 (en) * | 2017-05-12 | 2020-11-10 | International Business Machines Corporation | Contextual-based high precision search for mail systems |
US20180349467A1 (en) | 2017-06-02 | 2018-12-06 | Apple Inc. | Systems and methods for grouping search results into dynamic categories based on query and result set |
US10621246B2 (en) * | 2017-06-02 | 2020-04-14 | Apple Inc. | Systems and methods for building an on-device temporal web index for user curated/preferred web content |
CN109635801A (zh) * | 2017-10-09 | 2019-04-16 | 株式会社理光 | 光学字符识别后处理的方法、装置及计算机可读存储介质 |
US10956669B2 (en) * | 2018-07-10 | 2021-03-23 | Beijing Didi Infinity Technology And Development Co., Ltd. | Expression recognition using character skipping |
US11544272B2 (en) * | 2020-04-09 | 2023-01-03 | Thoughtspot, Inc. | Phrase translation for a low-latency database analysis system |
CN117527832A (zh) * | 2024-01-03 | 2024-02-06 | 杭州趣链科技有限公司 | 一种区块链的交易排序方法、装置、电子设备和存储介质 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5913208A (en) * | 1996-07-09 | 1999-06-15 | International Business Machines Corporation | Identifying duplicate documents from search results without comparing document content |
US6026398A (en) | 1997-10-16 | 2000-02-15 | Imarket, Incorporated | System and methods for searching and matching databases |
US6047283A (en) * | 1998-02-26 | 2000-04-04 | Sap Aktiengesellschaft | Fast string searching and indexing using a search tree having a plurality of linked nodes |
JP2002092018A (ja) * | 2000-09-18 | 2002-03-29 | Nec Software Hokkaido Ltd | 片仮名平仮名も含めた検索システム |
NZ518744A (en) | 2002-05-03 | 2004-08-27 | Hyperbolex Ltd | Electronic document indexing using word use nodes, node objects and link objects |
JP4294386B2 (ja) * | 2003-06-13 | 2009-07-08 | 株式会社リコー | 異表記正規化処理装置、異表記正規化処理プログラムおよび記憶媒体 |
US7493305B2 (en) | 2004-04-09 | 2009-02-17 | Oracle International Corporation | Efficient queribility and manageability of an XML index with path subsetting |
US20050251519A1 (en) * | 2004-05-07 | 2005-11-10 | International Business Machines Corporation | Efficient language-dependent sorting of embedded numerics |
US7818282B2 (en) * | 2004-07-02 | 2010-10-19 | International Business Machines Corporation | System and method for the support of multilingual applications |
US7792833B2 (en) * | 2005-03-03 | 2010-09-07 | Microsoft Corporation | Ranking search results using language types |
US8195683B2 (en) | 2006-02-28 | 2012-06-05 | Ebay Inc. | Expansion of database search queries |
WO2007133625A2 (en) * | 2006-05-12 | 2007-11-22 | Eij Group Llc | Multi-lingual information retrieval |
US9754022B2 (en) * | 2007-10-30 | 2017-09-05 | At&T Intellectual Property I, L.P. | System and method for language sensitive contextual searching |
JP2010198350A (ja) * | 2009-02-25 | 2010-09-09 | Nippon Telegr & Teleph Corp <Ntt> | 検索装置及び検索方法 |
-
2010
- 2010-10-27 US US12/913,517 patent/US8577891B2/en active Active
-
2011
- 2011-10-19 WO PCT/US2011/056963 patent/WO2012058077A2/en active Application Filing
- 2011-10-19 JP JP2013536672A patent/JP5744216B2/ja active Active
- 2011-10-19 KR KR1020137010787A patent/KR101510973B1/ko active IP Right Grant
- 2011-10-19 AU AU2011320744A patent/AU2011320744A1/en not_active Abandoned
- 2011-10-19 MX MX2013004765A patent/MX2013004765A/es not_active Application Discontinuation
- 2011-10-19 BR BR112013010013-3A patent/BR112013010013B1/pt active IP Right Grant
- 2011-10-19 CN CN201180052442.5A patent/CN103282900B/zh active Active
- 2011-10-19 EP EP11776057.9A patent/EP2619689A2/en not_active Ceased
-
2012
- 2012-09-13 US US13/615,484 patent/US9020951B2/en active Active
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20180060471A (ko) * | 2016-11-29 | 2018-06-07 | 주식회사 닷 | 제한된 영역을 활용한 데이터 변환 장치, 방법 및 컴퓨터 프로그램 |
WO2018101735A1 (ko) * | 2016-11-29 | 2018-06-07 | 주식회사 닷 | 제한된 영역을 활용한 데이터 변환 장치, 방법 및 컴퓨터 프로그램 |
Also Published As
Publication number | Publication date |
---|---|
JP5744216B2 (ja) | 2015-07-08 |
US20130073559A1 (en) | 2013-03-21 |
US9020951B2 (en) | 2015-04-28 |
KR101510973B1 (ko) | 2015-04-10 |
WO2012058077A2 (en) | 2012-05-03 |
EP2619689A2 (en) | 2013-07-31 |
US20120109970A1 (en) | 2012-05-03 |
BR112013010013B1 (pt) | 2021-06-29 |
US8577891B2 (en) | 2013-11-05 |
BR112013010013A2 (pt) | 2016-08-02 |
CN103282900B (zh) | 2017-02-22 |
JP2013544393A (ja) | 2013-12-12 |
CN103282900A (zh) | 2013-09-04 |
AU2011320744A1 (en) | 2013-05-09 |
WO2012058077A3 (en) | 2012-07-05 |
MX2013004765A (es) | 2013-06-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101510973B1 (ko) | 언어 로캘에 기초한 인덱싱 및 검색 방법 | |
US7788262B1 (en) | Method and system for creating context based summary | |
JP4879580B2 (ja) | ユーザ・インタフェースに自動探索メニューを与えるシステムおよび方法 | |
US8645349B2 (en) | Indexing structures using synthetic document summaries | |
CN107153647B (zh) | 进行数据压缩的方法、装置、系统和计算机程序产品 | |
US7765213B2 (en) | Ordered index | |
CN108255972A (zh) | 一种全文检索方法及系统 | |
CN107526746B (zh) | 管理文档索引的方法和设备 | |
US8122029B2 (en) | Updating an inverted index | |
US8914377B2 (en) | Methods for prefix indexing | |
CN110674087A (zh) | 文件查询方法、装置及计算机可读存储介质 | |
US20230409624A1 (en) | Multi-modal hierarchical semantic search engine | |
JP4783407B2 (ja) | 情報資源の協同タギングシステム及び方法 | |
US20170270127A1 (en) | Category-based full-text searching | |
US7720860B2 (en) | Query result iteration | |
US9020995B2 (en) | Hybrid relational, directory, and content query facility | |
US7769739B1 (en) | Searching for an item using an accessing application as a search parameter | |
US20130091166A1 (en) | Method and apparatus for indexing information using an extended lexicon | |
US20180089329A1 (en) | Method and device for managing index | |
Coole et al. | lexidb: A scalable corpus database management system |
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 | ||
GRNT | Written decision to grant |