KR102214015B1 - 스마트 매치 자동 완성 시스템 - Google Patents

스마트 매치 자동 완성 시스템 Download PDF

Info

Publication number
KR102214015B1
KR102214015B1 KR1020187030465A KR20187030465A KR102214015B1 KR 102214015 B1 KR102214015 B1 KR 102214015B1 KR 1020187030465 A KR1020187030465 A KR 1020187030465A KR 20187030465 A KR20187030465 A KR 20187030465A KR 102214015 B1 KR102214015 B1 KR 102214015B1
Authority
KR
South Korea
Prior art keywords
attribute
category
input
user input
attributes
Prior art date
Application number
KR1020187030465A
Other languages
English (en)
Other versions
KR20190047656A (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 KR20190047656A publication Critical patent/KR20190047656A/ko
Application granted granted Critical
Publication of KR102214015B1 publication Critical patent/KR102214015B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/33Querying
    • G06F16/332Query formulation
    • G06F16/3322Query formulation using system suggestions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/02Input arrangements using manually operated switches, e.g. using keyboards or dials
    • G06F3/023Arrangements for converting discrete items of information into a coded form, e.g. arrangements for interpreting keyboard generated codes as alphanumeric codes, operand codes or instruction codes
    • G06F3/0233Character input methods
    • G06F3/0237Character input methods using prediction or retrieval techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2246Trees, e.g. B+trees
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2457Query processing with adaptation to user needs
    • G06F16/24578Query processing with adaptation to user needs using ranking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases
    • G06F16/285Clustering or classification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/903Querying
    • G06F16/9032Query formulation
    • G06F16/90324Query formulation using system suggestions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/02Input arrangements using manually operated switches, e.g. using keyboards or dials
    • G06F3/023Arrangements for converting discrete items of information into a coded form, e.g. arrangements for interpreting keyboard generated codes as alphanumeric codes, operand codes or instruction codes
    • G06F3/027Arrangements for converting discrete items of information into a coded form, e.g. arrangements for interpreting keyboard generated codes as alphanumeric codes, operand codes or instruction codes for insertion of the decimal point
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/93Document management systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/02Input arrangements using manually operated switches, e.g. using keyboards or dials
    • G06F3/023Arrangements for converting discrete items of information into a coded form, e.g. arrangements for interpreting keyboard generated codes as alphanumeric codes, operand codes or instruction codes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/166Editing, e.g. inserting or deleting
    • G06F40/174Form filling; Merging

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Artificial Intelligence (AREA)
  • Business, Economics & Management (AREA)
  • General Business, Economics & Management (AREA)
  • User Interface Of Digital Computer (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

본 개시의 양태는 데이터 입력 필드에 사용자 입력을 입력하도록 사용자에게 추가 입력에 대한 제안을 제공하는 적어도 하나의 프로그램을 저장하는 컴퓨터 판독가능 매체를 포함하는 시스템 및 컴퓨터로 구현된 방법을 포함한다. 일부 실시예에서, 방법은 사용자 디바이스 상에 제공되는 사용자 인터페이스의 데이터 입력 필드를 통해 입력된 초기 사용자 입력을 수신하는 단계와 초기 사용자 입력에 대응하는 매칭 카테고리를 식별하는 단계를 포함한다. 방법은 매칭 카테고리에 대응하는 속성의 세트를 식별하고, 속성의 세트로부터 속성의 세트의 각 속성의 순위에 기초하여 속성 제안의 세트를 선택하는 단계를 더 포함한다. 방법은 데이터 입력 필드와 함께 제시된 제안 박스를 디스플레이하게 하는 단계를 더 포함한다. 제안 박스는 속성 제안의 세트를 표시한다.

Description

스마트 매치 자동 완성 시스템
관련 출원에 대한 상호 참조
본 국제 출원은 2016년 7월 19일자로 출원된 명칭이 "스마트 매치 자동 완성 시스템(SMART MATCH AUTOCOMPLETE SYSTEM)"인 미국 특허 출원 제15/214,237호의 우선권의 이익을 주장하며, 또한 2016년 3월 23일자로 출원된 명칭이 "스마트 매치 및 자동 완성 분류(SMART MATCH AUTOCOMPLETE CATEGORIZATION)"인 미국 특허 가출원 제62/312,032호 및 2016년 4월 14일자로 출원된 명칭이 "스마트 매치 및 자동 완성(SMART MATCH AUTOCOMPLETE)"인 미국 특허 가출원 제62/322,532호의 이익을 주장하며, 그 전체 내용은 전부 본원에 참조로서 통합된다.
기술 분야
본 출원은 온라인 콘텐츠 게시 플랫폼에 관한 것이다. 특히, 예시적 실시예는 데이터 입력 필드에 입력되는 입력과 관련된 추가적인 관련 용어를 입력하는 프롬프트를 제공함으로써 온라인 콘텐츠 게시 플랫폼에서 검색 기능을 향상시키는 시스템 및 방법에 관한 것이다.
많은 온라인 콘텐츠 게시 플랫폼은 사용자가 웹 브라우저 또는 애플리케이션을 사용하여 다른 사용자가 볼 수 있는 웹 문서(예를 들어, 웹 페이지)의 형태와 같은 온라인 콘텐츠를 생성 및 게시할 수 있도록 한다. 일반적으로 콘텐츠 게시 플랫폼은 사용자가 키워드를 입력하고 콘텐츠 게시 플랫폼에서 호스팅하는 관련 콘텐츠 아이템 또는 게시물을 포함하는 결과의 세트를 반환할 수 있는 검색 엔진 또는 기타 내비게이션 도구를 포함한다.
처음 이용하는 사용자 또는 가끔 이용하는 사용자는 종종 다른 사용자의 흥미와 재검색을 목표로 하는 그들의 콘텐츠에 대한 세부적인 타이틀을 생성하기 어렵다. 결과적으로 콘텐츠 게시 플랫폼은 열람되지 않고 단지 데이터 저장 공간에서 소중한 공간을 차지하고 있는 상당한 양의 콘텐츠를 호스팅하게 된다. 또한, 콘텐츠 게시 플랫폼이 사용자의 질의와 관련된 콘텐츠를 호스팅할 수도 있지만, 콘텐츠 아이템의 타이틀의 문제로 인해 콘텐츠 게시 플랫폼에 의해 사용되는 검색 방법으로는 이 콘텐츠를 검색할 수 없을 수도 있다. 이와 달리, 사용자가 찾고 있는 콘텐츠의 유형을 식별하기에 사용자의 질의가 충분한 자세하지 않기 때문에 이 검색 방법으로 관련 콘텐츠 아이템을 검색할 수 없을 수도 있다.
온라인 마켓은 사용자가 다른 사용자에게 그들의 제품을 판매하기 위해 제품 목록의 형태로 콘텐츠를 생성하도록 하는 예시적인 콘텐츠 게시 플랫폼이다. 판매를 처음 하는 판매자 및 가끔 하는 판매자는 구매자의 흥미와 재검색을 목표로 하는 세부 목록의 타이틀을 생성하기 어렵다. 그러므로 품질이 낮은 타이틀의 목록으로 인해 판매율이 감소하여, 판매자의 만족도에 부정적인 영향을 미치고 판매자가 온라인 마켓을 지속적으로 사용하지 않도록 할 수 있다.
첨부된 다양한 도면들은 단지 본 개시의 예시적 실시예를 도시하며, 그 범위를 제한하는 것으로 간주될 수 없다.
도 1은 예시적 실시예에 따른, SMAC(smart match autocomplete) 시스템을 도시한 구조도이다.
도 2는 예시적 실시예에 따른, SMAC 시스템의 서브 시스템으로서 제공되는 인덱스 생성 시스템을 도시한 구조도이다.
도 3은 예시적 실시예에 따른, SMAC 시스템이 동작하는 네트워크 환경을 도시한 블록도이다.
도 4 내지 7은 예시적 실시예에 따른, 압축 인덱스 문서를 생성할 때의 인덱스 생성 시스템의 예시적 동작을 도시한 흐름도이다.
도 8 내지 12는 예시적 실시예에 따른, SMAC 서비스를 제공하는 SMAC 시스템의 예시적 동작을 도시한 흐름도이다.
도 13a 내지 13f는 예시적 실시예에 따른, SMAC 서비스를 제공함에 있어서 SMAC 시스템에 의해 제공되는 사용자 인터페이스의 양태를 도시한 인터페이스의 도면이다.
도 14a 내지 14c는 예시적 실시예에 따른, SMAC 서비스를 제공함에 있어서 SMAC 시스템에 의해 제공되는 사용자 인터페이스의 양태를 도시한 인터페이스 도면이다.
도 15는 일부 실시예에 따른, SMAC 시스템이 구현될 수 있는 서비스 아키텍처를 도시한 도면이다.
도 16은 일부 예시적 실시예에 따른, 머신 판독가능 매체(예를 들어, 머신 판독가능 저장 매체)로부터 명령어를 판독할 수 있고, 여기에서 논의된 임의의 하나 이상의 방법을 수행할 수 있는 머신의 컴포넌트를 도시한 블록도이다.
이하, 발명적 내용을 수행하기 위한 특정 예시적 실시예들을 상세하게 참조할 것이다. 이러한 특정 실시예의 예가 첨부 도면에 도시되어 있다. 이들 실시예는 청구 범위를 설명된 실시예로 제한하려는 것이 아니라는 것임을 이해할 수 있을 것이다. 반대로, 이들은 본 개시의 범위 내에 포함될 수 있는 대안, 수정 및 등가물을 포함하도록 의도된다. 이하의 설명에서, 구체적 세부 사항은 발명적 내용에 대한 완전한 이해를 제공하기 위해 제시된다. 이러한 특정 세부 사항의 일부 또는 전부 없이도 실시예는 실시될 수 있다.
본 개시는 사용자가 키워드 검색 및 타이틀 생성(예를 들어, 아이템 목록 타이틀 생성)에 사용하기 위한 고품질의 콘텐츠 설명을 생성하는 것을 도움으로써 상기 문제점을 해결하는 스마트 매치 자동 완성(smart match autocomplete; SMAC) 시스템과 관련된다. 콘텐츠 게시 플랫폼은 자체 데이터를 활용하여 사용자가 콘텐츠의 카테고리(예를 들어, 아이템 카테고리)를 기초로 의미 있는 검색어 또는 타이틀에 포함될 키워드 및 설명을 제시할 수 있다. 이 데이터는 어떤 아이템 속성이 가장 중요한지를 식별하고 이 속성을 사용자에게 제시하여, 게시를 위한 콘텐츠 타이틀에 이를 포함시킬 수 있도록 하는 데이터 분석을 기초로 한다.
도 1은 예시적 실시예에 따른, SMAC 시스템(100)을 도시한 구조도이다. 도시된 것과 같이, SMAC 시스템(100)은 오케스트레이션(orchestration) 엔진(102); 검색 클러스터(104); 인덱스 생성 시스템(106); 카테고리 인식 모듈(108); 제품 데이터 검색 모듈(110); 자동 완성 모듈(112); 속성 추출 모듈(114); 및 인터페이스 모듈(118)을 포함한다. SMAC 시스템(100)의 상술된 기능적 컴포넌트 각각은 (예를 들어, 애플리케이션 프로그래밍 인터페이스(API)를 통해) 서로 통신하도록 구성된다. 도 1에 도시된 임의의 하나 이상의 기능적 컴포넌트는, 도 1에 도시되고 여기서 설명된 하드웨어(예를 들어, 머신의 프로세서) 또는 하드웨어와 소프트웨어의 조합을 사용하여 구현될 수 있다. 예를 들어, 여기에서 설명된 임의의 모듈은 당해 모듈에 대해 여기에서 설명된 동작들을 수행하도록 프로세서를 구성할 수 있다.
불필요한 세부 사항으로 설명함으로써 발명적 내용을 모호하게 하는 것을 피하기 위해, 발명적 내용의 이해를 전달하는 것과 밀접하지 않은 다양한 기능적 컴포넌트(예를 들어, 모듈, 엔진 및 데이터베이스)는 도 1에서 생략되었다. 그러나 통상의 기술자라면 다양한 추가적인 기능적 컴포넌트가 SMAC 시스템(100)에 의해 지원되어 여기에 구체적으로 기술되지 않은 추가 기능을 실현할 수 있음을 용이하게 인식할 것이다. 또한, 임의의 2개 이상의 컴포넌트는 단일 컴포넌트로 결합될 수 있으며, 단일 컴포넌트에 대해 여기에 설명된 기능들은 복수의 컴포넌트로 세분될 수 있다. 또한, 다양한 예시적 실시예에 따른, 도 1에 도시된 임의의 기능적 컴포넌트는, 단일의 머신, 데이터베이스 또는 디바이스로 함께 또는 개별적으로 구현될 수 있거나 복수의 머신, 데이터베이스 또는 디바이스에 분산될 수 있다. 예를 들어, SMAC 시스템(100)의 임의의 기능적 컴포넌트는 하나 이상의 서버상에서 실행되는 네트워크 서비스로서 구현될 수 있다.
오케스트레이션 엔진(102)은 검색 클러스터(104), 카테고리 인식 모듈(108), 데이터 검색 모듈(110), 자동 완성 모듈(112) 및 속성 추출 모듈(114) 각각과 통신하여 SMAC 시스템의 기능을 조율한다. 이를 수행함에 있어서, 오케스트레이션 엔진(102)은 사용자 디바이스로부터 수신된 요청을 수신 및 처리하고, 차례로 API를 통해 하나 이상의 요청을 하나 이상의 검색 클러스터(104), 카테고리 인식 모듈(108), 데이터 검색 모듈(110), 자동 완성 모듈(112) 및 속성 추출 모듈(114)과 통신하여 이들로부터 제공된 데이터를 검색한다. 예를 들어, 오케스트레이션 엔진(102)은 REST(Representational State Transfer) API를 통해 위에서 언급된 컴포넌트들에 HTTP(Hypertext Transfer Protocol) 요청들(예를 들어, GET 요청들)을 제출할 수 있다.
검색 클러스터(104)는 분산된 멀티 테넌트 가능((multitenant-capable) 전체 텍스트 검색 엔진에 오케스트레이션 엔진(102)에 의해 액세스 가능한 인터페이스를 제공하도록 구성된 컴퓨팅 머신 세트(예를 들어, 서버)를 포함한다. 보다 구체적으로, 검색 클러스터(104)는 오프라인 프로세스에서 인덱스 생성 시스템(106)에 의해 생성된 압축 인덱스 문서(116)에 대한 검색 기능을 제공하도록 구성된다. 검색 클러스터(104)는 예를 들어 일래스틱서치(Elasticsearch) 클러스터로서 구현될 수 있다.
압축 인덱스 문서(116)는 다양한 콘텐츠 카테고리들에 관련된 설명 정보를 포함한다. 콘텐츠 카테고리는 네트워크 기반 콘텐츠 게시 플랫폼에 의해 호스팅되는 콘텐츠에 대응한다. 일부 실시예에 따른, 예시적 콘텐츠 게시 플랫폼의 추가 세부 사항은 도 3을 참조하여 후술한다. 예를 들어, 콘텐츠 게시 플랫폼은 타이틀 목록을 호스팅하는 온라인 마켓이며, 콘텐츠 카테고리는 제품 카테고리이다. 압축 인덱스 문서(116)는, 예를 들어, 각 카테고리에 대한 속성의 세트, 각 속성에 대한 속성 값 세트, 조건 데이터, 제품 카탈로그 데이터 및 속성의 부모/자식 관계를 식별하는 메타데이터 태그, 속성이 필수인지 또는 선택인지를 나타내는 메타데이터 태그, 속성의 세트가 개방 또는 폐쇄 세트인지 여부를 나타내는 메타데이터 태그, 특정 속성이 단일 또는 복수의 가능한 값(possible values)을 갖는지 여부를 나타내는 메타데이터 태그를 포함하는 속성 메타데이터를 포함할 수 있다. 인덱스 생성 시스템(106)에 관한 추가 세부 사항은 도 2와 관련하여 후술하고, 압축 인덱스 문서(116)를 생성하기 위한 오프라인 프로세스에 관한 추가 세부 사항은 도 4 내지 8을 참조하여 후술한다.
오케스트레이션 엔진(102)으로부터 요청을 수신하는 것에 응답하여, 검색 클러스터(104)는 특정 카테고리에 대한 속성의 세트를 식별하기 위해 압축 인덱스 문서(116)에 대한 일련의 질의(queries)를 수행하며, 특정 카테고리는 콘텐츠 게시 플랫폼에 의해 호스팅되는 콘텐츠의 임의의 카테고리일 수 있다. 카테고리가 제품 카테고리인 경우, 검색 클러스터(104)는 제품 속성 및 제품 카테고리와 관련된 정보를 식별하기 위해 압축 인덱스 문서를 질의할 수 있다. 압축 인덱스 문서(116)를 질의하는 경우, 검색 클러스터(104)는 압축 인덱스 문서(116)의 포맷에 최적화된 질의 구조를 이용한다. 예를 들어, 검색 클러스터(104)는 카테고리의 속성과 각 속성의 속성 값을 식별하기 위해 카테고리로 압축 인덱스 문서(116)를 질의할 수 있다. 다른 예로서, 검색 클러스터(104)는 속성이 속하는 카테고리 및 해당 속성에 대한 속성 값을 식별하기 위해 속성으로 압축 인덱스 문서(116)를 질의할 수 있다. 또 다른 예로서, 검색 클러스터(104)는 속성 값이 속하는 속성 및 식별된 속성이 속하는 카테고리를 식별하기 위해 속성 값으로 압축 인덱스 문서(116)를 질의할 수 있다.
또한, 검색 클러스터(104)는 오케스트레이션 엔진(102)으로부터의 요청에 대한 응답으로서 식별된 속성으로부터 특정 중요한 속성을 선택하여 반환할 수 있다. 예를 들어, 검색 클러스터(104)는 카테고리의 각 가능한 속성으로부터 제품 차별화 속성, 가격 차별화 속성 및 콘텐츠 게시자의 비즈니스 규칙을 준수하는 데 필요할 수 있는 필수 속성을 식별한다. 제품 차별화 속성은 사용자가 설명하려고 하는 제품과 관련하여 차별화된 세부 사항을 제공하고, 가격 차별화 속성은 제품의 금전적 가치와 관련하여 차별화된 세부 사항을 제공한다. 예를 들어, 신발 카테고리에서, 대부분의 경우, 신발의 크기는 가격 차별화 속성이 아니고, 크기가 10 또는 12인지에 관계없이 신발의 금전적 가치는 동일하다. 그러나 구매자는 구체적으로 특정 크기를 찾을 것이므로, 크기는 제품 차별화 속성에 해당한다. 한편, 신발이 가죽이라는 점은 제품 차별화 속성일뿐만 아니라 가격 차별화 속성이 될 수 있다. 필수 속성은 카테고리에 따라 다를 수 있으며 콘텐츠 게시자가 비선택 사항이라고 생각하는 하나 이상의 속성을 포함할 수 있다.
카테고리 인식 모듈(108)은 텍스트 입력을 분석하여 텍스트 입력에 대응하는 하나 이상의 카테고리를 식별하도록 구성된다. 텍스트 입력은 사용자 입력에 포함된 하나 이상의 키워드를 포함할 수 있다. 몇몇의 경우에서, 하나 이상의 키워드는 제품의 설명(descriptors)에 대응하거나 이를 포함하고, 카테고리 인식 모듈(108)에 의해 식별된 하나 이상의 카테고리는 제품에 대응하는 제품 카테고리를 포함한다.
하나 이상의 카테고리를 식별함에 있어서, 카테고리 인식 모듈(108)은 텍스트 입력에 대응하는 복수의 가능성 있는 카테고리를 식별할 수 있다. 카테고리 인식 모듈(108)은 텍스트 입력과 매칭하는 카테고리의 가능성(likelihood)에 기초하여 식별된 가능성 있는 카테고리 각각에 대한 신뢰 스코어를 결정한다. 신뢰 스코어의 결정은, 예를 들어 초기 텍스트 입력에 포함된 문자의 수, 특정 카테고리의 제품에 대한 과거의 공급 및 수요, 또는 이 둘의 조합에 기초할 수 있다. 카테고리 인식 모듈(108)은 오케스트레이션 엔진(102)으로부터 수신된 요청에 응답하여 가장 높은 신뢰 스코어를 갖는 카테고리를 선택하여 이를 오케스트레이션 엔진(102)으로 반환할 수 있다.
데이터 검색 모듈(110)은 수신된 사용자 입력(예를 들어, 텍스트 입력 또는 버튼의 선택)과 관련된 데이터 레코드를 식별하고 데이터 레코드에 포함된 정보를 검색하도록 구성된다. 데이터 레코드는 콘텐츠 게시 플랫폼에 의해 호스팅되는 콘텐츠와 관련된 설명 정보를 포함한다. 사용자 입력이 제품을 설명하고 있는 실시예의 경우, 데이터 검색 모듈(110)은 이미지, 설명 및 일부 경우에는 이용 가능한 재고와 같은 제품에 관련된 설명 정보를 포함하는 제품 데이터 레코드를 검색한다. 예를 들어, 데이터 검색 모듈(110)은 데이터 레코드를 저장하는 데이터베이스(예를 들어, 제품 데이터베이스)를 질의하기 위해 텍스트 입력에 포함된 하나 이상의 키워드를 사용할 수 있다. 예를 들어, 데이터 레코드는 타이틀 또는 브랜드명, 모델 번호 등과 같은 다른 속성에 의해 데이터베이스에서 인덱싱되어 있을 수 있고, 텍스트 입력에 포함된 키워드는 타이틀을 참조하거나 다른 그러한 속성을 포함할 수 있으므로, 데이터 검색 모듈(110)은 데이터베이스에서 대응하는 데이터 레코드의 위치를 확인할 수 있다.
자동 완성 모듈(112)은 사용자가 텍스트 입력을 입력할 때 단어 또는 구의 나머지 부분을 예측하도록 구성된다. 자동 완성 모듈(112)은 사용자 키 스트로크를 모니터링하고 초기에 타이핑된 문자들에 기초하여 단어들의 리스트를 제안한다. 이와 같이, 자동 완성 모듈(112)은 일부의 텍스트 입력을 분석하고 일부의 텍스트 입력을 완성하기 위한 추가 텍스트 입력에 대한 하나 이상의 제안을 제공할 수 있다. 추가 텍스트 입력에 대한 제안은 사용자가 텍스트 입력을 입력하는 그래픽 사용자 인터페이스(GUI) 내에 표시될 수 있다. 사용자는, 예를 들어, 제안을 선택(예를 들어, 마우스 커서를 사용하거나 터치 기반 제스처로 제공)하거나 탭 키를 누름으로써 GUI와의 적절한 상호 작용을 통해 제안 중 어느 하나를 수락할 수 있다.
속성 추출 모듈(114)은 텍스트 입력을 분석하여 거기에 포함된 카테고리 속성 값을 추출하도록 구성된다. 텍스트 입력이 제품에 대응하는 키워드를 포함하고 있는 경우, 속성 추출 모듈(114)은 텍스트 입력을 분석하여 제품에 대한 제품 속성 값을 추출할 수 있다. 예를 들어, 텍스트 입력으로서 "디젤 슬림 피트 청바지 32(diesel slim fit jeans 32)"를 수신하면, 속성 추출 모듈(114)은 브랜드 속성에 대한 값으로서 "디젤"을, 스타일 속성에 대한 값으로서 "슬림 피트"를, 크기 속성의 값으로 "32"를 추출할 수 있다. 속성 추출 모듈(114)은 텍스트 입력을 파싱(parsing)하고 개별 용어를 카테고리 인식 모듈(108)에 의해 식별된 텍스트 입력의 카테고리의 속성에 대한 알려진 속성 값과 비교함으로써, 텍스트 입력으로부터 속성 값을 식별한다.
도시된 것과 같이, SMAC 시스템(100)은 SMAC 시스템(100)의 기능을 사용자 디바이스에 제시하는 인터페이스 모듈(118)을 더 포함할 수 있다. 인터페이스 모듈(118)은 SMAC 시스템(100)과 데이터를 교환할 수 있도록 하는 복수의 인터페이스(예를 들어, API 또는 UI)를 더 제공한다. 인터페이스 모듈(118)은 사용자 디바이스로부터 요청을 수신하고 디바이스에 적절한 응답을 통신한다. 인터페이스 모듈(118)은 디바이스로부터 예를 들어, 하이퍼 텍스트 전송 프로토콜(HTTP) 요청 또는 다른 웹 기반 API 요청의 형태로 요청을 수신할 수 있다.
인터페이스 모듈(118)은 사용자 디바이스가 디스플레이 상에 UI를 제공할 수 있도록 하는 표시 데이터를 사용자 디바이스에 전송함으로써 사용자 인터페이스를 더 제공할 수 있다. 인터페이스 모듈(118)은 표시 데이터를 디스플레이하기 위한 명령어의 세트와 함께 표시 데이터를 사용자 디바이스에 전송할 수 있다. 사용자 디바이스는 UI의 디스플레이를 가능하도록 하기 위해 표시 데이터를 일시적으로 저장할 수 있다. UI는 사용자가 다양한 입력을 특정할 수 있도록 하는 다양한 입력 제어 요소(예를 들어, 슬라이더, 버튼, 드롭다운 메뉴, 체크 박스 및 데이터 입력 필드)를 포함할 수 있으며, 인터페이스 모듈(118)은 이러한 입력 제어 요소를 통해 수신된 사용자 입력을 수신하고 처리한다.
도 2는 예시적 실시예에 따른, 인덱스 생성 시스템(106)을 도시한 구조도이다. 전술한 것과 같이, 인덱스 생성 시스템(106)은 SMAC 시스템(100)의 컴포넌트로서, 따라서 SMAC 시스템(100)의 서브 시스템으로 간주할 수 있다. 도시된 것과 같이, 인덱스 생성 시스템(106)은 리프(leaf) 카테고리(204), 속성 데이터(206), 속성 메타데이터(208), 카탈로그 데이터(210) 및 아이템 조건 데이터(212)를 포함하는 소스 데이터(202)를 획득하는 인덱스 생성기(200)를 포함한다.
콘텐츠 게시 플랫폼은 특정 분류 체계(taxonomy)을 사용하여 호스팅된 콘텐츠를 분류한다. 이 분류 체계는 카테고리 트리(category tree)로 관리될 수 있다. 카테고리 트리는 콘텐츠 카테고리를 나타내는 링크된 노드를 갖는 계층적 트리 구조를 포함하는 데이터 구조이다. 후술하는 온라인 마켓의 예시적 콘텐츠 게시 플랫폼에서, 카테고리 트리는 제품 카테고리 트리에 대응할 수 있고, 각 노드는 제품 카테고리를 나타낸다. 트리의 최상위 노드는 루트(root) 노드로 간주한다. 루트 노드는 하나 이상의 자식(child) 노드(예를 들어, 루트 노드에 직접 연결된 노드)를 포함할 수 있으며, 각각의 자식 노드는 추가 자식 노드에 대한 부모 노드일 수 있다. 카테고리 트리의 맥락(context)에서, 각각의 자식 노드는 부모 노드에 의해 표현된 카테고리의 서브 카테고리를 나타낼 수 있다. 자식이 없는 노드는 리프 노드로 간주한다. 따라서, 리프 카테고리(204)는 카테고리 트리 내에 자식이 없는 카테고리, 또는 다른 말로 다른 하위 카테고리가 없는 카테고리 또는 서브 카테고리에 대응한다. 따라서, 리프 카테고리(204)는 콘텐츠 게시 플랫폼이 콘텐츠를 분류하고 구성하기 위해 사용하는 카테고리 트리에서 가장 낮은 레벨의 단위(granularity)을 나타낸다.
속성 데이터(206)는 콘텐츠 게시 플랫폼의 콘텐츠 분류 체계의 가장 세밀한 분류에 대응하는 리프 카테고리(204) 각각에 대한 속성의 세트를 포함한다. 속성의 세트는 가격 차별화 속성, 제품 차별화 속성 및 필수 속성과 같은 다양한 속성 분류로부터의 속성을 포함할 수 있다. 속성 데이터(206)는 각 속성에 대한 차별화 스코어를 더 포함한다. 차별화 스코어는, 매칭 카테고리 내에서 초기 사용자 입력에 해당하는 제품을 다른 제품에 대해 차별화하는 속성의 정도를 제공하는 제품 차별화 스코어; 매칭 카테고리 내에서 초기 사용자 입력에 해당하는 제품의 금전적 가치를 다른 제품의 금전적 가치에 대해 차별화하는 속성의 정도를 제공하는 가격 차별화 스코어를 포함한다. 차별화 스코어는 온라인 마켓에서 판매를 위해 제공되는 제품의 과거의 공급 및 수요 분석(예를 들어, 거래 기록의 분석)에 기초하여 결정될 수 있다. 예를 들어, 온라인 마켓이 관리하는 거래 기록을 분석하여 제품의 어느 속성으로 인해 제품이 더 높은 가격으로 판매되는지를 결정할 수 있다.
속성 메타데이터(208)는 속성 데이터(206)에 포함된 속성에 관한 부가적인 정보를 제공하는 하나 이상의 태그를 포함한다. 태그는, 예를 들어, 특정 속성이 다른 속성과 부모-자식 관계를 갖는지를 나타내는 부모/자식 태그; 속성이 단일 값 또는 복수 값을 갖는지를 나타내는 복수/단일 선택 태그; 및 속성의 세트가 개방 세트인지 또는 폐쇄 세트인지를 나타내는 개방/폐쇄 태그 중 하나 이상을 포함할 수 있다.
카탈로그 데이터(210)는 임의의 리프 카테고리(204)가 카탈로그 제품 데이터에 의해 뒷받침되는지를 나타내는 카탈로그 가능(catalog-enabled) 플래그를 포함한다. 즉, 카탈로그 가능 플래그는 콘텐츠 게시 플랫폼이 특정 리프 카테고리에 대해 특정 제품을 설명하는 정보를 포함하는 카탈로그 제품 데이터를 유지하는지 여부를 나타낸다. 카탈로그 가능 플래그를 포함하는 리프 카테고리(204)의 경우, 카탈로그 데이터(210)는 해당 리프 카테고리(204)에 포함된 제품에 대한 카탈로그 제품 데이터를 더 포함할 수 있다.
아이템 조건 데이터(212)는 각 리프 카테고리(204) 내의 제품에 대한 조건 세트를 포함한다. 의류 카테고리를 예로 들면, 아이템 조건은 "신제품(New)", "태그 있는 신제품(New with tags)" 및 "중고품(Used)"을 포함할 수 있다. 레코드 판 카테고리를 예로 들면, 아이템 조건은 "신제품(New)", "중고품-신제품과 유사(Used-Like New)", "중고품-매우 좋음(Used-Very Good)", "중고품-좋음(Used-Good)", "중고품-적당함(Used-Acceptable)"을 포함할 수 있다.
인덱스 생성기(200)는 하나 이상의 네트워크 서비스(예를 들어, 서버상에서 실행되는 애플리케이션)의 하나 이상의 API를 통해 적절한 요청(예를 들어, HTTP GET 요청)을 통신함으로써 하나 이상의 네트워크 서비스로부터 소스 데이터(202)를 획득할 수 있다. 인덱스 생성기(200)는 소스 데이터(202)의 조합을 사용하여 압축 인덱스 문서(116)를 생성한다. 압축 인덱스 문서(116)는 리프 카테고리(204)의 각각에 대해 대응하는 속성의 세트(예를 들어, 필수, 가격 차별화 및 제품 차별화), 각 속성에 대한 속성 값 세트(예를 들어, 속성 "색상"에 대해서, 속성 값은 "빨간색", "흰색", "파란색" 및 "검은색"을 포함), 속성 메타데이터(예를 들어, 속성의 세트가 개방 또는 폐쇄 세트인지, 또는 속성의 세트가 부모/자식 관계를 포함하는지를 나타내는), 아이템 조건 세트, 속성의 세트의 각 속성에 대한 차별화 스코어, 카탈로그 가능 플래그 및 일부 경우에는 제품 카탈로그 데이터를 포함할 수 있다. 압축 인덱스 문서(116)에서 속성 값은 컴팩트 인덱스 문서(116)의 보다 효율적인 검색(예를 들어, 보다 빠른 재검색(recall))을 가능하게 하기 위해 키(key)로 변환될 수 있다. 예를 들어, 특수 문자를 포함하는 속성 값은 해당 특수 문자를 생략한 키로 변환될 수 있다 (예를 들어, 속성 값 "로키스-무선(rockies-wireless)"은 키 "로키스(Rockies) 무선(Wireless)"으로 변환될 수 있음). 인덱스 생성기(200)는 자바스크립트 오브젝트 노테이션(JavaScript Object Notation, JSON) 포맷과 같은 언어 독립적인 포맷으로 압축 인덱스 문서(116)를 생성할 수 있다.
일부 실시예에서 일관되게, 인덱스 생성기(200)는 오프라인 일괄(batch) 작업(예를 들어, 인간의 개입 없이 실행되는 일련의 작업)의 일부로서 압축 인덱스 문서(116)를 생성할 수 있다. 오프라인 일괄 작업의 일부로서 압축 인덱스 문서(116)를 생성하는 것은 잦은 인간의 개입 및 감독으로 컴퓨팅 자원을 아이들링시키는 것을 피하면서, 컴퓨팅 자원이 덜 사용될 때 작업 프로세스의 시간을 이동(shifting)시키는 이점을 제공한다. 또한 한 번에 하나의 트랜잭션을 처리하기 위해 한 프로그램을 여러 번 실행하는 대신 오프라인 일괄 프로세스가 많은 트랜잭션에 대해 한 번만 실행되므로 시스템 오버헤드가 줄어든다. 압축 인덱스 문서(116)를 생성하기 위한 인덱스 생성기(200)의 프로세스에 관한 추가 세부 사항은 도 4 내지 8을 참조하여 후술한다.
도 3을 참조하면, 고수준의 클라이언트-서버 기반 아키텍처(300)의 예시적 실시예가 도시된다. 도 3은 클라이언트-서버 기반 아키텍처(300)를 도시하지만, 본 발명적 내용은 물론 이러한 아키텍처에 제한되지 않으며, 예를 들어, 이벤트 구동, 분산 또는 피어 투 피어 아키텍처 시스템에서도 동일하게 적용될 수 있다. 또한, 불필요한 세부 사항으로 인해 발명적 내용이 모호하게 되는 것을 회피하기 위해, 발명적 내용의 이해를 전달하는 것과 밀접하지 않은 다양한 기능적 컴포넌트는 도 3에서 생략되었다. 또한, 도 3에 도시된 다양한 기능적 컴포넌트는 단 하나의 관점에서 설명되었지만, 다양한 기능적 컴포넌트의 어느 하나의 복수의 경우가 이용될 수 있다.
콘텐츠 게시 플랫폼(302)은 네트워크(304)(예를 들어, 인터넷 또는 광역 네트워크(WAN))를 통해 하나 이상의 클라이언트 디바이스(310)에 서버 측 기능을 제공한다. 도 3은, 예를 들어, 클라이언트 디바이스(310) 상에서 실행되는 웹 클라이언트(312)(예를 들어, 브라우저), 클라이언트 애플리케이션(314) 및 프로그램 클라이언트(316)를 도시한다. 네트워크(304)의 하나 이상의 부분은 애드혹 네트워크, 인트라넷, 가상 사설 네트워크(VPN), 근거리 네트워크(LAN), 무선 LAN(WLAN), 광역 네트워크(WAN), 무선 WAN(WWAN), MAN(Metropolitan Area Network), 인터넷의 일부, PSTN(Public Switched Telephone Network)의 일부, 셀룰러 전화 네트워크, 무선 네트워크, WiFi 네트워크, WiMax 네트워크, 다른 유형의 네트워크 또는 이러한 네트워크의 둘 이상의 조합을 포함할 수 있다.
클라이언트 디바이스(310)는 이동 전화, 데스크톱 컴퓨터, 랩톱, 휴대용 디지털 보조 장치(PDA), 스마트 폰, 태블릿, 울트라 북, 넷북, 랩톱, 멀티 프로세서 시스템, 마이크로프로세서 기반 또는 프로그램 가능 소비자 전자 기기, 게임 콘솔, 셋톱 박스 또는 사용자가 콘텐츠 게시 플랫폼(302)에 액세스하기 위해 이용할 수 있는 임의의 다른 통신 디바이스를 포함할 수 있으나, 이에 제한되지 않는다. 일부 실시예에서, 클라이언트 디바이스(310)는 (예를 들어, 사용자 인터페이스의 형태로) 정보를 표시하는 디스플레이 모듈(도시되지 않음)을 포함할 수 있다. 다른 실시예에서, 클라이언트 장치(310)는 하나 이상의 터치 스크린, 가속도계, 자이로스코프, 카메라, 마이크로폰, GPS(Global Positioning System) 디바이스 등을 포함할 수 있다. 일 실시예에서, 콘텐츠 게시 플랫폼(302)은 네트워크 기반 마켓에서 이용 가능한 제품의 아이템 목록을 포함하는 게시물(예를 들어, 웹 문서)을 게시하는 네트워크 기반 마켓이다.
하나 이상의 사용자(306)는 클라이언트 디바이스(310)와 상호 작용하는 인간, 머신 또는 다른 수단일 수 있다. 예시적 실시예에서, 사용자(306)는 네트워크 아키텍처(300)의 일부는 아니지만, 네트워크 아키텍처(300)와 클라이언트 디바이스(310) 또는 다른 수단을 통해 상호 작용할 수 있다. 예를 들어, 사용자(306)는 클라이언트 디바이스(310)에 입력(예를 들어, 터치 스크린 입력 또는 영숫자 입력)을 제공할 수 있고, 이 입력은 네트워크(304)를 통해 콘텐츠 게시 플랫폼(302)에 통신된다. 이 경우, 콘텐츠 게시 플랫폼(302)은, 사용자(306)로부터의 입력을 수신하는 것에 응답하여, 네트워크(304)를 통해 클라이언트 디바이스(310)에 정보를 통신하여 사용자(306)에게 표시한다. 이러한 방식으로, 사용자(306)는 클라이언트 디바이스(310)를 이용하여 콘텐츠 게시 플랫폼(302)과 상호 작용할 수 있다.
각각의 클라이언트 디바이스(310)는 웹 브라우저, 메시징 애플리케이션, 전자 메일(이메일) 애플리케이션, 전자 상거래(e-commerce) 사이트 애플리케이션(마켓 애플리케이션이라고도 함) 등과 같은 하나 이상의 클라이언트 애플리케이션(314)("앱(app)"이라고도 함)을 포함할 수 있으나, 이에 제한되지 않는다. 일부 실시예에서, 전자 상거래 사이트 애플리케이션이 클라이언트 디바이스(310)에 포함되면, 해당 애플리케이션은 데이터 또는 국부적으로는 처리할 수 없는 기능(예를 들어, 판매 가능한 아이템의 데이터베이스에 대한 액세스, 사용자 인증 및 지불 방법 확인을 위한 액세스)을 위해 필요에 따라 콘텐츠 게시 플랫폼(302)과 통신하도록 구성된 애플리케이션에 사용자 인터페이스 및 적어도 일부의 기능을 국부적으로 제공하도록 구성된다. 역으로, 전자 상거래 사이트 애플리케이션이 클라이언트 디바이스(310)에 포함되어 있지 않으면, 클라이언트 디바이스(310)는 콘텐츠 게시 플랫폼(302) 상에 호스팅된 전자 상거래 사이트(또는 그 변형된 사이트)에 액세스하기 위해 자신의 웹 브라우저를 이용할 수 있다.
애플리케이션 프로그램 인터페이스(API) 서버(320) 및 웹 서버(322)는 애플리케이션 서버(340)에 결합하여 각각 프로그램 인터페이스 및 웹 인터페이스를 제공한다. 애플리케이션 서버(340)는 게시 시스템(342) 및 SMAC 시스템(100)을 호스팅할 수 있고, 각각은 하나 이상의 모듈 또는 애플리케이션을 포함할 수 있으며, 각각은 하드웨어, 소프트웨어, 펌웨어 또는 이들의 임의의 조합으로서 구현될 수 있다. 애플리케이션 서버(340)는 차례로 데이터베이스(326)에 액세스할 수 있도록 하는 데이터베이스 서버(324)에 결합하도록 도시되어 있다. 일실시예에서, 데이터베이스(326)는 게시 시스템(342)에 의해 포스팅(예를 들어, 게시 또는 리스팅)될 정보(예를 들어, 데이터 레코드)를 저장하는 스토리지 디바이스이다. 또한 예시적 실시예에서 데이터베이스(326)는 디지털 아이템 정보를 저장할 수 있다.
또한, 제3자 서버(330) 상에서 실행되는 제3자 애플리케이션(332)은 API 서버(320)에 의해 제공되는 프로그램 인터페이스를 통해 콘텐츠 게시 플랫폼(302)에 프로그램 액세스하는 것으로 도시되어 있다. 예를 들어, 제3자 애플리케이션(332)은 콘텐츠 게시 플랫폼(302)으로부터 검색된 정보를 이용하여, 제3자에 의해 호스팅되는 웹 사이트 상의 하나 이상의 피쳐(feature) 또는 기능을 지원한다.
게시 시스템(342)은 콘텐츠 게시 플랫폼(302)에 액세스하는 사용자(306)에게 복수의 게시 기능 및 서비스를 제공한다. 예를 들어, 게시 시스템(342)은 (예를 들어, 클라이언트 디바이스(310)와의 통신을 통해) 인터페이스를 제공함으로써, 사용자가 클라이언트 디바이스(310)를 사용하여 웹 문서를 생성 및 게시할 수 있도록 한다. 게시 시스템(342)은 사용자(306)가 게시된 웹 문서의 다양한 부분을 수정할 수 있도록 하는 인터페이스를 더 제공할 수 있다.
도 3에는 게시 시스템(342) 및 SMAC 시스템(100) 모두가 콘텐츠 게시 플랫폼(302)의 일부를 구성(예를 들어, 게시 시스템(342) 및 SMAC 시스템(100)은 콘텐츠 게시 플랫폼(302)의 서브 시스템임)하는 것으로 도시되어 있지만, 다른 실시예에서, 각각의 시스템(342 및 100)은 콘텐츠 게시 플랫폼(302)와 구별되고 분리된 서비스의 일부를 구성할 수 있다. 일부 실시예에서, SMAC 시스템(100)은 게시 시스템(342)의 일부를 구성할 수 있다.
도 4는 예시적 실시예에 따른, 압축 인덱스 문서(116)를 생성하는 방법(400)을 수행하는 인덱스 생성 시스템(106)의 예시적 동작을 도시한 흐름도이다. 방법(400)은 하나 이상의 프로세서에 의한 실행을 위한 컴퓨터 판독가능 명령어로 구현되어, 방법(400)의 동작이 인덱스 생성 시스템(106)에 의해 부분적으로 또는 전체적으로 수행될 수 있다. 따라서, 방법(400)은 도 4를 참조하여 예시적 방법으로 후술된다. 다만, 방법(400)의 동작들 중 적어도 일부는 다양한 다른 하드웨어 구성으로 구현될 수 있고, 방법(400)은 인덱스 생성 시스템(106)으로 제한되지 않음을 이해하여야 한다.
동작(405)에서, 인덱스 생성기(200)는 콘텐츠 게시 플랫폼(302)의 카테고리 트리에 포함된 리프 카테고리(204)를 식별한다. 카테고리 트리는 카테고리(예를 들어, 콘텐츠 또는 제품 카테고리)를 표현하는 링크된 노드를 갖는 계층 트리 구조를 포함하는 데이터 구조이다. 콘텐츠 게시 플랫폼(302)은 카테고리 트리를 사용하여 콘텐츠를 분류하고 구성한다. 상술 한 것과 같이, 리프 카테고리(204)는 카테고리 트리에서 가장 낮은 레벨의 단위(예를 들어, 자식을 갖지 않는 노드)의 카테고리이다.
동작(410)에서, 인덱스 생성기(200)는 리프 카테고리(204)를 설명하는 소스 데이터(202)를 검색한다. 전술한 것과 같이 같이, 소스 데이터(202)는 리프 카테고리(204)뿐만 아니라 속성 데이터(206), 속성 메타데이터(208), 카탈로그 데이터(210) 및 아이템 조건 데이터(212)를 포함한다. 소스 데이터(202)는 콘텐츠 게시 플랫폼(302)의 내부 또는 제3자에 의해 제공되는 네트워크 서비스와 같은 하나 이상의 소스로부터 검색될 수 있다. 예를 들어, 인덱스 생성기(200)는 하나 이상의 API를 통해 하나 이상의 네트워크 서비스에 하나 이상의 적절한 형태의 요청(예를 들어, HTTP GET 요청)을 전달하고, 이로부터 소스 데이터(202)를 검색할 수 있다.
동작(415)에서, 인덱스 생성기(200)는 소스 데이터(202)의 조합을 사용하여 복합 문서(예를 들어, 전자 문서)를 생성한다. 이 문서는 압축 인덱스 문서(116)에 대한 기초를 제공한다. 각각의 리프 카테고리(204)에 대하여, 압축 인덱스 문서는 속성의 세트, (예를 들어, 속성의 세트가 개방 또는 폐쇄인지 또는 속성이 부모/자식 관계를 포함하는지 여부를 표시하는) 속성 메타 데이터, 아이템 조건 세트, 속성의 세트에서 각 속성에 대한 차별화 스코어, 카탈로그 가능 플래그 및 일부 경우에 따라서는 제품 카탈로그 데이터를 포함한다. 인덱스 생성기(200)는 JSON과 같은 언어 독립적인 포맷으로 복합 문서를 생성할 수 있다.
동작(420)에서, 인덱스 생성기(200)는 소스 데이터(202)에 포함된 차별화 스코어(예를 들어, 제품 차별화 스코어 및 가격 차별화 스코어)에 기초하여 리프 카테고리(204) 각각에 대한 속성의 세트를 정렬한다. 예를 들어, 인덱스 생성기(200)는 필수 속성으로서 식별된 속성, 속성의 제품 차별화 스코어 및 속성의 가격 차별화 스코어를 고려한 순서로 속성의 세트를 정렬할 수 있다.
일부 실시예에서, 정렬의 일부로서, 인덱스 생성기(200)는 정렬된 순서에 기초하여 속성의 세트를 구분할 수 있다. 예를 들어, 인덱스 생성기(200)는 속성이 필수적인 것임을 나타내는 속성 메타데이터(208)에 기초하여 속성 서브세트를 필수 속성으로 분류할 수 있다. 다른 예로서, 인덱스 생성기(200)는 제품을 차별화하는 속성으로서 제품 차별화 스코어에 따라 가장 높은 순위부터 순서대로 속성 서브세트를 분류할 수 있다. 또 다른 예로서, 인덱스 생성기(200)는 가격을 차별화하는 속성으로서 가격 차별화 스코어에 따라 가장 높은 순위부터 순서대로 속성 서브세트를 분류할 수 있다. 인덱스 생성기(200)는 1) 필수 속성; 2) 가격 차별화 속성; 및 3) 제품 차별화 속성과 같은 순서로 속성을 정렬할 수 있다.
동작(425)에서, 인덱스 생성기(200)는 복합 문서를 인덱싱하여 압축 인덱스 문서(116)를 생성한다. 인덱스 생성기(200)는 임의의 인덱싱 알고리즘을 사용하여 검색 클러스터(104)에 의한 검색을 가능하게 하는 동작(425)을 수행할 수 있다.
동작(430)에서, 인덱스 생성기(200)는 압축 인덱스 문서(116)를 검색 클러스터(104)에 주입한다. 인덱스 생성기(200)는 검색 클러스터(104)에 의해 액세스 가능한 메모리 저장(예를 들어, 네트워크 데이터베이스)에 압축 인덱스 문서(116)가 저장되도록 하는 하나 이상의 API 호출을 실행함으로써, 압축 인덱스 문서(116)를 주입할 수 있다.
도 5에 도시된 것과 같이, 방법(400)은 추가 동작(505, 510, 515, 520, 525, 530, 535 및 540)을 포함할 수 있다. 일부 예시적 실시예에서, 동작(505 및 510)은, 인덱스 생성기(200)가 리프 카테고리(204)를 식별하는 방법(400)의 동작(405)의 부분(예를 들어, 사전 태스크, 서브 루틴 또는 일부)으로서 수행될 수 있다. 동작(505)에서, 인덱스 생성기(200)는 제 1 API를 통해 제 1 요청(예를 들어, HTTP GET 요청)을 카테고리 트리를 유지 및 분석하는 제 1 네트워크 서비스에 통신한다. 이러한 요청의 수신에 대한 응답하여, 제 1 네트워크 서비스는 리프 카테고리(204)에 대응하는 리프 노드(예를 들어, 자식 노드가 없는 노드)를 식별하기 위해 카테고리 트리를 검토한다. 동작(510)에서, 인덱스 생성기(200)는 제 1 요청에 대한 응답으로서 제 1 네트워크 서비스로부터 리프 카테고리를 수신한다.
일부 실시예에서, 동작(515, 520, 525, 530, 535 및 540)은, 인덱스 생성기(200)가 소스 데이터(202)를 획득하는 방법(400)의 동작(410)의 부분(예를 들어, 사전 태스크, 서브 루틴 또는 일부)으로서 수행될 수 있다. 동작(515)에서, 인덱스 생성기(200)는 제 2 API를 통해 제 2 요청(예컨대, HTTP GET 요청)을 속성 데이터(206) 및 속성 메타데이터(208)의 유지 및 분석을 담당하는 제 2 네트워크 서비스에 전송한다. 이에 응답하여, 제 2 네트워크 서비스는 (예를 들어, 데이터베이스(326)에 저장된) 하나 이상의 데이터 레코드에 액세스하여 속성 데이터(206) 및 속성 메타데이터(208)를 식별한다. 동작(520)에서, 인덱스 생성기(200)는 제 2 요청에 대한 응답으로서 속성 데이터(206) 및 속성 메타데이터(208)를 제 2 네트워크 서비스로부터 수신한다.
동작(525)에서, 인덱스 생성기(200)는 제 3 API를 통해 제 3 요청(예를 들어, HTTP GET 요청)을 카탈로그 데이터(210)의 유지 및 분석을 담당하는 제 3 네트워크 서비스에 전송한다. 이에 응답하여, 제 3 네트워크 서비스는 (예를 들어, 데이터베이스(326)에 저장된) 하나 이상의 데이터 레코드에 액세스하여 어떤 카테고리가 제품 카탈로그 데이터 가능(data-enabled)인지를 결정하고, 카테고리가 제품 카탈로그 데이터 가능인 경우, 제 3 네트워크 서비스는 대응하는 카탈로그 데이터(210)를 검색한다. 동작(530)에서, 인덱스 생성기(200)는 제 3 요청에 대한 응답으로서 제 3 네트워크 서비스로부터 카탈로그 데이터(210)를 수신한다.
동작(535)에서, 인덱스 생성기(200)는 제 4 API를 통해 제 4 요청(예컨대, HTTP GET 요청)을 아이템 조건 데이터(212)의 유지 및 분석을 담당하는 제 4 네트워크 서비스에 전송한다. 이에 응답하여, 제 4 네트워크 서비스는 (예를 들어, 데이터베이스(326)에 저장된) 하나 이상의 데이터 레코드에 액세스하여 아이템 조건 데이터(212)를 식별한다. 동작(540)에서, 인덱스 생성기(200)는 제 4 요청에 대한 응답으로서 제 4 네트워크 서비스로부터 아이템 조건 데이터(212)를 수신한다.
도 6에 도시된 것과 같이, 방법(400)은 추가 동작(605, 610, 615 및 620)을 포함할 수 있다. 일부 예시적 실시예에서, 동작(605, 610, 615 및 620)은 인덱스 생성기(200)가 복합 문서를 생성하는 방법(400)의 동작(415)의 부분(예를 들어, 사전 태스크, 서브 루틴 또는 일부)으로서 수행될 수 있다.
동작(605)에서, 인덱스 생성기(200)는 속성 데이터(206) 및 속성 메타데이터(208)를 포함하는 속성 데이터 파일을 생성한다. 속성 데이터 파일은 리프 카테고리(204) 각각에 대한 속성의 세트, 각 속성에 대한 차별화 스코어 및 하나 이상의 메타데이터 태그를 포함한다. 인덱스 생성기(200)는 JSON과 같은 언어 독립적인 형태로 속성 데이터 파일을 생성한다.
동작(610)에서, 인덱스 생성기(200)는 카탈로그 데이터(210)를 포함하는 카탈로그 데이터 파일을 생성한다. 카탈로그 데이터 파일은 임의의 리프 카테고리(204)가 제품 카탈로그 데이터를 포함하는지의 표시(예를 들어, 플래그)를 포함하고, 이를 표시하는 경우 카탈로그 데이터 파일은 제품 카탈로그 데이터를 포함한다. 인덱스 생성기(200)는 JSON과 같은 언어 독립적인 형태로 카탈로그 데이터 파일을 생성한다.
동작(615)에서, 인덱스 생성기(200)는 조건 데이터(212)를 포함하는 조건 데이터 파일을 생성한다. 조건 데이터(212)는 각 리프 카테고리에 대한 조건 세트를 포함한다. 인덱스 생성기(200)는 JSON과 같은 언어 독립적인 형태로 조건 데이터 파일을 생성한다.
동작(620)에서, 인덱스 생성기(200)는 속성 데이터 파일, 카탈로그 데이터 파일 및 조건 데이터 파일을 병합하여 복합 문서를 생성한다. 상술한 것과 같이, 인덱스 생성기(200)는 JSON과 같은 언어 독립적인 행태로 복합 문서를 생성한다.
도 7에 도시된 것과 같이, 방법(400)은 추가 동작(705, 710, 715 및 720)을 포함할 수 있다. 일부 예시적 실시예에서, 동작(705, 710, 715 및 720)은 인덱스 생성기(200)가 복합 문서 내의 속성을 정렬하는 방법(400)의 동작(420)의 부분(예를 들어, 사전 태스크, 서브 루틴, 또는 일부)으로서 수행될 수 있다. 도 7의 맥락에서, 동작(705, 710, 715 및 720)은 (리프 카테고리들(204)의) 각각의 리프 카테고리에 대해 반복될 수 있다.
동작(705)에서, 인덱스 생성기(200)는 속성 메타데이터(208)의 일부(예를 들어, 속성의 세트를 설명하는 속성 메타데이터(208)의 일부)에 기초하여 속성의 세트로부터 리프 카테고리에 대한 필수 속성을 식별한다. 인덱스 생성기(200)는 속성의 세트가 필수임을 나타내는 메타데이터 태그를 포함하는 속성의 세트의 서브세트를 식별함으로써 필수 속성을 식별한다.
동작(710)에서, 인덱스 생성기(200)는 리프 카테고리 내의 각 속성에 대한 가격 차별화 스코어에 기초하여 속성의 세트로부터 리프 카테고리에 대한 최고 가격 차별화 속성을 식별한다. 예를 들어, 인덱스 생성기(200)는 가격 차별화 스코어에 따라 가장 높은 순위를 갖는 속성의 세트의 서브세트를 식별함으로써 가격 차별화 속성을 식별할 수 있다.
동작(715)에서, 인덱스 생성기(200)는 카테고리 내의 각 속성의 제품 차별화 스코어에 기초하여 속성의 세트로부터 리프 카테고리에 대한 최고 제품 차별화 속성을 식별한다. 예를 들어, 인덱스 생성기(200)는 제품 차별화 스코어에 따라 가장 높은 순위를 갖는 속성의 세트의 서브세트를 식별함으로써 제품 차별화 속성을 식별할 수 있다.
동작(720)에서, 인덱스 생성기(200)는 필수 속성, 최고 가격 차별화 속성 및 최고 제품 차별화 속성을 이용하여 속성의 세트를 순위화한다. 예를 들어, 인덱스 생성기(200)는 1) 필수 속성; 2) 최고 가격 차별화 속성; 3) 최고 제품 차별화 속성과 같은 순서의 속성 분류에 따라 속성의 세트를 순위화할 수 있다. 인덱스 생성기(200)는 속성이 하나 이상의 속성 분류에 나타나는 경우(예를 들어, 속성이 최고 가격 차별화 속성이면서 최고 제품 차별화 속성인 경우)를 보상하기 위해, (예를 들어, 세트에서 하나 이상의 중복 속성을 제거함으로써) 순서화된 속성의 세트의 중복을 제거할 수 있다. 이러한 방식으로, 인덱스 생성기(200)는 하나의 속성이 순서화된 속성의 세트에서 복수 회 나타나지 않도록 보장한다.
방법(400)은 오프라인 일괄(batch) 작업(예를 들어, 인간의 개입 없이 수행된 일련의 작업)에서 전체적으로 또는 부분적으로 수행될 수 있다. 또한, 방법(400)은 현재의 정보로 압축 인덱스 문서(116)를 최신으로 것으로 유지하기 위해 주기적으로 (예를 들어, 매주) 반복될 수 있다.
도 8 내지 도 12는 예시적 실시예에 따른, SMAC 서비스를 제공하는 방법(800)에 있어서 SMAC 시스템(100)의 예시적 동작을 도시하는 흐름도이다. 방법(800)은 하나 이상의 프로세서에 의해 실행되는 컴퓨터 판독가능 명령어로 구현되어, 방법(800)의 동작은 SMAC 시스템(100)에 의해 부분적으로 또는 전체적으로 수행될 수 있다. 따라서, 방법(800)은 도면을 참조하여 예시적 방법으로 후술된다. 그러나 방법(800)의 동작 중 적어도 일부는 다양한 다른 하드웨어 구성으로 구현될 수 있고, 방법(800)은 SMAC 시스템(100)에 한정되는 것을 의도하지 않음이 이해되어야 한다.
동작(805)에서, 인터페이스 모듈(118)은, 사용자가 클라이언트 디바이스(310) 상에 제공(예를 들어, 디스플레이)되는 사용자 인터페이스에 입력한 초기 사용자 입력(예를 들어, 텍스트 입력 또는 상호 작용형 요소의 선택)을 수신한다. 예를 들어, 데이터 입력 필드는 검색 박스와 같은 텍스트 입력 필드일 수 있고, 사용자(306)는 텍스트 입력 필드에 초기 텍스트 입력을 입력할 수 있다. 초기 사용자 입력은 (예를 들어, 제품의) 타이틀의 일부 또는 설명의 일부에 대응하는 하나 이상의 전체 또는 부분 키워드를 포함할 수 있다. 다른 예로서, 데이터 입력 필드는 카테고리, 서브 카테고리, 속성 또는 속성 값에 대응하는 하나 이상의 상호 작용형 요소(예를 들어, 선택 가능한 버튼 또는 다른 선택 가능한 UI 요소)를 포함할 수 있으며, 초기 사용자 입력은 하나의 이러한 상호 작용형 요소(예를 들어, 제품의 카테고리 또는 서브 카테고리에 해당하는 버튼)를 포함할 수 있다.
일부 실시예에서 선택적인 동작(810)에서, 오케스트레이션 엔진(102)은 초기 텍스트 입력에 포함된 임계 개수만큼의 문자를 검출한다. 임계 개수는 SMAC 시스템(100)의 관리자에 의해 정해지는 설정 가능한 값일 수 있다.
동작(815)에서, 오케스트레이션 엔진(102)은 초기 사용자 입력에 대응하는 매칭 카테고리를 식별하고, 일부 실시예에서는 초기 사용자 입력의 일부로서 포함된 텍스트 입력이 임계 개수만큼의 문자를 포함하는지를 판정하는 것에 응답하여 행해진다. 사용자 입력이 제품에 대응하는 키워드를 포함하는 실시예에서, 오케스트레이션 엔진(102)은 제품에 대응하는 제품 카테고리를 식별한다. 예를 들어, 사용자는 "청바지(jeans)"를 입력할 수 있고, 오케스트레이션 엔진(102)은 "의류"를 매칭 카테고리로서 식별할 수 있다.
초기 사용자 입력에 대응하는 카테고리를 식별함에 있어서, 오케스트레이션 엔진(102)은 카테고리 인식 모듈(108)에 초기 사용자 입력을 포함하는 요청(예를 들어, HTTP GET 요청)을 통신할 수 있다. 이에 응답하여, 카테고리 인식 모듈(108)은 초기 사용자 입력에 대응하는 복수의 가능성 있는 카테고리를 식별한다. 카테고리 인식 모듈(108)은 초기 사용자 입력에 매칭하는 카테고리의 가능성에 기초(예를 들어, 각 카테고리에서 사용자 입력 내의 문자 수 및/또는 제품의 과거 공급 및 수요에 기초)하여, 식별된 가능성 있는 카테고리 각각에 신뢰 스코어를 부여한다. 카테고리 인식 모듈(108)은 신뢰 스코어를 이용하여 가장 높은 신뢰 스코어를 갖는 카테고리인 매칭 카테고리를 선택한다. 카테고리 인식 모듈(108)은 요청에 응답하여 매칭 카테고리를 오케스트레이션 엔진(102)에 다시 제공한다. 일부 실시예에서, 이 응답에는 또한 남아있는 복수의 가능성 있는 카테고리 중 적어도 일부가 포함된다.
동작(820)에서, 오케스트레이션 엔진(102)은 매칭 카테고리에 대응하는 속성의 세트를 식별한다. 속성의 세트는 속성 분류의 다양한 조합이 포함된다. 예를 들어, 속성의 세트에는 필수 속성, 가격 차별화 속성, 제품 차별화 속성의 속성 분류 중 어느 하나가 포함될 수 있다.
매칭 카테고리에 대응하는 속성의 세트를 식별함에 있어서, 오케스트레이션 엔진(102)은 검색 요청을 검색 클러스터(104)에 통신한다. 검색 요청은, 예를 들어 매칭 카테고리를 포함할 수 있고, 검색 요청을 수신한 것에 응답하여, 검색 클러스터(104)는 매칭 카테고리에 대응하는 속성의 세트를 식별하기 위해 매칭 카테고리를 이용하여 (예를 들어, 일련의 질의를 수행함으로써) 압축 인덱스 문서(116)를 검색한다. 예를 들어, 검색 클러스터(104)는 카테고리로 모든 속성을 식별하기 위한 질의, 카테고리 및 속성 이름으로 모든 속성을 식별하는 질의, 및 카테고리, 속성 이름 및 토큰으로 모든 속성을 식별하는 질의를 수행할 수 있다. 검색 클러스터(104)는 요청에 응답하여 오케스트레이션 엔진(102)에 속성의 세트를 다시 제공한다. 상술한 것과 같이, 속성의 세트는 속성 메타데이터 및 차별화 스코어(예를 들어, 제품 차별화 스코어 또는 가격 차별화 스코어)에 기초하여 분류될 수 있다. 예를 들어, 속성의 세트는 1) 필수 속성; 2) 가격 차별화 속성; 및 3) 제품 차별화 속성의 순서로 순위화될 수 있다.
동작(825)에서, 오케스트레이션 엔진(102)은 데이터 입력 필드에 입력되는 초기 사용자 입력의 완성을 고려하여 속성 제안으로서 사용자 인터페이스 내의 표시을 위한 속성의 세트의 서브세트를 선택한다. 속성의 서브세트는 매칭 카테고리에서 가장 중요한 속성으로 간주되는 속성을 포함한다. 따라서, 속성의 서브세트는 제품 차별화 속성, 가격 차별화 속성 및 필수 속성을 포함할 수 있다. 속성의 세트의 서브세트는 하나 이상의 차별화 스코어에 기초하여 속성의 세트에 부여된 순위에 기초하여 선택될 수 있다. 예를 들어, 오케스트레이션 엔진(102)은 가장 높은 순위를 갖는 속성의 서브세트를 선택할 수 있다. 속성의 서브세트에 포함되는 속성의 수는 SMAC 시스템(100)의 관리자에 의해 정해질 수 있는 설정 가능한 값이다. 또한, 속성의 수는 이용 가능한 디스플레이 공간의 정도(예를 들어, 스크린의 크기)에 기초하여 동적으로 정해질 수 있다. 따라서, SMAC 시스템(100)에 의해 제공되는 SMAC 서비스는 모바일 경험과 웹 경험간에 달라질 수 있다.
동작(830)에서, 오케스트레이션 엔진(102)은 인터페이스 모듈(118)과 함께 동작하여(예를 들어, 하나 이상의 API 호출을 행함으로써) 클라이언트 장치(310) 상에 제공되는 사용자 인터페이스 내에서 데이터 입력 필드와 함께 제시된 제안 박스를 (예를 들어, 데이터 입력 필드 아래에) 디스플레이하게 한다. 제안 박스는 속성 제안의 세트와 관련된 추가 입력(예를 들어, 추가 텍스트 입력)을 이용하여 초기 사용자 입력(예를 들어, 텍스트 입력)을 완성하는 프롬프트와 함께 속성 제안의 세트의 표시를 포함한다. 보다 구체적으로, 프롬프트는 하나 이상의 속성 제안에 대응하는 속성 값을 사용자가 입력하도록 요청할 수 있다. 이러한 방식으로, 사용자(306)가 제품을 설명하려고 하면, 제품의 설명을 향상시키는 중요한 추가 정보(예를 들어, 속성 제안에 대한 속성 값)를 입력하도록 사용자(306)를 유도함으로써, 사용자가 설명하고 있는 제품을 식별하는 (온라인 마켓의 예시적 형태의) 콘텐츠 게시 플랫폼(302)의 능력을 향상시킨다.
일부 실시예에서, 제안 박스는 하나 이상의 속성 제안의 세트에 대한 속성 값에 대응하는 선택 가능한 요소(예를 들어, 버튼)를 더 포함할 수 있다. 사용자(306)는 (예를 들어, 마우스 클릭 또는 터치 스크린 동작을 통해) 선택 가능한 요소들 중 임의의 하나를 선택하여 대응하는 속성 값을 추가 사용자 입력의 일부로서 통합할 수 있다.
도 9에 도시된 것과 같이, 방법(800)은 추가 동작(835, 840, 845, 850 및 855)을 포함할 수 있다. 일부 실시예에서, 동작(835, 840, 845, 850 및 855)은 인터페이스 모듈(118)이 데이터 입력 필드와 함께 제안 박스를 디스플레이하도록 하는 방법(800)의 동작(830) 이후에 수행될 수 있다.
동작(835)에서, 인터페이스 모듈(118)은 클라이언트 디바이스(310) 상에 제공(예를 들어, 디스플레이)되는 사용자 인터페이스에 사용자가 입력한 추가 사용자 입력(예를 들어, 텍스트 입력 또는 속성 값에 대응하는 버튼의 선택)을 수신한다. 예를 들어, 사용자(306)는 초기 텍스트 입력을 입력한 후 데이터 입력 필드(예를 들어, 검색 박스)에 추가 텍스트 입력을 입력할 수 있다. 추가 텍스트 입력은 (예를 들어, 제품의) 타이틀 또는 설명에 대응하는 하나 이상의 추가 키워드를 포함할 수 있다.
일부 실시예에서 선택적인 동작(840)에서, 오케스트레이션 엔진(102)은 추가 사용자 입력의 추가 텍스트 입력에 포함된 속성 제안의 속성 값을 검출한다. 예를 들어, 제안 박스에 표시된 속성 제안은 "크기"를 포함하고 오케스트레이션 엔진(102)은 추가 텍스트 입력에 포함된 "소형"을 검출한다.
속성 제안의 속성 값을 검출하는 것에 응답하여, 오케스트레이션 엔진(102)은 추가 텍스트 입력을 포함하는 속성 추출 모듈(114)에 요청(예를 들어, HTTP GET 요청)을 전송한다. 이에 응답하여, 속성 추출 모듈(114)은 추가 텍스트 입력을 매칭 카테고리에 대응하는 속성의 세트 내의 각 속성에 대한 속성 값과 비교한다. 비교에 기초하여, 속성 추출 모듈(114)은 속성 값이 속하는 속성을 식별한다. 속성 추출 모듈(114)은 요청에 응답하여 식별된 속성을 오케스트레이션 엔진(102)에 반환한다. 오케스트레이션 엔진(102)은 속성 추출 모듈(114)로부터 반환된 식별된 속성을 속성 제안의 세트와 비교하여 추가 텍스트 입력이 속성 제안 중 하나의 속성 값을 포함하는지 여부를 결정한다.
동작(845)에서, 오케스트레이션 엔진(102)은 인터페이스 모듈(118)과 함께 동작하여 추가 사용자 입력을 기초로 제안 박스를 업데이트한다. 제안 박스의 업데이트는 제시된 속성의 세트로부터 속성 제안의 디스플레이를 제거하거나 속성 제안 중 하나의 디스플레이를 다른 속성 제안으로 대체하는 것을 포함할 수 있다. 속성 제안이 다른 속성 제안으로 대체되는 경우에, 오케스트레이션 엔진(102)은 대안 속성 제안으로서 제안 박스에 표시할 다음으로 높은 순위를 갖는 속성을 선택할 수 있다.
제안 박스의 업데이트 후(업데이트 직후 또는 추가 텍스트 입력을 입력한 후), 사용자는 데이터 입력 필드에 입력된 입력(예를 들어, 적어도 초기 사용자 입력 또는 추가 사용자 입력의 조합)을 완성된 사용자 입력으로서 제출할 수 있다. 사용자는 사용자 인터페이스 내의 데이터 입력 필드와 함께 제시된 선택 가능한 요소(예를 들어, 버튼)를 이용하여 완성된 입력을 제출할 수 있다.
동작(850)에서, 데이터 검색 모듈(110)은 수신된 사용자 입력과 관련된 데이터 레코드를 식별한다. 데이터 레코드는 콘텐츠 게시 플랫폼(302)에 의해 호스팅되는 콘텐츠에 관련된 설명 정보를 포함한다. 콘텐츠 게시 플랫폼(302)이 온라인 마켓의 형태이고 사용자 입력이 제품을 설명하는 실시예에서, 데이터 검색 모듈(110)은 이미지, 설명 및 경우에 따라서는 사용 가능한 재고와 같은 제품 관련 설명 정보를 포함하는 제품 데이터 레코드를 검색한다. 데이터 검색 모듈(110)은 완성된 사용자 입력에 포함된 하나 이상의 키워드를 사용하여 데이터베이스(326)(예를 들어, 제품 데이터베이스)에 질의할 수 있다.
동작(855)에서, 데이터 검색 모듈(110)은 (예를 들어, 클라이언트 디바이스(310) 상에서의) 디스플레이를 위한 데이터 레코드의 일부를 제공한다. 일례에서, 데이터 레코드는 제품을 설명하는 웹 문서(예를 들어, 웹 페이지)를 포함할 수 있고, 데이터 검색 모듈(110)은 클라이언트 디바이스(310) 상에서의 디스플레이를 위한 웹 문서를 인터페이스 모듈(118)에 제공할 수 있다. 다른 예에서, 데이터 레코드는 제품을 설명하는 정보를 포함할 수 있고, 데이터 검색 모듈(110)은 제품 설명(예를 들어, 제품 목록)을 생성하는 전자 양식(electronic form)을 미리 채우기 위해 게시 시스템(342)에 해당 정보를 제공할 수 있다.
도 10에 도시된 것과 같이, 방법(800)은 추가 동작(865 및 870)을 포함할 수 있다. 일부 실시예에서, 방법(800)에 포함된 동작(865 및 870)은, 인터페이스 모듈(118)이 데이터 입력 필드와 함께 제안 박스를 디스플레이하도록 하는 방법(800)의 동작(830) 이후에 수행될 수 있다.
동작(865)에서, 오케스트레이션 엔진(102)은 데이터 입력 필드에 입력된 사용자 입력에 포함된 텍스트 입력으로부터 속성 값을 추출한다. 텍스트 입력은 초기 텍스트 입력을 포함하며, 또한 추가 텍스트 입력을 포함할 수 있다. 속성 값을 추출함에 있어서, 오케스트레이션 엔진(102)은 텍스트 입력을 포함하는 속성 추출 모듈(114)에 요청(예를 들어, HTTP GET 요청)을 통신한다. 이에 응답하여, 속성 추출 모듈(114)은 텍스트 입력을 파싱하여 키워드를 식별하고, 식별된 키워드를 매칭 카테고리에 대응하는 속성의 세트 내의 각 속성에 대한 속성 값들과 비교한다. 비교에 기초하여, 속성 추출 모듈(114)은 속성 값이 속하는 속성을 식별한다. 속성 추출 모듈(114)은 요청에 응답하여 식별된 속성을 오케스트레이션 엔진(102)에 반환한다.
동작(870)에서, SMAC 시스템(100)에 의해 속성 값 및 식별된 속성이 제공될 수 있는 게시 시스템(342)은, 속성 값 및 식별된 속성을 이용하여 전자 양식을 미리 채운다. 예를 들어, 전자 양식은 제품 설명을 생성하기 위해 (예를 들어, 제품 목록 작성에 이용하기 위해) 제공될 수 있다. 전자 양식은 각각 속성에 대응하는 복수의 데이터 입력 필드를 포함할 수 있다. 전자 양식을 미리 채우는 데 있어서, 게시 시스템(342)은 식별된 속성에 대응하는 필드를 채우기(예를 들어, 기입하기) 위해 속성 값을 사용할 수 있다.
도 11에 도시된 것과 같이, 방법(800)은 추가 동작(875, 880 및 885)을 포함할 수 있다. 일부 실시예에서, 동작(875, 880 및 885)은 인터페이스 모듈(118)이 데이터 입력 필드와 함께 제안 박스를 디스플레이하도록 하는 방법(800)의 동작(830) 이후에 또는 그 일부(예를 들어, 사전 태스크, 서브 루틴 또는 일부)로서 수행될 수 있다.
동작(875)에서, 인터페이스 모듈(118)은 사용자 인터페이스 내에 제시된 제안 박스와 함께 대안 카테고리를 디스플레이하도록 한다. 대안 카테고리는 카테고리 인식 모듈(108)에 의해 제공된 초기 텍스트 입력에 대응하는 나머지 복수의 가능성 있는 카테고리들로부터 선택될 수 있다. 예를 들어, 대안 카테고리는 매칭 카테고리와 비교할 때 다음으로 높은 신뢰 스코어를 갖는 카테고리일 수 있다.
동작(880)에서, 인터페이스 모듈(118)은 대안 카테고리의 사용자 선택을 나타내는 입력을 수신한다. 사용자(306)는 하나 이상의 입력 장치를 사용하여 대안 카테고리의 텍스트와의 적절한 상호 작용을 통해 대안 카테고리를 선택할 수 있다.
동작(885)에서, 오케스트레이션 엔진(102)은 인터페이스 모듈(118)과 함께 동작하여, 대안 카테고리에 따라 제안 박스의 디스플레이를 업데이트한다. 제안 박스의 디스플레이를 업데이트하는 것은 매칭 카테고리에 대응하는 속성 제안의 세트를 대안 카테고리에 대응하는 속성 제안의 대안 세트로 대체하는 것을 포함할 수 있다. 오케스트레이션 엔진(102)은 매칭 카테고리와 관련하여 전술한 방법에 따라 대안 카테고리에 대응하는 속성 제안의 대안 세트를 선택한다.
도 12에 도시된 것과 같이, 방법(800)은 하나 이상의 동작(806, 807 및 808)을 포함할 수 있다. 일부 실시예에서, 동작(806, 807, 및 808)은, 인터페이스 모듈(118)이 사용자 인터페이스 내에 제시된 데이터 입력 필드에 초기 텍스트 입력을 수신하는 동작(805) 이후에 발생할 수 있다. 또한, 동작(806, 807 및 808)은 사용자(306)가 데이터 입력 필드에 추가 텍스트 입력의 입력을 시도함에 따라 수행될 수 있다.
일부 예에서, 초기 사용자 입력(예를 들어, 텍스트 입력)은 부분적인 키워드 또는 구(예를 들어, 불완전한 단어)를 포함한다. 동작(806)에서, 자동 완성 모듈(112)은 추가 텍스트를 예측하여 부분적인 키워드 또는 구를 완성한다. 자동 완성 모듈(112)은 초기 텍스트를 파싱하여 부분적인 키워드 또는 부분적인 구를 식별하고, 부분적인 키워드 또는 부분적인 구를 키워드 및 구의 코퍼스(corpus)와 비교함으로써 추가 텍스트를 예측할 수 있다. 코퍼스는 입력 언어의 키워드 및 구의 사전을 포함할 수 있고, 사용자에 의해 입력된 과거 키워드 및 구의 리스트를 더 포함할 수 있다. 비교에 기초하여, 자동 완성 모듈(112)은 부분적인 키워드 또는 부분적인 구를 코퍼스 내의 키워드 또는 구와 매칭시키고, 식별된 키워드 또는 구를 추가 텍스트 입력으로서 제안한다. 자동 완성 모듈(112)은 하나 이상의 공지된 자동 완성 알고리즘을 사용하여 부분적인 키워드 또는 구를 예측할 수 있다.
동작(807)에서, 인터페이스 모듈(118)은 클라이언트 디바이스(310) 상에 제공되는 사용자 인터페이스 내에 디스플레이된 데이터 입력 필드와 함께 추가 텍스트를 디스플레이하도록 한다. 추가 텍스트의 사용자 선택을 수신하면, 자동 완성 모듈(112)은 동작(808)에서 추가 텍스트를 사용하여 초기 텍스트 입력이 완성되도록 한다.
도 13a 내지 13f는, 예시적 실시예에 따른, SMAC 서비스를 제공함에 있어서 SMAC 시스템(100)에 의해 제공되는 사용자 인터페이스의 양태를 도시한 인터페이스의 도면이다. 도 13a 내지 13f를 참조하여 설명되는 SMAC 시스템(100)과 SMAC 서비스는 자동화된 대행 서비스 및 인터페이스 흐름의 일부를 형성할 수 있다. 인터페이스의 예시적인 보기는 각각 1300A 내지 1300F로 표시된다. 일부 처리 동작 및 사용자 상호 작용은 도면에 도시된 것과 같다.
도 13a의 인터페이스(1300A)에서, "무엇을 판매하고 싶습니까?"라는 사용자 프롬프트가 데이터 입력 필드(1302)에 제시된다. 도 13b의 인터페이스(1300B)에서, 사용자(306)는 예를 들어 "알레시...(Alessi...)"를 타이핑하여 텍스트 입력을 데이터 입력 필드(1302)에 입력하기 시작한다. 이 타이핑은 도 13c의 인터페이스(1300C)에서 계속되고, 여기서 사용자는 "시계(watch)"를 입력한다.
도 13d의 인터페이스(1300D)에서, 텍스트 입력이 임계 개수의 문자를 포함하는 것으로 판단되면, SMAC 시스템(100)은 한 세트의 속성 제안을 디스플레이하는데, 임계 개수의 문자는 SMAC 시스템(100)에 리스트되는 아이템이 무엇이며 이에 적용되어야 하는 카테고리에 대한 어느 정도의 신뢰도(예를 들어, 80% 신뢰)를 제공한다. 이 경우, "시계(watch)"라는 단어를 입력하면 텍스트 입력이 문자의 임계 개수까지 증가하므로 필요한 정도의 신뢰도를 제공한다. 속성 제안의 세트는 제안된 카테고리(1306)(예를 들어, 매칭 카테고리)의 디스플레이와 함께 제안 박스(1304) 내에 디스플레이된다. 제안 박스(1304)는 제안된 카테고리(1306)가 적절하지 않은 경우 이를 변경하는 제안(invitation)을 더 포함한다. 클릭 가능한 카테고리 변경 액션 요소는 1308으로 도시된다.
사용자(306)가 도 13e의 인터페이스(1300E)에서 타이핑을 계속함에 따라, 속성 제안의 세트가 업데이트되고 제안된 카테고리(1306)가 적절하게 (예를 들어, 손목 시계가 시계줄로 변경됨) 개선된다. 제안 박스(1304)에 포함된 속성 제안의 세트는 추가 텍스트(예를 들어, "시계줄")가 속성 제안의 세트에 대응하는 속성 값을 포함하는지 결정하는 것에 응답하여 업데이트될 수 있다. 보다 구체적으로, 하나 이상의 속성 제안의 세트는 대안 속성 제안으로 대체될 수 있다.
도 13f의 인터페이스(1300F)에 도시된 것과 같이, 사용자(306)가 제안된 카테고리(1306)를 변경하기 위해 카테고리 변경 액션 요소(1308)(인터페이스(1300D)와 관련하여 전술한 내용을 참조)를 클릭하면, 사용자(306)가 대안 카테고리를 선택할 수 있는 "추천된 카테고리" 패널(1312)이 디스플레이된다. 이러한 선택은 카테고리의 정해진 그룹의 일부를 구성할 수 있으며 무작위 용어로 구성되지 않는다. 선택 기회를 확대하는 "모든 카테고리(All Categories)"에 대한 추가 카테고리 패널(1314)이 제공될 수 있다.
도 14a 내지 14c는 예시적 실시예에 따른, SMAC 서비스를 제공함에 있어서 SMAC 시스템(100)이 제공하는 사용자 인터페이스의 양태를 도시한 인터페이스 도면이다. 도 14a 내지 14c를 참조하여 설명된 SMAC 시스템(100)과 SMAC 서비스는 자동화 대행 서비스의 일부를 구성할 수 있다. 인터페이스의 예시적 도면은 각각 1400A 내지 1400C로 표시된다. 일부 프로세스 동작 및 사용자 상호 작용은 도면에 도시된 것과 같다.
도 14a의 인터페이스(1400A)에서, "당신은 무엇을 판매하고 싶습니까?(What do you want to sell?)"이라는 사용자 질의가 데이터 입력 필드(1402) 상에 제시된다. 도시된 것과 같이, 사용자(306)는 데이터 입력 필드(1402)에 "남성 디젤 청바지(mens diesel jeans)"를 타이핑한다. 텍스트 입력(예를 들어, "남성 디젤 청바지")을 사용자(306)으로부터 수신하는 것에 응답하여, 제안 박스(1404)가 인터페이스(1400A)에 제시된다. 제안 박스(1404)는 텍스트 입력에 대응하는 제품 카테고리에 대한 속성 제안의 세트를 포함한다. 특히, 제안 박스(1404)는 SMAC 시스템(100)에 의해 결정된 제품 카테고리에 대한 가장 중요한 속성을 포함한다. 이 예에서 카테고리는 "청바지"로 식별되고 가장 중요한 속성은 "브랜드(Brand)", "크기 형태(Size Type)" 및 "다리 길이(Inseam)"이다.
도 14b의 인터페이스(1400B)에서, 사용자(306)는 데이터 입력 필드(1406)에 "여성용 디자이너 신발(women's designer shoes)"을 타이핑한다. 도시된 것과 같이, 인터페이스(1400B)는 사용자 입력에 대응하는 카테고리에 대한 가장 중요한 속성을 포함하는 제안 박스(1408)를 포함하며, 이 예에서는 제안 박스(1408)는 "브랜드(Brand)", "스타일(Style)" 및 "미국 신발 사이즈(여성용)(US Shoe Size (Women's))"를 포함한다. 제안 박스(1408)는 또한 제안 카테고리가 적절하지 않는 경우 이를 변경하는 제안을 더 포함한다. 클릭 가능한 카테고리 변경 요소는 1410으로 도시된다.
도 14c의 인터페이스(1400C)에서, 사용자(306)가 인터페이스(1400B)의 1410에 도시된 카테고리 변경 요소를 클릭하였고, 이에 응답하여 카테고리 선택 메뉴(1412)가 제공된다. 사용자(306)는 인터페이스(1400C)에서 카테고리 선택 메뉴(1412)에서 제안된 것과 다른 카테고리를 선택할 수 있으며, 이에 응답하여 새로 선택된 카테고리에 있어서 가장 중요한 속성이 인터페이스(1400B)의 제안 박스(1408)에 디스플레이될 수 있다.
서비스 아키텍처
도 15는 일부 실시예에 따른, SMAC 시스템(100)이 구현될 수 있는 서비스 아키텍처(1500)를 도시한 도면이다. 서비스 아키텍처(1500)는 서비스 아키텍처가 다양한 데이터 센터 및/또는 클라우드 서비스 상에 어떻게 구현될 수 있는지를 설명하기 위해 서비스 아키텍처의 다양한 도면을 제공한다. 아키텍처(1500)는 여기에 설명된 실시예의 구현을 위한 적절한 환경을 의미한다.
서비스 아키텍처(1502)는 클라우드 아키텍처가 통상적으로 사용자, 개발자 등에게 보여지는 방식을 도시한다. 이 아키텍처는 일반적으로 도 15의 다른 부분에 도시되어 실제의 기본 아키텍처 구현의 간략화된 표현이다. 예를 들어, 서비스 아키텍처(1502)는 서비스 아키텍처(1502)와 관련된 상이한 기능 및/또는 서비스를 나타내는 복수의 계층을 포함한다.
경험 서비스 계층(1504)은 플랫폼(이동 전화, 데스크탑 등)에서 실행되는 애플리케이션, 웹 기반 프레젠테이션(모바일 웹, 데스크탑 웹 브라우저 등) 등과 같이 다른 클라이언트 플랫폼에 걸쳐 작성된, 최종 소비자의 관점으로부터의 서비스 및 특징의 논리적 그룹핑을 나타낸다. 여기에는 사용자 인터페이스를 제공하고 및/또는 클라이언트 플랫폼에 정보를 제공하여 적절한 사용자 인터페이스가 제공되고, 클라이언트 입력을 캡처하는 것 등을 포함한다. 마켓의 맥락에서, 이 계층에 상주하는 서비스의 예로는 홈 페이지(예를 들어, 홈 뷰), 아이템 리스트 보기, 검색/검색 결과보기, 장바구니, 구매 사용자 인터페이스 및 관련 서비스, 판매 사용자 인터페이스 및 관련 서비스, 판매 경험(거래 포스팅, 피드백 등) 등이 있다. 다른 시스템의 맥락에서, 경험 서비스 계층(1504)은 시스템에 의해 구현되는 최종 사용자 서비스 및 경험을 통합할 것이다.
API 계층(1506)은 비즈니스 프로세스 및 코어 계층과의 상호 작용을 허용하는 API를 포함한다. 이로 인해 제3자는 서비스 아키텍처(1502)와 다른 개발을 할 수 있고, 서비스 아키텍처(1502) 상에 추가 서비스를 개발할 수 있다.
비즈니스 프로세스 서비스 계층(1508)은 제공되는 서비스에 대한 비즈니스 로직이 상주하는 곳이다. 마켓의 맥락에서는, 이 계층은 사용자 등록, 사용자 로그인, 리스트 생성 및 게시, 장바구니에 추가, 청약, 체크 아웃, 송장 전송, 레이블 인쇄, 아이템 발송, 아이템 반환 등과 같은 서비스가 구현되는 곳이다. 또한, 비즈니스 프로세스 서비스 계층(1508)은 다양한 비즈니스 로직과 데이터 엔티티 사이에서 조율하며, 따라서 공유 서비스의 결합을 나타낸다. 이 계층의 비즈니스 프로세스는 일부 클라우드 서비스 구조와의 호환성을 높이기 위해 멀티 테넌시(multi-tenancy)를 지원할 수도 있다.
데이터 엔티티 서비스 계층(1510)은 직접 데이터 액세스를 주위로부터 격리시키고, 상위 계층이 의존하는 서비스를 포함한다. 따라서, 마켓의 맥락에서 이 계층은 주문 관리, 금융 기관 관리, 사용자 계정 서비스 등과 같은 기본 서비스를 포함할 수 있다. 이 계층의 서비스는 일반적으로 멀티 테넌시를 지원한다.
인프라스트럭처 서비스 계층(1512)은 구현되는 서비스 아키텍처의 유형에 특정되지 않은 서비스를 포함한다. 따라서 마켓의 맥락에서 이 계층의 서비스는 마켓에 한정적이거나 고유하지 않은 서비스이다. 따라서 암호화 기능, 키 관리, CAPTCHA, 인증 및 권한 부여, 설정 관리, 로깅(logging), 추적, 문서 및 관리 등과 같은 기능이 이 계층에 상주한다.
본 개시의 실시예는 일반적으로 이들 계층 중 하나 이상에서 구현될 것이다. 예를 들어, 인터페이스 모듈(118)은 경험 서비스 계층(1502)에서 구현될 수 있고, 오케스트레이션 엔진(102), 카테고리 인식 모듈(108), 데이터 검색 모듈(110), 자동 완성 모듈(112) 및 속성 추출 모듈(114)는 비즈니스 프로세스 계층(1508)에서 구현될 수 있으며, 검색 클러스터(104) 및 인덱스 생성 시스템(106)은 데이터 엔티티 서비스 계층(1510)에서 구현될 수 있다.
데이터 센터(1514)는 다양한 자원 풀(1516)과 이를 구성하는 스케일 유닛을 나타낸다. 이 데이터 센터라는 표현은 클라우드 컴퓨팅 모델에서 서비스 아키텍처(1502)를 구현함에 따른 스케일링 및 탄력성을 설명한다. 자원 풀(1516)은 서버 (또는 계산) 스케일 유닛(1520), 네트워크 스케일 유닛(1518) 및 스토리지 스케일 유닛(1522)으로 구성된다. 스케일 유닛은 데이터 센터 내에서 구현할 수 있는 가장 작은 유닛인 서버, 네트워크 및/또는 스토리지 유닛이다. 스케일 유닛을 사용함으로써, 필요의 증감에 따라 더 많은 용량을 구현하거나 제거할 수 있다.
네트워크 스케일 유닛(1518)은 구현될 수 있는 하나 이상의 네트워크(네트워크 인터페이스 유닛 등)를 포함한다. 네트워크는, 예를 들어 가상 LAN을 포함할 수 있다. 계산 스케일 유닛(1520)은 전형적으로 프로세서와 같은 복수의 프로세싱 유닛을 포함하는 유닛(서버 등)을 포함한다. 스토리지 스케일 유닛(1522)은 디스크, SAN(storage attached network), NAS(network attached storage) 디바이스 등과 같은 하나 이상의 스토리지 디바이스를 포함한다. 이들은 아래의 설명에서 집합적으로 SAN으로 설명된다. 각 SAN은 하나 이상의 볼륨, 디스크 등을 포함할 수 있다.
도 15의 나머지 부분은, 서비스 아키텍처(1500)의 또 다른 예를 도시한다. 이 부분은 보다 하드웨어에 초점을 맞춘 것으로, 도 15의 다른 부분에서 보다 논리적인 아키텍처를 강조하여 자원을 도시한다. 클라우드 컴퓨팅 아키텍처는 전형적으로 복수의 서버 또는 다른 시스템(1524, 1526)을 포함한다. 이들 서버는 복수의 실제 및/또는 가상 서버를 포함한다. 따라서, 서버(1524)는 서버(1)과 함께 가상 서버(1A, 1B, 1C) 등을 포함한다.
서버는 네트워크 A(1528) 및/또는 네트워크 B(1530)와 같은 하나 이상의 네트워크에 연결되고/되거나 서로 연결된다. 또한 서버는 SAN 1(1536), SAN 2(1538) 등과 같은 복수의 스토리지 디바이스에 연결된다. SAN은 일반적으로 SAN 액세스 A(1532) 및/또는 SAN 액세스 B(1534)와 같은 네트워크를 통해 서버에 연결된다.
계산 스케일 유닛(1520)은 전형적으로 프로세서 및 이와 관련된 다른 하드웨어와 같은 서버(1524 및/또는 1526)의 일부 양태이다. 네트워크 스케일 유닛(1518)은 전형적으로 도시된 네트워크 A(1528) 및 네트워크 B(1532)를 포함하거나 적어도 이용한다. 스토리지 스케일 유닛은 일반적으로 SAN 1(1536) 및/또는 SAN 2(1538)의 일부 양태를 포함한다. 따라서, 논리 서비스 아키텍처(1502)는 물리 아키텍처에 매핑될 수 있다.
여기에 설명된 실시예의 서비스 및/또는 다른 구현예는 서버 및/ 가상 서버 상에서 실행될 것이고, 개시된 실시예를 구현하기 위해 다양한 하드웨어 자원을 이용할 것이다.
머신 아키텍처
도 16은 머신 판독가능 매체(예를 들어, 머신 판독가능 저장 매체)로부터 명령어를 판독하고 여기에서 설명된 임의의 하나 이상의 방법을 수행할 수 있는, 일부 예시적 실시예에 따른 머신(1600)의 컴포넌트를 도시하는 블록도이다. 구체적으로, 도 16은 머신(1600)으로 하여금 여기에 설명된 방법들 중 임의의 하나 이상의 방법을 수행하게 하는 명령어(1616)(예를 들어, 소프트웨어, 프로그램, 애플리케이션, 애플릿, 앱 또는 다른 실행 가능한 코드)가 실행될 수 있는 컴퓨터 시스템의 예시적 형태의 머신(1600)의 개략도를 도시한다. 예를 들어, 명령어(1616)는 머신(1600)으로 하여금 방법(400 또는 800)의 어느 하나를 수행하도록 하는 실행 가능한 코드를 포함한다. 이러한 명령어는 일반적이고 프로그램되지 않은 머신을 게시 시스템(342)과 SMAC 시스템(100)의 앞서 설명되고 도시된 기능을 앞서 설명한 방식으로 수행하도록 프로그램된 특수하게 구성된 머신으로 변환한다. 머신(1600)은 독립형 디바이스로서 동작할 수 있거나 다른 머신에 결합(예를 들어, 네트워크화)될 수 있다. 네트워크화된 구성에서, 머신(1600)은 서버-클라이언트 네트워크 환경에서 서버 머신 또는 클라이언트 머신의 역할로 동작할 수 있거나, 피어 투 피어(또는 분산형) 네트워크 환경에서 피어 머신으로서 동작 할 수 있다. 비 한정적인 예로서, 머신(1600)은 서버 컴퓨터, 클라이언트 컴퓨터, 퍼스널 컴퓨터(PC), 태블릿 컴퓨터, 랩탑 컴퓨터, 넷북, 셋톱 박스(STB), PDA, 엔터테인먼트 미디어 시스템, 셀룰러 전화, 스마트 폰, 모바일 디바이스, 웨어러블 디바이스(예를 들어, 스마트 시계), 스마트 홈 장치(예를 들어, 스마트 가전), 기타 스마트 디바이스, 웹 가전, 네트워크 라우터, 네트워크 스위치, 네트워크 브릿지, 또는 머신(1600)에 의해 취해질 동작을 지정하는 명령어(1616)를 순차적으로 또는 다른 방식으로 실행할 수 있는 임의의 머신일 수 있다. 또한, 머신(1600)이 도시되어 있지만, "머신"이라는 용어는 여기에서 설명된 방법 중 임의의 하나 이상의 방법을 수행하기 위해 개별적으로 또는 공동으로 명령어(1616)를 실행하는 머신들(1600)의 집합을 포함하는 것으로 간주되어야 한다.
머신(1600)은, 예를 들어 버스(1502)를 통해 서로 통신하도록 구성될 수 있는 프로세서(1610), 메모리/스토리지(1630), 입력 및 출력(I/O) 컴포넌트(1650)를 포함할 수 있다. 예시적 실시예에서, 프로세서(1610)(예를 들어, CPU(Central Processing Unit), RISC(Reduced Instruction Set Computing) 프로세서, CISC(Complex Instruction Set Computing) 프로세서, GPU(Graphics Processing Unit), DSP(Digital Signal Processor), ASIC(Application Specific Integrated Circuit), RFIC(Radio-Frequency Integrated Circuit), 다른 프로세서, 또는 이들의 임의의 적절한 조합)은, 예를 들어, 명령어(1616)를 실행할 수 있는 프로세서(1612) 및 프로세서(1614)를 포함할 수 있다. "프로세서"라는 용어는 명령어를 동시에 실행할 수 있는 2개 이상의 독립적 프로세서("코어"라고도 함)를 포함할 수 있는 멀티 코어 프로세서를 포함하도록 의도된다. 도 16은 다수의 프로세서를 도시하지만, 머신(1600)은 단일 코어를 갖는 단일 프로세서, 다중 코어(예를 들어, 멀티 코어 프로세서)를 갖는 단일 프로세서, 단일 코어를 갖는 다중 프로세서, 다중 코어를 갖는 다중 프로세서, 또는 이들의 임의의 조합을 포함할 수 있다.
메모리/스토리지(1630)는 메인 메모리 또는 기타 메모리 스토리지와 같은 메모리(1632) 및 스토리지 유닛(1636)을 포함할 수 있는데, 이들은 모두 예를 들어 버스(1602)를 통해 프로세서(1610)에 액세스 가능하다. 스토리지 유닛(1636) 및 메모리(1632)는 여기에서 설명된 방법들 또는 기능들 중 임의의 하나 이상을 구현하는 명령어(1616)를 저장한다. 명령어(1616)는 또한 머신(1600)에 의해 실행되는 동안, 메모리(1632) 내에, 스토리지 유닛(1636) 내에, 프로세서(1610) 중 적어도 하나(예를 들어, 프로세서의 캐시 메모리) 내에, 또는 이들의 임의의 적절한 조합 내에, 전체적으로 또는 부분적으로 상주할 수 있다. 따라서, 메모리(1632), 스토리지 유닛(1636) 및 프로세서(1610)의 메모리는 머신 판독가능 매체의 예이다.
여기서 사용된 것과 같이, "머신 판독가능 매체"는 명령어 및 데이터를 일시적으로 또는 영구적으로 저장할 수 있는 디바이스를 의미하며, 랜덤 액세스 메모리(RAM), 판독 전용 메모리(ROM), 버퍼 메모리, 플래시 메모리, 광학 매체, 자기 매체, 캐시 메모리, 다른 유형의 스토리지(예를 들어, 삭제 가능한 프로그램 가능 판독 전용 메모리(EEPROM)) 및/또는 이들의 임의의 적절한 조합을 포함할 수 있지만, 이에 한정되지 않는다. "머신 판독가능 매체"라는 용어는 또한, 명령어(1616)를 저장할 수 있는 단일 매체 또는 다중 매체(예를 들어, 중앙 집중식 또는 분산형 데이터베이스, 또는 연관된 캐시 및 서버)를 포함하는 것으로 간주되어야 한다. "머신 판독가능 매체"라는 용어는 또한, 명령어가 머신(1600)의 하나 이상의 프로세서(예를 들어, 프로세서(1610))에 의해 실행될 때 머신(1600)으로 하여금 여기에서 설명된 방법 중 임의의 하나 이상을 수행하게 하도록, 머신(예를 들어, 머신(1600))에 의한 실행을 위한 명령어를 저장할 수 있는 임의의 매체 또는 다중 매체의 조합을 포함하는 것으로 간주되어야 한다. 따라서 "머신 판독가능 매체"는 단일 스토리지 장치, 매체 또는 디바이스뿐만 아니라 복수의 스토리지 장치 또는 디바이스를 포함하는 "클라우드 기반" 스토리지 시스템 또는 스토리지 네트워크를 지칭한다.
I/O 컴포넌트(1650)는 입력을 수신하고, 출력을 제공하고, 출력을 생성하고, 정보를 전송하고, 정보를 교환하고, 측정을 캡처하는 등을 수행하는 다양한 컴포넌트를 포함할 수 있다. 특정 머신에 포함되는 특정 I/O 컴포넌트(1650)는 머신의 유형에 의존할 것이다. 예를 들어, 휴대 전화와 같은 휴대용 머신은 터치 입력 디바이스 또는 그러한 다른 입력 메커니즘을 포함할 수 있지만, 헤드리스 서버 시스템은 그러한 터치 입력 디바이스를 포함하지 않을 것이다. I/O 컴포넌트(1650)는도 16에 도시되지 않은 많은 다른 컴포넌트를 포함할 수 있음이 이해되어야 한다. I/O 컴포넌트(1650)는 단지 다음의 설명을 단순화하기 위해 기능성에 따라 그룹화되며, 그룹화는 결코 한정적인 것이 아니다. 다양한 예시적 실시예에서, I/O 컴포넌트(1650)는 출력 컴포넌트(1652)와 입력 컴포넌트(1654)를 포함할 수 있다. 출력 컴포넌트(1652)는 비주얼 컴포넌트(예를 들어, 플라즈마 디스플레이 패널(PDP), 발광 다이오드(LED) 디스플레이, 액정 디스플레이(LCD), 프로젝터 또는 음극선관(CRT)), 음향 컴포넌트(예를 들어, 스피커), 햅틱 컴포넌트(예를 들어, 진동 모터, 저항 메커니즘), 기타 신호 발생기 등을 포함할 수 있다. 입력 컴포넌트(1654)는 영숫자 입력 컴포넌트(예를 들어, 키보드, 영숫자 입력을 수신하도록 구성된 터치 스크린, 포토-옵티컬 키보드 또는 다른 영숫자 입력 컴포넌트), 포인트 기반 입력 컴포넌트(예를 들어, 마우스, 터치 패드, 트랙볼, 조이스틱, 움직임 센서, 또는 기타 포인팅 기구), 촉각 입력 컴포넌트(예를 들어, 물리적 버튼, 터치 또는 터치 제스처의 위치 및/또는 힘을 제공하는 터치 스크린 또는 기타 촉각 입력 컴포넌트), 오디오 입력 컴포넌트(예를 들어, 마이크로폰) 등을 포함할 수 있다.
또 다른 예시적 실시예에서, I/O 컴포넌트(1650)는 다수의 다른 컴포넌트 중에서 생체 측정 컴포넌트(1656), 움직임 컴포넌트(1658), 환경 컴포넌트(1660) 또는 포지션 컴포넌트(1662)를 포함할 수 있다. 예를 들어, 생체 측정 컴포넌트(1656)는, 표현(예를 들어, 손 표현, 표정, 음성 표현, 몸짓 또는 눈 추적)을 검출하고, 생체 신호(예를 들어, 혈압, 심박수, 체온, 땀 또는 뇌파)를 측정하고, 사람을 식별(예를 들어, 음성 식별, 망막 식별, 안면 식별, 지문 식별 또는 뇌파 기반 식별)하는 등을 수행하는 컴포넌트를 포함할 수 있다. 움직임 컴포넌트(1658)는 가속도 센서 컴포넌트(예를 들어, 가속도계), 중력 센서 컴포넌트, 회전 센서 컴포넌트(예를 들어, 자이로스코프) 등을 포함할 수 있다. 환경 컴포넌트(1660)는 예를 들어, 조명 센서 컴포넌트(예를 들어, 광도계), 온도 센서 컴포넌트(예를 들어, 주변 온도를 검출하는 하나 이상의 온도계), 음향 센서 컴포넌트(예를 들어, 배경 잡음을 검출하는 하나 이상의 마이크로폰) 또는 주변 물리적 환경에 대응하는 표시, 측정 또는 신호를 제공할 수 있는 기타 컴포넌트를 포함할 수 있다. 포지션 컴포넌트(1662)는 위치 센서 컴포넌트(예를 들어, GPS 수신기 컴포넌트), 고도 센서 컴포넌트(예를 들어, 고도가 도출될 수 있는 기압을 검출하는 고도계 또는 기압계), 방위 센서 컴포넌트(예를 들어, 자력계) 등을 포함할 수 있다.
통신은 다양한 기술을 사용하여 구현될 수 있다. I/O 컴포넌트(1650)는 머신(1600)을 커플링(1682) 및 커플링(1672)을 통해 각각 네트워크(1680) 또는 디바이스(1670)에 결합시키도록 동작 가능한 통신 컴포넌트(1664)를 포함할 수 있다. 예를 들어, 통신 컴포넌트(1664)는 네트워크(1680)와 인터페이스하는 네트워크 인터페이스 컴포넌트 또는 기타 적절한 디바이스를 포함할 수 있다. 추가 예에서, 통신 컴포넌트(1664)는 유선 통신 컴포넌트, 무선 통신 컴포넌트, 셀룰러 통신 컴포넌트, 근거리 통신(Near Field Communication: NFC) 컴포넌트, 블루투스(Bluetooth)® 컴포넌트(예를 들어, Bluetooth® Low Energy), Wi-Fi® 컴포넌트 및 다른 형태를 통해 통신을 제공하는 기타 통신 컴포넌트를 포함할 수 있다. 디바이스(1670)는 다른 머신 또는 임의의 다양한 주변 디바이스(예를 들어, USB(Universal Serial Bus)를 통해 결합된 주변 디바이스) 중 임의의 것일 수 있다.
또한, 통신 컴포넌트(1664)는 식별자를 검출할 수 있거나 식별자를 검출하도록 동작할 수 있는 컴포넌트를 포함할 수 있다. 예를 들어, 통신 컴포넌트(1664)는 무선 주파수 식별(RFID) 태그 판독기 컴포넌트, NFC 스마트 태그 검출 컴포넌트, 광학 판독기 컴포넌트(예를 들어, 범용 제품 코드(UPC) 바코드와 같은 1차원 바코드, QR(Quick Response) 코드, 아즈텍(Aztec) 코드, 데이터 매트릭스, 데이터글리프(Dataglyph), 맥시코드(MaxiCode), PDF417, 울트라(Ultra) 코드, UCC RSS-2D 바코드와 같은 다차원 바코드 및 기타 광학 코드를 검출하는 광학 센서) 또는 음향 검출 컴포넌트(예를 들어, 태깅된 오디오 신호를 식별하는 마이크로폰)를 포함할 수 있다. 또한, 인터넷 프로토콜(IP) 지오로케이션(geo-location)을 통한 위치, Wi-Fi® 신호 삼각 측량을 통한 위치, 특정 위치를 표시할 수 있는 NFC 비콘 신호의 검출을 통한 위치 등과 같은 다양한 정보가 통신 컴포넌트(1664)를 통해 도출될 수 있다.
전송 매체
다양한 예시적 실시예에서, 네트워크(1680)의 하나 이상의 부분은 애드혹 네트워크, 인트라넷, 엑스트라넷, VPN(virtual private network), LAN(local area network), WLAN(wireless LAN), WAN(wide area network), WWAN(wireless WAN), MAN(metropolitan area network), 인터넷, 인터넷의 일부, PSTN(Public Switched Telephone Network)의 일부, POTS(plain old telephone service) 네트워크, 셀룰러 전화 네트워크, 무선 네트워크, Wi-Fi® 네트워크, 다른 유형의 네트워크, 또는 2개 이상의 이러한 네트워크의 조합일 수 있다. 예를 들어, 네트워크(1680) 또는 네트워크(1680)의 일부는 무선 또는 셀룰러 네트워크를 포함할 수 있고, 커플링(1682)은 CDMA(Code Division Multiple Access) 접속, GSM(Global System for Mobile communications) 접속, 또는 다른 유형의 셀룰러 또는 무선 커플링을 포함할 수 있다. 이 예에서, 커플링(1682)은, 1xRTT(Single Carrier Radio Transmission Technology), EVDO(Evolution-Data Optimized) 기술, GPRS(General Packet Radio Service) 기술, EDGE(Enhanced Data rates for GSM Evolution) 기술, 3G를 포함하는 3GPP(third Generation Partnership Project), 4세대 무선(4G) 네트워크, UMTS(Universal Mobile Telecommunications System), HSPA(High Speed Packet Access), WiMAX(Worldwide Interoperability for Microwave Access), LTE(Long Term Evolution) 표준, 다양한 표준 설정 기관에 의해 정의된 다른 것, 다른 장거리 프로토콜, 또는 다른 데이터 전송 기술과 같은 다양한 유형의 데이터 전송 기술 중 임의의 것으로 구현될 수 있다.
명령어(1616)는, 네트워크 인터페이스 디바이스(예를 들어, 통신 컴포넌트(1664)에 포함된 네트워크 인터페이스 컴포넌트)를 통해 전송 매체를 사용하고 다수의 공지된 전송 프로토콜(예를 들어, 하이퍼텍스트 전송 프로토콜(HTTP)) 중 임의의 하나를 이용하여 네트워크(1680)를 통해 송신되거나 수신될 수 있다. 유사하게, 명령어(1616)는 디바이스(1670)에 대한 커플링(1672)(예컨대, 피어 투 피어 커플링)을 통해 전송 매체를 사용하여 송신되거나 수신될 수 있다. "전송 매체"라는 용어는 머신(1600)에 의한 실행을 위한 명령어(1616)를 저장, 인코딩 또는 운반할 수 있는 임의의 무형의 매체를 포함하는 것으로 간주되어야 하며, 디지털 또는 아날로그 통신 신호 또는 이러한 소프트웨어의 통신을 가능하게 하는 기타 무형의 매체를 포함한다. 전송 매체는 머신 판독가능 매체의 일 실시예이다.
모듈, 컴포넌트 및 로직
특정 실시예는 본 명세서에서 로직 또는 다수의 컴포넌트, 모듈 또는 메커니즘을 포함하는 것으로 설명된다. 모듈은 소프트웨어 모듈(예를 들어, 머신 판독가능 매체 상에 또는 전송 신호 내에 구현된 코드) 또는 하드웨어 모듈 중 어느 하나를 구성할 수 있다. 하드웨어 모듈은 특정 동작을 수행할 수 있는 유형의 단위이며, 특정 방식으로 구성 또는 배열될 수 있다. 예시적 실시예에서, 하나 이상의 컴퓨터 시스템(예를 들어, 독립형, 클라이언트 또는 서버 컴퓨터 시스템) 또는 컴퓨터 시스템의 하나 이상의 하드웨어 모듈(예를 들어, 프로세서 또는 프로세서 그룹)은, 소프트웨어(예를 들어, 애플리케이션 또는 애플리케이션 부분)에 의해 여기에서 설명된 특정 동작을 수행하도록 동작하는 하드웨어 모듈로서 구현될 수 있다.
다양한 실시예에서, 하드웨어 모듈은 기계적으로 또는 전자적으로 구현될 수 있다. 예를 들어, 하드웨어 모듈은 특정 동작을 수행하도록 (예를 들어, FPGA(field-programmable gate array) 또는 ASIC와 같은 특수 목적 프로세서로서) 영구적으로 구성되는 전용 회로 또는 로직을 포함할 수 있다. 하드웨어 모듈은 또한 특정 동작을 수행하는 소프트웨어에 의해 일시적으로 구성되는 프로그램 가능 로직 또는 회로(예컨대, 범용 프로세서 또는 다른 프로그램 가능 프로세서 내에 포함됨)를 포함할 수 있다. 기계적으로, 전용 및 영구적으로 구성된 회로, 또는 일시적으로 구성된 회로(예를 들어, 소프트웨어에 의해 구성됨)로 하드웨어 모듈을 구현하기 위한 결정은 비용 및 시간을 고려하여 수행될 수 있음이 이해되어야 한다.
따라서, "하드웨어 모듈"이라는 용어는 유형의 엔티티, 즉, 특정 방식으로 동작하고/하거나 여기에서 설명된 특정 동작을 수행하도록 물리적으로 구성되거나, 영구적으로 구성(예를 들어, 하드와이어드(hardwired))되거나 또는 일시적으로 구성(예컨대, 프로그래밍됨)되는 엔티티를 포함하는 것으로 이해되어야 한다. 하드웨어 모듈이 일시적으로 구성(예컨대, 프로그래밍됨)되는 실시예를 고려하면, 하드웨어 모듈의 각각은 어느 한 시점에서 구성되거나 인스턴스화될 필요가 없다. 예를 들어, 하드웨어 모듈이 소프트웨어를 사용하여 구성된 범용 프로세서를 포함하는 경우, 범용 프로세서는 상이한 시간에 각각 상이한 하드웨어 모듈로서 구성될 수 있다. 따라서 소프트웨어는, 예를 들어 특정 시간에 특정 하드웨어 모듈을 구성하고 다른 시간에 다른 하드웨어 모듈을 구성하도록 프로세서를 구성할 수 있다.
하드웨어 모듈은 다른 하드웨어 모듈에 정보를 제공하고 또한 그로부터 정보를 수신할 수 있다. 따라서, 설명된 하드웨어 모듈은 통신 가능하게 결합된 것으로 간주될 수 있다. 이와 같은 복수의 하드웨어 모듈이 동시에 존재하는 경우, 신호 전송(예를 들어, 하드웨어 모듈을 접속하는 적절한 회로 및 버스를 통함)을 통해 통신이 달성될 수 있다. 복수의 하드웨어 모듈이 상이한 시간에 구성되거나 인스턴스화되는 실시예에서, 그러한 하드웨어 모듈들 사이의 통신은, 예를 들어, 복수의 하드웨어 모듈이 액세스하는 메모리 구조에서의 정보의 저장 및 검색을 통해 달성될 수 있다. 예를 들어, 하나의 하드웨어 모듈은 동작을 수행하고 그 동작의 출력을 통신 가능하게 결합된 메모리 디바이스에 저장할 수 있다. 이후, 추가의 하드웨어 모듈은 저장된 출력을 검색하고 처리하기 위해 메모리 디바이스에 액세스할 수 있다. 하드웨어 모듈은 또한 입력 또는 출력 디바이스와 통신을 개시할 수 있고, 자원(예컨대, 정보의 모음)에 대해 동작할 수 있다.
여기에 설명된 예시적 방법의 다양한 동작은 관련 동작을 수행하도록 (예를 들어, 소프트웨어에 의해) 일시적으로 구성되거나 영구적으로 구성된 하나 이상의 프로세서에 의해 적어도 부분적으로 수행될 수 있다. 일시적으로 구성되든지 영구적으로 구성되든지 상관없이 이러한 프로세서는 하나 이상의 연산 또는 기능을 수행하도록 동작하는 프로세서 구현 모듈을 구성할 수 있다. 여기에 언급된 모듈은 일부 실시 예에서 프로세서 구현 모듈을 포함할 수 있다.
유사하게, 여기에 설명된 방법은 적어도 부분적으로 프로세서에 의해 구현될 수 있다. 예를 들어, 방법의 동작들 중 적어도 일부는 하나 이상의 프로세서 또는 프로세서 구현 모듈에 의해 수행될 수 있다. 특정 동작의 성능은 단일 시스템 내에 상주할뿐만 아니라 복수의 머신을 통해 구성된 하나 이상의 프로세서 사이에 분산될 수 있다. 일부 예시적 실시예에서, 프로세서 또는 프로세서들은 단일 위치(예를 들어, 가정 환경, 사무실 환경 또는 서버 팜)에 위치할 수 있는 반면, 다른 실시예에서는 프로세서가 복수의 위치에 걸쳐 분산될 수 있다.
하나 이상의 프로세서는 또한 "클라우드 컴퓨팅" 환경에서 또는 "서비스로서의 소프트웨어(software as a service: SaaS)"로서 관련 동작의 성능을 지원하도록 동작할 수 있다. 예를 들어, 동작들 중 적어도 일부 동작은 (프로세서를 포함하는 머신의 예로서) 컴퓨터의 그룹에 의해 수행될 수 있는데, 이들 동작은 네트워크(예를 들어, 인터넷) 및 하나 이상의 적절한 인터페이스(예를 들어, API)를 통해 액세스될 수 있다.
전자 장치 및 시스템
예시적 실시예는 디지털 전자 회로로, 또는 컴퓨터 하드웨어, 펌웨어 또는 소프트웨어로, 또는 이들의 조합으로 구현될 수 있다. 예시적 실시예는 컴퓨터 프로그램 제품, 예를 들어, 데이터 처리 장치(예를 들어, 프로그램 가능 프로세서, 컴퓨터 또는 복수의 컴퓨터)에 의한 실행을 위해 또는 그 동작을 제어하기 위해, 예를 들어, 머신 판독가능 매체와 같은 정보 캐리어에 유형적으로 구현된 컴퓨터 프로그램을 사용하여 구현될 수 있다.
컴퓨터 프로그램은 컴파일되거나 해석된 언어를 포함하는 임의의 형태의 프로그래밍 언어로 기록될 수 있으며, 독립형 프로그램 또는 모듈, 서브 루틴 또는 컴퓨팅 환경에서의 사용에 적합한 다른 유닛을 포함하는 임의의 형태로 구현될 수 있다. 컴퓨터 프로그램은 하나의 사이트에서 하나의 컴퓨터 또는 복수의 컴퓨터에서 실행되도록 구현되거나, 복수의 사이트에서 분산되고 통신 네트워크(304)에 의해 상호 접속될 수 있다.
예시적 실시예에서, 동작은, 입력 데이터에 대해 동작하고 출력을 생성함으로써 기능을 수행하기 위해 컴퓨터 프로그램을 실행하는 하나 이상의 프로그램 가능 프로세서에 의해 수행될 수 있다. 방법 동작은 또한 특수 목적 논리 회로(예를 들어, FPGA 또는 ASIC)에 의해 수행될 수 있고, 예시적 실시예의 장치는 특수 목적 논리 회로(예를 들어, FPGA 또는 ASIC)로서 구현될 수 있다.
컴퓨팅 시스템은 클라이언트 및 서버를 포함할 수 있다. 클라이언트와 서버는 일반적으로 서로 원격에 위치하며 통상 통신 네트워크를 통해 상호 작용한다. 클라이언트와 서버의 관계는, 각각의 컴퓨터에서 실행되고 서로 클라이언트-서버 관계를 갖는 컴퓨터 프로그램에 의해 발생한다. 프로그램 가능 컴퓨팅 시스템을 구현하는 실시 예에서, 하드웨어 아키텍처 및 소프트웨어 아키텍처 모두를 고려할 가치가 있음을 이해할 것이다. 구체적으로, 특정 기능을 영구적으로 구성된 하드웨어(예를 들어, ASIC)로 구현할지, 일시적으로 구성된 하드웨어(예를 들어, 소프트웨어와 프로그램 가능 프로세서의 조합)로 구현할지, 또는 영구적으로 구성된 하드웨어와 일시적으로 구성된 하드웨어의 조합으로 구현할지의 선택은 설계상의 선택일 수 있음을 이해할 것이다.
다음의 번호가 매겨진 예는 실시예이다.
1. 시스템은,
하나 이상의 프로세서와,
상기 하나 이상의 프로세서에 의해 실행될 때, 상기 시스템으로 하여금 동작을 수행하도록 하는 명령어를 저장하는 컴퓨터 판독가능 매체를 포함하고,
상기 동작은
클라이언트 디바이스 상에 제공되는 사용자 인터페이스의 데이터 입력 필드를 통해 입력된 초기 사용자 입력을 수신하는 것과,
상기 초기 사용자 입력에 대응하는 매칭 카테고리를 식별하는 것과,
상기 매칭 카테고리에 대응하는 속성의 세트를 식별하는 것과,
상기 속성의 세트로부터, 상기 속성의 세트의 각 속성의 순위에 기초하여 상기 초기 사용자 입력을 완성하는 속성 제안의 세트를 선택하는 것과 - 상기 속성 제안의 세트는 상기 매칭 카테고리에 대응하는 상기 속성의 세트의 서브세트를 포함함 -,
상기 클라이언트 디바이스 상에 제공되는 상기 사용자 인터페이스 내에 상기 데이터 입력 필드와 함께 제시된 제안 박스를 디스플레이하도록 하는 것 - 상기 제안 박스는 상기 속성 제안의 세트의 표시 및 상기 속성 제안의 세트를 이용하여 상기 초기 사용자 입력을 완성하는 프롬프트를 포함함 -
을 포함한다.
2. 예 1에 있어서,
상기 동작은,
상기 클라이언트 디바이스 상에 제공되는 상기 사용자 인터페이스의 상기 데이터 입력 필드를 통해 입력된 추가 사용자 입력을 수신하는 것과, 상기 추가 사용자 입력에 기초하여 상기 적어도 하나의 속성 제안을 대안 속성 제안으로 교체함으로써 상기 제안 박스의 디스플레이를 업데이트하도록 하는 것을 더 포함한다.
3. 예 1 또는 예 2에 있어서,
상기 동작은,
상기 클라이언트 디바이스 상에 제공되는 상기 사용자 인터페이스 내에 적어도 하나의 대안 카테고리를 디스플레이하도록 하는 것과,
상기 적어도 하나의 대안 카테고리의 선택을 수신하는 것과,
상기 적어도 하나의 대안 카테고리의 선택의 상기 수신에 응답하여, 상기 속성 제안의 세트의 표시를 상기 대안 카테고리에 대응하는 대안 속성의 세트의 표시로 교체함으로써 상기 제안 박스의 디스플레이를 업데이트하도록 하는 것을 더 포함한다.
4. 예 1 내지 예 3 중 어느 하나의 예에 있어서,
상기 동작은,
상기 클라이언트 디바이스 상에 제공되는 상기 사용자 인터페이스의 상기 입력 필드를 통하여 입력된 추가 사용자 입력을 수신하는 것과,
상기 초기 사용자 입력과 상기 추가 사용자 입력의 조합에 기초하여 네트워크 기반 스토리지 디바이스에 저장된 데이터 레코드를 식별하는 것과,
상기 네트워크 기반 스토리지 디바이스로부터 상기 데이터 레코드를 검색하는 것을 더 포함한다.
5. 방법은
클라이언트 디바이스 상에 제공되는 사용자 인터페이스의 데이터 입력 필드를 통해 입력된 초기 사용자 입력을 수신하는 단계와,
하나 이상의 프로세서를 이용하여 상기 초기 사용자 입력에 대응하는 매칭 카테고리를 식별하는 단계와,
상기 매칭 카테고리에 대응하는 속성의 세트를 식별하는 단계와,
상기 속성의 세트로부터 상기 속성의 세트의 각 속성의 순위에 기초하여 상기 초기 사용자 입력을 완성하는 속성 제안의 세트를 선택하는 단계와 - 상기 속성 제안의 세트는 상기 매칭 카테고리에 대응하는 상기 속성의 세트의 서브세트를 포함함 -,
상기 클라이언트 디바이스 상에 제공되는 상기 사용자 인터페이스 내에 상기 데이터 입력 필드와 함께 제시된 제안 박스를 디스플레이하도록 하는 단계 - 상기 제안 박스는 상기 속성 제안의 세트의 표시 및 상기 속성 제안의 세트를 이용하여 상기 초기 사용자 입력을 완성하는 프롬프트를 포함함 - 를 포함한다.
6. 예 5에 있어서, 상기 방법은
상기 클라이언트 디바이스 상에 제공되는 상기 사용자 인터페이스의 상기 데이터 입력 필드를 통해 입력된 추가 사용자 입력을 수신하는 단계와,
상기 추가 사용자 입력으로부터 속성 값을 추출하는 단계와 - 상기 속성 값은 상기 매칭 카테고리에 대응하는 상기 속성 제안의 세트의 속성 제안에 대응하는 것임 -,
상기 추출된 속성 값에 기초하여 상기 속성 제안을 대안 속성 제안으로 교체함으로써 상기 제안 박스의 디스플레이를 업데이트하도록 하는 단계를 더 포함한다.
7. 예 5 또는 예 6의 예에 있어서, 상기 방법은
상기 클라이언트 디바이스 상에 제공되는 상기 사용자 인터페이스의 상기 데이터 입력 필드를 통해 입력된 추가 사용자 입력을 수신하는 단계와,
상기 초기 사용자 입력과 상기 추가 사용자 입력의 조합에 기초하여 네트워크 기반 스토리지 디바이스에 저장된 데이터 레코드를 식별하는 단계와,
상기 네트워크 기반 스토리지 디바이스로부터 상기 데이터 레코드를 검색하는 단계를 더 포함한다.
8. 예 5 내지 예 7 중 어느 하나의 예에 있어서,
상기 프롬프트는 상기 속성 제안의 세트의 속성 제안에 대응하는 적어도 하나의 속성 값을 입력하도록 하는 제안을 포함하고,
상기 추가 사용자 입력은 상기 속성 제안의 세트의 상기 속성 제안에 대응하는 적어도 하나의 속성 값을 포함한다.
9. 예 5 내지 예 8 중 어느 하나의 예에 있어서, 상기 방법은
상기 클라이언트 디바이스 상에 제공되는 상기 사용자 인터페이스 내에 적어도 하나의 대안 카테고리를 디스플레이하도록 하는 단계와,
상기 적어도 하나의 대안 카테고리의 선택을 수신하는 단계와,
상기 적어도 하나의 대안 카테고리의 상기 선택을 수신한 것에 응답하여, 상기 속성 제안의 세트의 표시를 상기 대안 카테고리에 대응하는 대안 속성의 세트의 표시로 교체함으로써 상기 제안 박스의 디스플레이를 업데이트하도록 하는 단계를 더 포함한다.
10. 예 5 내지 예 9 중 어느 하나의 예에 있어서, 상기 제안 박스를 디스플레이하도록 하는 상기 단계는 사용자가 상기 사용자 인터페이스의 상기 데이터 입력 필드에 추가 사용자 입력을 입력하는 동안 발생한다.
11. 예 5 내지 예 10 중 어느 하나의 예에 있어서, 상기 방법은
상기 데이터 입력 필드에 입력되고 있는 영숫자 문자의 임계 개수를 검출하는 단계를 더 포함하고,
상기 초기 사용자 입력은 영숫자 문자의 상기 임계 개수를 포함하는 텍스트 입력을 포함하고,
상기 카테고리를 선택하는 상기 단계는 영숫자 문자의 상기 임계 개수를 검출하는 것에 응답하여 발생한다.
12. 예 5 내지 예 11 중 어느 하나의 예에 있어서, 상기 방법은
상기 초기 사용자 입력에 대응하는 복수의 가능성 있는 카테고리를 식별하는 단계와,
상기 복수의 가능성 있는 카테고리 중 각 가능성 있는 카테고리의 신뢰 스코어를 결정하는 단계를 더 포함하고,
상기 매칭 카테고리는 상기 매칭 카테고리의 상기 결정된 신뢰 스코어에 기초하여 식별된 상기 복수의 가능성 있는 카테고리로부터 선택된다.
13. 예 5 내지 예 12 중 어느 하나의 예에 있어서, 상기 방법은
상기 추가 사용자 입력으로부터 속성 값을 추출하는 단계와 - 상기 속성 값은 상기 매칭 카테고리에 대응하는 상기 제안 속성의 세트의 제안 속성에 대응함 -,
상기 추출된 속성 값을 이용하여 전자 양식을 미리 채우는 단계를 더 포함한다.
14. 예 5 내지 예 13 중 어느 하나의 예에 있어서, 상기 초기 사용자 입력은 텍스트 입력을 포함하고,
상기 방법은
상기 사용자 인터페이스의 상기 데이터 입력 필드에 입력되는 상기 초기 사용자 입력을 완성하는 추가 텍스트를 예측하는 단계와,
상기 추가 텍스트를 사용자 인터페이스에 상기 데이터 입력 필드와 함께 디스플레이하기 위한 상기 추가 텍스트를 제공하는 단계와,
상기 추가 텍스트에 대한 사용자의 선택을 수신하는 것에 응답하여 상기 추가 텍스트를 이용하여 상기 초기 사용자 입력을 완성하는 단계를 더 포함한다.
15. 예 5 내지 예 14 중 어느 하나의 예에 있어서, 상기 매칭 카테고리에 대응하는 상기 속성의 세트를 식별하는 단계는,
복수의 카테고리와 상기 복수의 카테고리 내의 각 카테고리에 대한 속성의 세트를 포함하는 압축 인덱스 문서에 액세스하는 단계와,
상기 매칭 카테고리에 대응하는 상기 속성의 세트에 대한 상기 압축 인덱스 문서를 검색하는 단계를 포함한다.
16. 예 15에 있어서, 상기 방법은
오프라인 일괄 작업으로 상기 압축 인덱스 문서를 생성하는 단계와,
상기 압축 인덱스 문서를 검색할 수 있는 검색 클러스터에 상기 압축 인덱스 문서를 주입하는 단계를 더 포함하고,
상기 압축 인덱스 문서를 검색하는 상기 단계는 상기 검색 클러스터에 의해 수행된다.
17. 명령어를 구현하는 머신 판독가능 저장 매체로서,
상기 명령어는 머신에 의해 실행될 때 상기 머신으로 하여금,
클라이언트 디바이스 상에 제공되는 사용자 인터페이스의 데이터 입력 필드를 통해 입력된 초기 사용자 입력을 수신하는 것과,
상기 초기 사용자 입력에 대응하는 매칭 카테고리를 식별하는 것과,
상기 매칭 카테고리에 대응하는 속성의 세트를 식별하는 것과,
상기 속성의 세트로부터 상기 속성의 세트의 각 속성의 순위에 기초하여 상기 초기 사용자 입력을 완성하는 속성 제안의 세트를 선택하는 것과 - 상기 속성 제안의 세트는 상기 매칭 카테고리에 대응하는 상기 속성의 세트의 서브세트를 포함함 -,
상기 클라이언트 디바이스 상에 제공되는 상기 사용자 인터페이스 내에 상기 데이터 입력 필드와 함께 제시된 제안 박스를 디스플레이하도록 하는 것 - 상기 제안 박스는 상기 속성 제안의 세트의 표시 및 상기 속성 제안의 세트를 이용하여 상기 초기 사용자 입력을 완성하는 프롬프트를 포함함 -
을 포함하는 동작을 수행하게 한다.
18. 예 17에 있어서, 상기 동작은
상기 클라이언트 디바이스 상에 제공되는 상기 사용자 인터페이스의 상기 데이터 입력 필드를 통해 입력된 추가 사용자 입력을 수신하는 것과,
상기 추가 사용자 입력에 기초하여 상기 적어도 하나의 속성 제안을 대안 속성 제안으로 교체함으로써 상기 제안 박스의 디스플레이를 업데이트하도록 하는 것을 더 포함한다.
19. 예 17 또는 예 18에 있어서, 상기 동작은
상기 클라이언트 디바이스 상에 제공되는 상기 사용자 인터페이스 내에 적어도 하나의 대안 카테고리를 디스플레이하도록 하는 것과,
상기 적어도 하나의 대안 카테고리의 선택을 수신하는 것과,
상기 적어도 하나의 대안 카테고리의 상기 선택의 수신에 응답하여, 상기 속성 제안의 세트의 표시를 상기 대안 카테고리에 대응하는 대안 속성의 세트의 표시로 교체함으로써 상기 제안 박스의 디스플레이를 업데이트하도록 하는 것을 더 포함한다.
20. 예 17 내지 예 19 중 어느 하나의 예에 있어서, 상기 동작은
상기 클라이언트 디바이스 상에 제공되는 상기 사용자 인터페이스의 상기 입력 필드를 통하여 입력된 추가 사용자 입력을 수신하는 것과,
상기 초기 사용자 입력과 상기 추가 사용자 입력의 조합에 기초하여 네트워크 기반 스토리지 디바이스에 저장된 데이터 레코드를 식별하는 것과,
상기 네트워크 기반 스토리지 디바이스로부터 상기 데이터 레코드를 검색하는 것을 더 포함한다.
21. 머신 판독가능 매체로서, 머신의 하나 이상의 프로세서에 의해 실행될 때, 상기 머신으로 하여금 예 5 내지 예 16 중 어느 하나의 예의 방법을 수행하게 하는 명령어를 운반한다.
언어
본 개시의 실시예는 특정 예시적 실시예를 참조하여 설명되었지만, 본 발명의 주제의 더 넓은 범위를 벗어나지 않으면서 이들 실시예에 다양한 수정 및 변경이 이루어질 수 있음이 명백할 것이다. 따라서, 명세서 및 도면은 제한적인 의미라기보다는 예시적인 것으로 간주되어야 한다. 본 명세서의 일부를 형성하는 첨부 도면은 발명의 내용이 실시될 수 있는 특정 실시예를 제한이 아닌 예시로서 보여준다. 도시된 실시예는 당업자가 여기에 개시된 교시를 실시할 수 있도록 충분히 상세하게 설명된다. 본 개시의 범위를 벗어나지 않고 구조적 및 논리적 대체 및 변경이 이루어질 수 있도록 다른 실시예가 사용될 수 있고 그로부터 도출될 수 있다. 따라서, 본 개시의 상세한 설명은 제한적인 의미로 받아들여서는 안 되며, 다양한 실시예들의 범위는 첨부된 청구 범위와 그러한 청구 범위가 부여하는 모든 범위의 등가물에 의해서만 정의된다.
본 발명적 내용의 이러한 실시예는 사실상 두 개 이상의 발명이 개시되는 경우 본 출원의 범위를 임의의 단일 발명 또는 발명적 개념으로 자발적으로 제한하고자 하는 것이 아니라 단순히 편의상 "발명"이라는 용어에 의해 개별적으로 및/또는 집합적으로 본원에서 언급될 수 있다. 따라서, 여기에서 특정 실시예가 도시되고 설명되었지만, 동일한 목적을 달성하도록 계산된 임의의 구성이 설명된 특정 실시예를 대체할 수 있음이 이해되어야 한다. 본 개시는 다양한 실시예의 임의의 및 모든 개조 또는 변형을 포함하도록 의도된다. 위의 설명을 검토할 경우 통상의 기술자에게는 전술한 실시예들 및 여기에서 구체적으로 설명되지 않은 다른 실시예의 조합은 명백할 것이다.
본 문헌에 언급된 모든 간행물, 특허 및 특허 문헌은 개별적으로 참조를 위해 통합되는 것처럼 그 전체가 본원에 참조에 의해 통합된다. 이렇게 참조를 위해 통합된 문헌과 본 문헌 사이에 용법상의 불일치가 있는 경우, 통합된 참조에서의 용법은 본 문헌의 용법에 대해 보충적으로 고려되어야 하며, 양립할 수 없는 불일치가 있는 경우 본 문헌에서의 용법이 우선한다.
본 문헌에서, 임의의 다른 경우 또는 "적어도 하나" 또는 "하나 이상"의 사용과는 별도로, 단수 용어는 특허 문헌에서 일반적으로 사용되는 것처럼 하나 이상을 포함하도록 사용된다. 본 문헌에서, "또는"이라는 용어는 비배타적 또는(nonexclusive or)을 지칭하도록 사용되므로, "A 또는 B"는 "B 아닌 A", "A 아닌 B" 및 "A 및 B"를 포함한다. 첨부된 청구 범위에서, "포함하는(including)" 및 "여기에서(in which)"라는 용어는 각각의 용어 "포함하는(comprising)" 및 "여기서(wherein)"의 평이한 영어 등가물로서 사용된다. 또한, 이하의 청구범위에서, "포함하는(including)" 및 "포함하는(comprising)"이라는 용어는 개방형으로서, 즉, 청구항에서 그러한 용어 뒤에 열거된 것 이외의 요소를 포함하는 시스템, 디바이스, 제품 또는 프로세스는 여전히 해당 청구항의 범위에 포함되는 것으로 간주된다.

Claims (21)

  1. 시스템으로서,
    하나 이상의 프로세서와,
    상기 하나 이상의 프로세서에 의해 실행될 때, 상기 시스템으로 하여금 동작을 수행하도록 하는 명령어를 저장하는 컴퓨터 판독가능 매체를 포함하고,
    상기 동작은
    클라이언트 디바이스 상에 제공되는 사용자 인터페이스의 데이터 입력 필드를 통해 사용자에 의해 입력된 초기 사용자 입력을 수신하는 것과,
    상기 초기 사용자 입력에 대응하는 복수의 가능한 카테고리들로부터 상기 초기 사용자 입력에 대응하는 매칭 카테고리를 식별하는 것과,
    상기 매칭 카테고리에 대응하는 속성의 세트를 식별하는 것과,
    상기 속성의 세트로부터, 상기 속성의 세트의 각 속성의 순위에 기초하여 상기 초기 사용자 입력을 완성하기 위한 속성 제안의 세트를 선택하는 것 - 상기 순위는 각 속성이 상기 매칭 카테고리 내의 제품들에 대해 차별화 상세를 얼마나 제공하는지의 측정값에 기초하여 할당되고, 상기 속성 제안은 상기 사용자로 하여금 상기 초기 사용자 입력을 완성하도록 추천되는 속성임 - 과,
    상기 클라이언트 디바이스 상에 제공되는 상기 사용자 인터페이스 내에 상기 데이터 입력 필드와 함께 제시된 제안 박스를 디스플레이하도록 하는 것 - 상기 제안 박스는 상기 속성 제안의 세트의 표시를 포함함 -
    을 포함하는
    시스템.
  2. 제 1 항에 있어서,
    상기 동작은,
    상기 클라이언트 디바이스 상에 제공되는 상기 사용자 인터페이스의 상기 데이터 입력 필드를 통해 입력된 추가 사용자 입력을 수신하는 것과,
    상기 추가 사용자 입력에 기초하여 상기 적어도 하나의 속성 제안을 대안 속성 제안으로 교체함으로써 상기 제안 박스의 디스플레이를 업데이트하도록 하는 것을 더 포함하는
    시스템.
  3. 제 1 항에 있어서,
    상기 동작은,
    상기 클라이언트 디바이스 상에 제공되는 상기 사용자 인터페이스 내에 적어도 하나의 대안 카테고리를 디스플레이하도록 하는 것과,
    상기 적어도 하나의 대안 카테고리의 선택을 수신하는 것과,
    상기 적어도 하나의 대안 카테고리의 선택의 상기 수신에 응답하여, 상기 속성 제안의 세트의 표시를 상기 대안 카테고리에 대응하는 대안 속성의 세트의 표시로 교체함으로써 상기 제안 박스의 디스플레이를 업데이트하도록 하는 것
    을 더 포함하는
    시스템.
  4. 제 1 항에 있어서,
    상기 동작은,
    상기 클라이언트 디바이스 상에 제공되는 상기 사용자 인터페이스의 상기 입력 필드를 통하여 입력된 추가 사용자 입력을 수신하는 것과,
    상기 초기 사용자 입력과 상기 추가 사용자 입력의 조합에 기초하여 네트워크 기반 스토리지 디바이스에 저장된 데이터 레코드를 식별하는 것과,
    상기 네트워크 기반 스토리지 디바이스로부터 상기 데이터 레코드를 검색하는 것
    을 더 포함하는
    시스템.
  5. 방법으로서,
    클라이언트 디바이스 상에 제공되는 사용자 인터페이스의 데이터 입력 필드를 통해 사용자에 의해 입력된 초기 사용자 입력을 수신하는 단계와,
    하나 이상의 프로세서를 이용하여, 상기 초기 사용자 입력에 대응하는 복수의 가능한 카테고리들로부터 상기 초기 사용자 입력에 대응하는 매칭 카테고리를 식별하는 단계와,
    상기 매칭 카테고리에 대응하는 속성의 세트를 식별하는 단계와,
    상기 속성의 세트로부터 상기 속성의 세트의 각 속성의 순위에 기초하여 상기 초기 사용자 입력을 완성하기 위한 속성 제안의 세트를 선택하는 단계 - 상기 순위는 각 속성이 상기 매칭 카테고리 내의 제품들에 대해 차별화 상세를 얼마나 제공하는지의 측정값에 기초하여 할당되고, 상기 속성 제안은 상기 사용자로 하여금 상기 초기 사용자 입력을 완성하도록 추천되는 속성임 - 와,
    상기 클라이언트 디바이스 상에 제공되는 상기 사용자 인터페이스 내에 상기 데이터 입력 필드와 함께 제시된 제안 박스를 디스플레이하도록 하는 단계 - 상기 제안 박스는 상기 속성 제안의 세트의 표시를 포함함 -
    를 포함하는 방법.
  6. 제 5 항에 있어서,
    상기 클라이언트 디바이스 상에 제공되는 상기 사용자 인터페이스의 상기 데이터 입력 필드를 통해 입력된 추가 사용자 입력을 수신하는 단계와,
    상기 추가 사용자 입력으로부터 속성 값을 추출하는 단계 - 상기 속성 값은 상기 매칭 카테고리에 대응하는 상기 속성 제안의 세트 중의 속성 제안에 대응함 - 와,
    상기 추출된 속성 값에 기초하여 상기 속성 제안을 대안 속성 제안으로 교체함으로써 상기 제안 박스의 디스플레이를 업데이트하도록 하는 단계
    를 더 포함하는 방법.
  7. 제 5 항에 있어서,
    상기 클라이언트 디바이스 상에 제공되는 상기 사용자 인터페이스의 상기 데이터 입력 필드를 통해 입력된 추가 사용자 입력을 수신하는 단계와,
    상기 초기 사용자 입력과 상기 추가 사용자 입력의 조합에 기초하여 네트워크 기반 스토리지 디바이스에 저장된 데이터 레코드를 식별하는 단계와,
    상기 네트워크 기반 스토리지 디바이스로부터 상기 데이터 레코드를 검색하는 단계
    를 더 포함하는 방법.
  8. 제 5 항에 있어서,
    상기 프롬프트는 상기 속성 제안의 세트의 속성 제안에 대응하는 적어도 하나의 속성 값을 입력하도록 하는 제안을 포함하고,
    상기 추가 사용자 입력은 상기 속성 제안의 세트의 상기 속성 제안에 대응하는 적어도 하나의 속성 값을 포함하는
    방법.
  9. 제 5 항에 있어서,
    상기 클라이언트 디바이스 상에 제공되는 상기 사용자 인터페이스 내에 적어도 하나의 대안 카테고리를 디스플레이하도록 하는 단계와,
    상기 적어도 하나의 대안 카테고리의 선택을 수신하는 단계와,
    상기 적어도 하나의 대안 카테고리의 상기 선택을 수신한 것에 응답하여, 상기 속성 제안의 세트의 표시를 상기 대안 카테고리에 대응하는 대안 속성의 세트의 표시로 교체함으로써 상기 제안 박스의 디스플레이를 업데이트하도록 하는 단계
    를 더 포함하는 방법.
  10. 제 5 항에 있어서,
    상기 제안 박스를 디스플레이하도록 하는 상기 단계는, 사용자가 상기 사용자 인터페이스의 상기 데이터 입력 필드에 추가 사용자 입력을 입력하는 동안 발생하는
    방법.
  11. 제 5 항에 있어서,
    상기 데이터 입력 필드에 입력되고 있는 영숫자 문자의 임계 개수를 검출하는 단계를 더 포함하고,
    상기 초기 사용자 입력은 영숫자 문자의 상기 임계 개수를 포함하는 텍스트 입력을 포함하고,
    상기 카테고리를 선택하는 상기 단계는 영숫자 문자의 상기 임계 개수를 검출하는 것에 응답하여 발생하는
    방법.
  12. 제 5 항에 있어서,
    상기 초기 사용자 입력에 대응하는 복수의 가능성 있는 카테고리를 식별하는 단계와,
    상기 복수의 가능성 있는 카테고리 중 각 가능성 있는 카테고리의 신뢰 스코어를 결정하는 단계를 더 포함하고,
    상기 매칭 카테고리는 상기 매칭 카테고리의 상기 결정된 신뢰 스코어에 기초하여 식별된 상기 복수의 가능성 있는 카테고리로부터 선택되는
    방법.
  13. 제 5 항에 있어서,
    상기 추가 사용자 입력으로부터 속성 값을 추출하는 단계 - 상기 속성 값은 상기 매칭 카테고리에 대응하는 상기 속성 제안의 세트 중의 속성 제안에 대응함 - 와,
    상기 추출된 속성 값을 이용하여 전자 양식을 미리 채우는 단계
    를 더 포함하는 방법.
  14. 제 5 항에 있어서,
    상기 초기 사용자 입력은 텍스트 입력을 포함하고,
    상기 방법은,
    상기 사용자 인터페이스의 상기 데이터 입력 필드에 입력되는 상기 초기 사용자 입력을 완성하는 추가 텍스트를 예측하는 단계와,
    상기 추가 텍스트를 사용자 인터페이스에 상기 데이터 입력 필드와 함께 디스플레이하기 위한 상기 추가 텍스트를 제공하는 단계와,
    상기 추가 텍스트에 대한 사용자의 선택을 수신하는 것에 응답하여 상기 추가 텍스트를 이용하여 상기 초기 사용자 입력을 완성하는 단계
    를 더 포함하는
    방법.
  15. 제 5 항에 있어서,
    상기 매칭 카테고리에 대응하는 상기 속성의 세트를 식별하는 단계는,
    복수의 카테고리와 상기 복수의 카테고리의 각 카테고리에 대한 속성의 세트를 포함하는 압축 인덱스 문서에 액세스하는 단계와,
    상기 매칭 카테고리에 대응하는 상기 속성의 세트에 대한 상기 압축 인덱스 문서를 검색하는 단계
    를 포함하는
    방법.
  16. 제 15 항에 있어서,
    오프라인 일괄 작업으로 상기 압축 인덱스 문서를 생성하는 단계와,
    상기 압축 인덱스 문서를 검색할 수 있는 검색 클러스터에 상기 압축 인덱스 문서를 주입하는 단계
    를 더 포함하고,
    상기 압축 인덱스 문서를 검색하는 상기 단계는 상기 검색 클러스터에 의해 수행되는
    방법.
  17. 명령어를 저장하는 머신 판독가능 저장 매체로서,
    상기 명령어는 머신의 하나 이상의 프로세서에 의해 실행될 때 상기 머신으로 하여금,
    클라이언트 디바이스 상에 제공되는 사용자 인터페이스의 데이터 입력 필드를 통해 사용자에 의해 입력된 초기 사용자 입력을 수신하는 것과,
    상기 초기 사용자 입력에 대응하는 복수의 가능한 카테고리들로부터 상기 초기 사용자 입력에 대응하는 매칭 카테고리를 식별하는 것과,
    상기 매칭 카테고리에 대응하는 속성의 세트를 식별하는 것과,
    상기 속성의 세트로부터 상기 속성의 세트의 각 속성의 순위에 기초하여 상기 초기 사용자 입력을 완성하기 위한 속성 제안의 세트를 선택하는 것 - 상기 순위는 각 속성이 상기 매칭 카테고리 내의 제품들에 대해 차별화 상세를 얼마나 제공하는지의 측정값에 기초하여 할당되고, 상기 속성 제안은 상기 사용자로 하여금 상기 초기 사용자 입력을 완성하도록 추천되는 속성임 - 과,
    상기 클라이언트 디바이스 상에 제공되는 상기 사용자 인터페이스 내에 상기 데이터 입력 필드와 함께 제시된 제안 박스를 디스플레이하도록 하는 것 - 상기 제안 박스는 상기 속성 제안의 세트의 표시를 포함함 -
    을 포함하는 동작을 수행하도록 하는
    머신 판독가능 저장 매체.

  18. 제 17 항에 있어서,
    상기 동작은,
    상기 클라이언트 디바이스 상에 제공되는 상기 사용자 인터페이스의 상기 데이터 입력 필드를 통해 입력된 추가 사용자 입력을 수신하는 것과,
    상기 추가 사용자 입력에 기초하여 상기 적어도 하나의 속성 제안을 대안 속성 제안으로 교체함으로써 상기 제안 박스의 디스플레이를 업데이트하도록 하는 것
    을 더 포함하는
    머신 판독가능 저장 매체.
  19. 제 17 항에 있어서,
    상기 동작은,
    상기 클라이언트 디바이스 상에 제공되는 상기 사용자 인터페이스 내에 적어도 하나의 대안 카테고리를 디스플레이하도록 하는 것과,
    상기 적어도 하나의 대안 카테고리의 선택을 수신하는 것과,
    상기 적어도 하나의 대안 카테고리의 선택의 상기 수신에 응답하여, 상기 속성 제안의 세트의 표시를 상기 대안 카테고리에 대응하는 대안 속성의 세트의 표시로 교체함으로써 상기 제안 박스의 디스플레이를 업데이트하도록 하는 것
    을 더 포함하는
    머신 판독가능 저장 매체.
  20. 제 17 항에 있어서,
    상기 동작은,
    상기 클라이언트 디바이스 상에 제공되는 상기 사용자 인터페이스의 상기 입력 필드를 통하여 입력된 추가 사용자 입력을 수신하는 것과,
    상기 초기 사용자 입력과 상기 추가 사용자 입력의 조합에 기초하여 네트워크 기반 스토리지 디바이스에 저장된 데이터 레코드를 식별하는 것과,
    상기 네트워크 기반 스토리지 디바이스로부터 상기 데이터 레코드를 검색하는 것
    을 더 포함하는
    머신 판독가능 저장 매체.
  21. 머신 판독가능 저장 매체로서, 머신의 하나 이상의 프로세서에 의해 실행될 때, 상기 머신으로 하여금 제 5 항 내지 제 16 항 중 어느 한 항의 방법을 수행하게 하는 명령어가 저장된 머신 판독가능 저장 매체.
KR1020187030465A 2016-03-23 2017-03-23 스마트 매치 자동 완성 시스템 KR102214015B1 (ko)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US201662312032P 2016-03-23 2016-03-23
US62/312,032 2016-03-23
US201662322532P 2016-04-14 2016-04-14
US62/322,532 2016-04-14
US15/214,237 2016-07-19
US15/214,237 US11314791B2 (en) 2016-03-23 2016-07-19 Smart match autocomplete system
PCT/US2017/023848 WO2017165669A1 (en) 2016-03-23 2017-03-23 Smart match autocomplete system

Publications (2)

Publication Number Publication Date
KR20190047656A KR20190047656A (ko) 2019-05-08
KR102214015B1 true KR102214015B1 (ko) 2021-02-09

Family

ID=59898712

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020187030465A KR102214015B1 (ko) 2016-03-23 2017-03-23 스마트 매치 자동 완성 시스템

Country Status (5)

Country Link
US (2) US20170277737A1 (ko)
EP (1) EP3433760A4 (ko)
KR (1) KR102214015B1 (ko)
CN (1) CN110494852B (ko)
WO (1) WO2017165669A1 (ko)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9996590B2 (en) * 2015-12-31 2018-06-12 Ebay Inc. System and method for identifying miscategorization
US20170277737A1 (en) 2016-03-23 2017-09-28 Ebay Inc. Compact index document generation for smart match autocomplete system
US10649968B2 (en) 2017-08-30 2020-05-12 Ebay Inc. Smaller proximate search index
CN107885827B (zh) * 2017-11-07 2021-06-01 Oppo广东移动通信有限公司 文件获取方法、装置、存储介质及电子设备
US11048734B1 (en) * 2018-08-20 2021-06-29 Pinterest, Inc. Auto-completion based on content similarities
US10996819B2 (en) * 2018-11-12 2021-05-04 Citrix Systems, Inc. Systems and methods for intellisense for SaaS application
CN109885180B (zh) * 2019-02-21 2022-12-06 北京百度网讯科技有限公司 纠错方法和装置、计算机可读介质
US11574467B2 (en) 2019-11-21 2023-02-07 Kyndryl, Inc. Document augmented auto complete
US11206234B2 (en) 2020-01-13 2021-12-21 International Business Machines Corporation Validating proposed message recipients based on number of message keywords
JP2021144271A (ja) * 2020-03-10 2021-09-24 オムロン株式会社 文字入力装置、文字入力方法、および、文字入力プログラム
JP6732277B1 (ja) * 2020-04-09 2020-07-29 Io株式会社 情報処理装置及びプログラム
US11816431B2 (en) * 2020-04-12 2023-11-14 Salesforce, Inc. Autocomplete of user entered text
US11868343B2 (en) * 2020-05-06 2024-01-09 Tableau Software, LLC Utilizing autocompletion as a data discovery scaffold for supporting visual analysis
US11681743B2 (en) 2020-11-20 2023-06-20 International Business Machines Corporation Type ahead search amelioration based on image processing
CN112650738B (zh) * 2020-12-31 2021-09-21 广西中科曙光云计算有限公司 一种开放数据库的构建方法
US11475214B1 (en) 2021-06-08 2022-10-18 Oracle International Corporation Systems and methods for auto-completing fields on digital forms

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070282811A1 (en) * 2006-01-03 2007-12-06 Musgrove Timothy A Search system with query refinement and search method
US20110238645A1 (en) 2010-03-29 2011-09-29 Ebay Inc. Traffic driver for suggesting stores
US20120265779A1 (en) * 2011-04-15 2012-10-18 Microsoft Corporation Interactive semantic query suggestion for content search
US20140188551A1 (en) * 2012-12-31 2014-07-03 W.W. Grainger, Inc. Systems and methods for providing navigation tendencies to users of a website
US20150347532A1 (en) * 2014-05-30 2015-12-03 Apple Inc. User interface for searching

Family Cites Families (28)

* 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
US7493315B2 (en) * 2000-11-15 2009-02-17 Kooltorch, L.L.C. Apparatus and methods for organizing and/or presenting data
US20060218088A1 (en) * 2005-03-24 2006-09-28 Flora John R Intelligent auto-fill transaction data
US7739225B2 (en) * 2006-02-09 2010-06-15 Ebay Inc. Method and system to analyze aspect rules based on domain coverage of an aspect-value pair
KR100754768B1 (ko) * 2006-04-06 2007-09-03 엔에이치엔(주) 사용자별 맞춤 추천어를 제공하는 시스템, 방법 및 상기방법을 실행하기 위한 프로그램이 기록된 컴퓨터에서 판독가능한 기록 매체
US20080033964A1 (en) 2006-08-07 2008-02-07 Bea Systems, Inc. Failure recovery for distributed search
US8127251B2 (en) 2007-10-31 2012-02-28 Fimed Properties Ag Limited Liability Company Method and apparatus for a user interface with priority data
US7831584B2 (en) * 2007-12-21 2010-11-09 Glyde Corporation System and method for providing real-time search results on merchandise
US8458171B2 (en) * 2009-01-30 2013-06-04 Google Inc. Identifying query aspects
WO2011026145A2 (en) * 2009-08-31 2011-03-03 Google Inc. Framework for selecting and presenting answer boxes relevant to user input as query suggestions
US9405841B2 (en) * 2009-10-15 2016-08-02 A9.Com, Inc. Dynamic search suggestion and category specific completion
US20120179705A1 (en) 2011-01-11 2012-07-12 Microsoft Corporation Query reformulation in association with a search box
US8458213B2 (en) 2011-02-28 2013-06-04 Ebay Inc. Method and system for classifying queries to improve relevance of search results
US9633109B2 (en) * 2011-05-17 2017-04-25 Etsy, Inc. Systems and methods for guided construction of a search query in an electronic commerce environment
US8667007B2 (en) * 2011-05-26 2014-03-04 International Business Machines Corporation Hybrid and iterative keyword and category search technique
US9298776B2 (en) * 2011-06-08 2016-03-29 Ebay Inc. System and method for mining category aspect information
CN103218719B (zh) * 2012-01-19 2016-12-07 阿里巴巴集团控股有限公司 一种电子商务网站导航方法及系统
US20140006930A1 (en) * 2012-06-15 2014-01-02 Investinghouse, Inc. System and method for internet publishing
US9002889B2 (en) 2012-12-21 2015-04-07 Ebay Inc. System and method for social data mining that learns from a dynamic taxonomy
US9268880B2 (en) * 2013-03-14 2016-02-23 Google Inc. Using recent media consumption to select query suggestions
US9600228B2 (en) * 2013-09-16 2017-03-21 Here Global B.V. Enhanced system and method for static query generation and entry
US9489461B2 (en) * 2014-03-03 2016-11-08 Ebay Inc. Search ranking diversity based on aspect affinity
US10410224B1 (en) * 2014-03-27 2019-09-10 Amazon Technologies, Inc. Determining item feature information from user content
US10325304B2 (en) * 2014-05-23 2019-06-18 Ebay Inc. Personalizing alternative recommendations using search context
US20150379010A1 (en) 2014-06-25 2015-12-31 International Business Machines Corporation Dynamic Concept Based Query Expansion
US10740368B2 (en) * 2015-12-29 2020-08-11 Facebook, Inc. Query-composition platforms on online social networks
US10671653B2 (en) * 2016-02-18 2020-06-02 Adobe Inc. Analyzing search queries to provide potential search query modifications via interactive user-interfaces
US20170277737A1 (en) 2016-03-23 2017-09-28 Ebay Inc. Compact index document generation for smart match autocomplete system

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070282811A1 (en) * 2006-01-03 2007-12-06 Musgrove Timothy A Search system with query refinement and search method
US20110238645A1 (en) 2010-03-29 2011-09-29 Ebay Inc. Traffic driver for suggesting stores
US20120265779A1 (en) * 2011-04-15 2012-10-18 Microsoft Corporation Interactive semantic query suggestion for content search
US20140188551A1 (en) * 2012-12-31 2014-07-03 W.W. Grainger, Inc. Systems and methods for providing navigation tendencies to users of a website
US20150347532A1 (en) * 2014-05-30 2015-12-03 Apple Inc. User interface for searching

Also Published As

Publication number Publication date
WO2017165669A1 (en) 2017-09-28
US11314791B2 (en) 2022-04-26
CN110494852A (zh) 2019-11-22
CN110494852B (zh) 2023-12-26
KR20190047656A (ko) 2019-05-08
US20170277770A1 (en) 2017-09-28
US20170277737A1 (en) 2017-09-28
EP3433760A4 (en) 2019-10-16
EP3433760A1 (en) 2019-01-30

Similar Documents

Publication Publication Date Title
KR102214015B1 (ko) 스마트 매치 자동 완성 시스템
CN110199276B (zh) 用于搜索的方法、系统和介质
CN107077320B (zh) 用于自动完成功能的改进的系统和方法
KR102285263B1 (ko) 제품 타이틀 선택 기법
US20190311301A1 (en) Dynamically generated machine learning models and visualization thereof
US9767144B2 (en) Search system with query refinement
KR102170012B1 (ko) 데이터베이스 검색 최적화기 및 주제 필터
US20230177579A1 (en) System and method for computing features that apply to infrequent queries
US20200020000A1 (en) Generating product descriptions from user reviews
KR20180111979A (ko) 의미론적 카테고리 분류법
US20160342288A1 (en) Intelligent highlighting of item listing features
KR20170052667A (ko) 향상된 검색 질의어 제안
CN110622153A (zh) 用于查询分割的方法和系统
KR102389226B1 (ko) 의도 및 비 의도 쿼리 부분들의 식별
CN110785755B (zh) 用于内容生成的上下文识别
WO2017160722A1 (en) Catalogue management
KR102353420B1 (ko) 크라우드 지원 질의 시스템
KR102165029B1 (ko) 질의의 문맥 수정
US20240169147A1 (en) Reference driven nlp-based topic categorization

Legal Events

Date Code Title Description
A201 Request for examination
AMND Amendment
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
E902 Notification of reason for refusal
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant