KR20180121632A - 카탈로그 관리 - Google Patents

카탈로그 관리 Download PDF

Info

Publication number
KR20180121632A
KR20180121632A KR1020187029536A KR20187029536A KR20180121632A KR 20180121632 A KR20180121632 A KR 20180121632A KR 1020187029536 A KR1020187029536 A KR 1020187029536A KR 20187029536 A KR20187029536 A KR 20187029536A KR 20180121632 A KR20180121632 A KR 20180121632A
Authority
KR
South Korea
Prior art keywords
product category
product
potential
page
name
Prior art date
Application number
KR1020187029536A
Other languages
English (en)
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 KR20180121632A publication Critical patent/KR20180121632A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q30/00Commerce
    • G06Q30/06Buying, selling or leasing transactions
    • G06Q30/0601Electronic shopping [e-shopping]
    • G06Q30/0603Catalogue ordering
    • 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
    • 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/34Browsing; Visualisation therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q30/00Commerce
    • G06Q30/06Buying, selling or leasing transactions
    • G06Q30/0601Electronic shopping [e-shopping]
    • G06Q30/0623Item investigation
    • G06Q30/0625Directed, with specific intent or strategy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q30/00Commerce
    • G06Q30/06Buying, selling or leasing transactions
    • G06Q30/0601Electronic shopping [e-shopping]
    • G06Q30/0641Shopping interfaces

Landscapes

  • Business, Economics & Management (AREA)
  • Accounting & Taxation (AREA)
  • Finance (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Business, Economics & Management (AREA)
  • Strategic Management (AREA)
  • Marketing (AREA)
  • Economics (AREA)
  • Development Economics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Linguistics (AREA)
  • Information Transfer Between Computers (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

 제품 카테고리에 대한 유용한 페이지 명칭을 생성하는 시스템 및 방법이 개시된다. 시스템은 특정 제품 카테고리와 연관되는 검색 용어 세트에 액세스한다. 시스템은 특정 제품 카테고리 및 하나 이상의 연관된 제품 카테고리에 대한 제품 카테고리 명칭을 식별한다. 시스템은 복수의 잠재적 제품 카테고리 명칭을 생성한다. 각각의 잠재적 제품 카테고리 명칭에 대해, 시스템은 잠재적 제품 카테고리 명칭을 특정 제품 카테고리와 연관되는 검색 용어 세트와 비교한다. 잠재적 제품 카테고리 명칭이 임의의 검색 용어와 매칭한다는 결정에 따라, 시스템은 잠재적 제품 카테고리 명칭을 매칭하는 잠재적 제품 카테고리 명칭의 세트에 추가한다. 시스템은 매칭하는 잠재적 제품 카테고리 명칭의 세트로부터 제품 페이지 명칭을 선택하고 선택된 제품 페이지 명칭을 특정 제품 카테고리와 연관되는 웹 페이지에 할당한다.

Description

카탈로그 관리
우선권 주장
본 출원은 2016년 3월 15일자로 출원된 미국 출원 제 15/070,760 호의 우선권의 이익을 주장하며, 미국 출원은 본 출원에 그 전체가 참고로 인용된다.
기술 분야
본 개시내용의 실시예는 일반적으로 카탈로그 관리에 관한 것으로, 보다 구체적으로는 사용자 데이터를 사용하여 카탈로그 데이터를 개선하는 것에 관한 것이지만, 이것으로 제한되는 것은 아니다.
전자 및 디지털 디바이스 기술의 증가는 사회가 매체와 상품 및 서비스의 소비와 상호 작용하는 방식을 급속하게 변화시켰다. 디지털 기술은 구성이 매우 유연하고 상대적으로 저렴한 다양한 소비자 디바이스를 편리하게 사용할 수 있게 한다. 구체적으로, 스마트폰 및 태블릿과 같은 최신 전자 디바이스는 사용자가 전통적인 컴퓨터에서 멀리 떨어져 있을지라도 다양한 유용한 애플리케이션에 액세스할 수 있게 한다.
온라인 상거래는 컴퓨터 기술 및 인터넷의 증가로 인해 새롭고 역동적인 시장이 만들어지는 특정 영역 중 하나이다. 인터넷 기반의 상거래 회사는 주어진 순간에 판매할 더 많은 제품과 서비스를 제시할 수 있다. 그러나 제품 수가 늘어나면, 임의의 제품이나 제품 카테고리를 찾는데 어려움도 또한 커진다.
첨부된 도면 중 다양한 도면은 단지 본 개시내용의 예시적인 실시예를 도시할 뿐이며 그 범위를 제한하는 것으로 간주될 수 없다.
도 1은 일부 예시적인 실시예에 따라, 서버 시스템의 다양한 기능적 구성요소를 포함하는 클라이언트-서버 시스템 환경을 도시하는 네트워크 다이어그램이다.
도 2는 일부 예시적인 실시예에 따라, 클라이언트 시스템을 추가 설명하는 블록도이다.
도 3은 일부 예시적인 실시예에 따라, 도 1의 서버 시스템을 추가 설명하는 블록도이다.
도 4는 일부 예시적인 실시예에 따라, 각 제품 카테고리를 계층구조(hierarchy)로 배열하기 위한 카테고리 계층구조 트리의 다이어그램을 도시한다.
도 5는 일부 예시적인 실시예에 따라, 특정 제품 카테고리와 연관되는 정적 페이지에 유용한 페이지 제목을 생성하기 위한 시스템을 도시하는 블록도를 도시한다.
도 6은 일부 예시적인 실시예에 따라, 카탈로그 명칭을 사용자가 자신의 의도를 표현하는 어휘와 일치하는 간단한 구성요소로 세분화하기 위한 방법을 설명하는 흐름도이다.
도 7a 및 도 7b는 일부 예시적인 실시예에 따라, 카탈로그 명칭을 사용자가 자신의 의도를 표현하는 어휘와 일치하는 간단한 구성요소로 세분화하기 위한 방법을 설명하는 흐름도이다.
도 8은 일부 예시적인 실시예에 따라, 머신 상에 설치될 수 있는 소프트웨어 아키텍처의 예를 도시하는 블록도이다.
도 9는 예시적인 실시예에 따라 머신으로 하여금 본 명세서에서 논의되는 방법론 중 임의의 하나 이상의 방법론을 수행하게 하기 위한 명령어의 집합이 실행될 수 있는 컴퓨터 시스템의 형태의 머신의 개략적인 표현을 도시한다.
다음의 설명은 개시된 주제의 예시적인 실시예를 구현하는 시스템, 방법, 기술, 명령어 시퀀스 및 컴퓨팅 머신 프로그램 제품을 포함한다. 다음의 설명에서, 설명의 목적 상, 개시된 주제의 다양한 예시적인 실시예에 대한 이해를 제공하기 위해 다수의 특정 세부 사항이 제시된다. 그러나, 관련 기술분야에서 통상의 지식을 가진 자에게는 본 발명의 주제의 실시예가 이러한 특정 세부 사항 없이 실시될 수 있음이 명백할 것이다. 일반적으로, 잘 알려진 명령어 인스턴스, 프로토콜, 구조 및 기술이라고 반드시 상세하게 도시되는 것은 아니다.
일부 예시적인 실시예에서, 네트워크 기반 전자 상거래 서비스(예를 들어, 웹 기반 스토어)는 다수의 제품 및 서비스에 대한 데이터를 저장할 잠재력을 갖는다. 예를 들어, 일부 네트워크 기반 전자 상거래 서비스에는 수백만 가지의 제품 및 서비스에 관한 데이터가 포함된다. 이렇게 다수의 제품에 대한 데이터를 관리하는 하나의 방법은 제품을 카테고리로 조직화하는 것이다.
일부 예시적인 실시예에서, 그러면 제품 카테고리는 보다 일반적인 카테고리가 보다 특정한 카테고리를 포함하도록 계층구조(예를 들어, 맵 또는 트리)로 조직화된다. 트리 또는 맵에서의 각 노드는 상위 카테고리(예를 들어, 제품 카테고리가 연관되는 보다 일반적인 카테고리) 및 잠재적으로 하나 이상의 자식 카테고리(예를 들어, 제품 카테고리와 연관되는 보다 협소하거나 보다 특정한 카테고리)를 갖는 제품 카테고리이다. 각 제품 카테고리는 특정 정적 웹 페이지(static webpage)와 연결된다. 일부 제품 페이지는 사용자 요청 등에 응답하여 동적으로 생성되지만, 정적 웹 페이지는 인덱싱되고 북마킹될 수 있고 시간이 지남에 따라 상대적으로 변하지 않기 때문에 유용한다.
그러나, 각각의 정적 웹 페이지는 이것이 식별되는 제목 또는 표제를 필요로 한다. 계층구조에서 제품 카테고리의 명칭은 너무 기술적이거나 특정하거나 또는 그렇지 않으면 사용자가 이해하기 어려울 수 있다. 이와 같이, 정적 제품 페이지마다 유용한 제목이 결정된다. 수동으로 이러한 제목을 선택하는 것은 작업자가 각 카테고리를 분석하는 데 지불하는 양의 비용의 측면에서 그리고 그러한 과정에 소요되는 총 시간의 측면에서 모두 너무 비싸다.
특정 제품 카테고리의 정적 페이지의 명칭을 자동으로 선택하기 위해, 서버 시스템은 먼저 특정 제품 카테고리의 정적 페이지상에 사용자 클릭을 초래하는 검색 용어의 세트를 결정한다. 예를 들어, 사용자가 검색 쿼리를 제출할 때마다, 검색 쿼리가 기록되고 검색 결과 세트가 생성된다. 검색 결과는 사용자에게 제공되고 사용자는 하나 이상의 검색 결과를 (클릭함으로써) 선택할 수 있다. 사용자가 특정 제품 카테고리의 정적 페이지를 클릭할 때, 원래의 검색 쿼리가 기록되고 서버 시스템이 특정 제품 페이지에 대한 검색 용어 세트를 결정할 때 검색된다.
일부 예시적인 실시예에서, 검색 용어 세트는 가장 일반적인 검색 용어만 포함하도록 줄어든다. 예를 들어, 서버 시스템은 미리 결정된 수의 가장 일반적인 검색 용어를 선택한다. 다른 예시적인 실시예에서, 서버 시스템은 일정 퍼센트의 최고 검색 결과를 선택한다. 이러한 기법을 사용하면 검색 용어의 긴 꼬리가 줄어들거나 없어진다.
서버 시스템은 제품 카테고리 명칭 및 모든 부모 카테고리의 명칭으로부터 루트 노드까지 통틀어 모든 단어 세트를 생성한다. 예를 들어, 특정 제품 카테고리가 남성 테니스화이면, 단어 세트에는 부모 카테고리(남성 운동화) 및 그것의 부모 카테고리("남성 신발") 등의 명칭이 또한 포함된다.
서버 시스템은 단어 세트의 상이한 조합을 생성함으로써 잠재적 제품 페이지 명칭의 세트를 생성한다. 그 다음, 각각의 잠재적 제품 페이지 명칭은 사용자 검색 용어의 세트와 매칭된다. 그 다음, 서버 시스템은 식별된 검색 용어와 매칭하는 임의의 잠재적 제품 페이지 명칭을 식별한다.
서버 시스템은, 각각의 매칭하는 제품 페이지 명칭에 대해, 명칭의 길이, 매칭하는 검색 용어의 인기도 등을 비롯한 다양한 인자에 기초하여 잠재적인 제품명의 품질을 나타내는 점수(score) 또는 순위를 결정한다. 그 다음, 서버 시스템은 최고 순위의 잠재적 제품 페이지 명칭을 선택하고 이것을 특정 제품 카테고리와 연관되는 제품 페이지에 할당한다.
도 1은 일부 예시적인 실시예에 따라, 서버 시스템(120)의 다양한 기능적 구성요소를 포함하는 클라이언트-서버 시스템 환경(100)을 도시하는 네트워크 다이어그램이다. 클라이언트-서버 시스템 환경(100)은 적어도 클라이언트 시스템(102) 및 서버 시스템(120)을 포함한다. 하나 이상의 통신 네트워크(110)는 이들 구성요소를 상호 접속한다. 통신 네트워크(110)는 근거리 통신망(local area network, LAN), 광역 네트워크(wide area network, WAN), 무선 네트워크, 유선 네트워크, 인터넷, 개인 영역 네트워크(personal area network, PAN) 또는 이들의 조합을 비롯한 다양한 네트워크 유형 중 임의의 유형일 수 있다.
일부 예시적인 실시예에서, 클라이언트 시스템(102)은 개인용 컴퓨터(personal computer, PC), 랩톱, 스마트폰, 태블릿, 모바일 폰, 또는 통신 네트워크(110)와 통신할 수 있는 임의의 다른 전자 디바이스와 같은 전자 디바이스이다. 클라이언트 시스템(102)은 클라이언트 시스템(102)에 의해 실행되는 하나 이상의 클라이언트 애플리케이션(104)을 포함한다. 일부 예시적인 실시예에서, 클라이언트 애플리케이션(들)(104)은 검색 애플리케이션, 통신 애플리케이션, 생산성 애플리케이션, 게임 애플리케이션, 워드 프로세싱 애플리케이션 또는 기타 임의의 유용한 애플리케이션으로 구성되는 세트로부터의 하나 이상의 애플리케이션을 포함한다. 클라이언트 애플리케이션(들)(104)은 웹 브라우저를 포함한다. 클라이언트 시스템(102)은 웹 브라우저를 사용하여 서버 시스템(120)으로 및 서버 시스템으로부터 요청을 송신 및 수신하고 서버 시스템(120)으로부터 수신되는 정보를 디스플레이한다.
일부 예시적인 실시예에서, 클라이언트 시스템(102)은 서버 시스템(120)(예를 들어, 아이폰 애플리케이션)과의 통신을 위해 특별히 고객화된 애플리케이션을 포함한다. 일부 예시적인 실시예에서, 서버 시스템(120)은 하나 이상의 서비스와 연관되는 서버 시스템이다.
일부 예시적인 실시예에서, 클라이언트 시스템(102)은 서버 시스템(120)에 서버 시스템(120)과 연관되는 웹 페이지 요청을 전송한다. 예를 들어, 사용자는 클라이언트 시스템(102)을 사용하여 서버 시스템(120)에 로그인하고, 링크를 클릭하여 사용자가 서버 시스템(120)으로부터 관심 있는 작업에 대한 작업 목록을 본다. 이에 응답하여, 클라이언트 시스템(102)은 요청된 작업 목록 데이터(예를 들어, 위치, 연관 조직, 작업 요건 및 책임을 서술하는 데이터)를 수신하여 그 데이터를 클라이언트 시스템(102) 상의 사용자 인터페이스에 디스플레이한다.
일부 예시적인 실시예에서, 도 1에 도시된 바와 같이, 서버 시스템(120)은 일반적으로 프런트 엔드 계층, 애플리케이션 로직 계층 및 데이터 계층으로 구성되는 3계층 아키텍처를 기초로 한다. 관련 컴퓨터 및 인터넷 관련 기술 분야의 기술자가 이해하는 바와 같이, 도 1에 도시된 각각의 모듈 또는 엔진은 실행 가능한 소프트웨어 명령어 세트 및 명령어를 실행하기 위한 대응 하드웨어(예를 들어, 메모리 및 프로세서)를 나타낸다. 불필요한 세부 사항을 회피하기 위해, 다양한 예시적인 실시예에 관한 이해를 전달하는데 밀접하게 관련되지 않은 다양한 기능 모듈 및 엔진은 도 1에서 생략되었다. 그러나, 관련 기술분야에서 통상의 기술자는 도 1에 도시된 바와 같은 다양한 부가 기능 모듈 및 엔진이 서버 시스템(120)과 함께 사용되어, 본 명세서에서 구체적으로 설명되지 않은 부가적인 기능성을 가능하게 할 수 있다는 것을 쉽게 인식할 것이다. 뿐만 아니라, 도 1에 도시된 다양한 기능 모듈 및 엔진은 단일 서버 컴퓨터에 상주하거나 다양한 배열로 여러 서버 컴퓨터에 걸쳐 분산될 수 있다. 더욱이, 도 1에서 3 계층 아키텍처로 도시하였지만, 다양한 예시적인 실시예는 결코 이러한 아키텍처로 제한되지 않는다.
도 1에 도시된 바와 같이, 프론트 엔드는 다양한 클라이언트 시스템(102)으로부터 검색을 수신하고 검색 결과를 적절한 클라이언트 시스템(102)에 전달하는 인터페이스 모듈(들)(예를 들어, 웹 서버)(122)로 구성된다. 일부 예시적인 실시예에서, 인터페이스 모듈(들)(122)은 모든 클라이언트 시스템(102)이 검색 쿼리를 송신하고 검색 결과를 수신하는데 사용하는 단일 애플리케이션 프로그램 인터페이스(application programmatic interface, API)를 구현한다.
도 1에 도시된 바와 같이, 데이터 계층은 검색 데이터(130) 및 제품 카테고리 데이터(134)를 포함하는 서버 시스템(120)의 사용자에 필요한 다양한 데이터를 저장하기 위한 데이터베이스를 비롯한 여러 데이터베이스를 포함한다.
일부 예시적인 실시예에서, 검색 데이터(130)는 사용자 검색 쿼리(예를 들어, 검색 결과를 찾는데 사용되는 인덱스)에 응답하는데 사용되는 데이터 및 과거 검색 쿼리와 검색 결과가 디스플레이된 후에 결과로 발생하는 임의의 사용자 상호작용(예를 들어, 사용자 클릭)을 나타내는 데이터 둘 모두를 포함한다. 따라서, 서버 시스템(120)은 검색 결과에 관해 저장된 데이터를 사용하여 어떤 검색 용어가 특정 페이지를 클릭하게 되는지를 식별할 수 있다.
일부 예시적인 실시예에서, 제품 카테고리 데이터(134)는 복수의 제품을 서술하는 데이터를 포함한다. 각 제품은 특정 제품 카테고리로 조직화된다. 또한, 각 제품 카테고리는 계층구조의 일부로서 조직화되어, 각 제품 카테고리가 상위 카테고리(예를 들어, 제품 카테고리가 속한 보다 일반적인 카테고리) 및 하나 이상의 자식 카테고리(예를 들어, 제품 카테고리 내의 보다 구체적인 카테고리)를 갖는다.
서버 시스템(120)은 사용자가 아이템을 구매 및 판매하고, 정보를 공유 및 수신할 기회, 종종 사용자의 관심 사항에 맞춤화된 것 등을 가능하게 하는 넓은 범위의 다른 애플리케이션 및 서비스를 제공할 수 있다.
일부 예시적인 실시예에서, 애플리케이션 로직 계층은 인터페이스 모듈(들)(122)과 관련하여, 매우 다양한 클라이언트 시스템(102)으로부터 사용자 검색 쿼리를 수신하고, 그 정보를 검색 데이터(130)에 저장하는 다양한 애플리케이션 서버 모듈을 포함한다.
검색 용어 분석 모듈(124) 및 페이지 명명 모듈(126)은 또한 애플리케이션 로직 계층에 포함될 수 있다. 물론, 검색 용어 분석 모듈(124) 및 페이지 명명 모듈(126)을 이용하는 다른 애플리케이션 또는 서비스는 그들 자신의 애플리케이션 서버 모듈에서 개별적으로 구현될 수 있다.
도 1에 도시된 바와 같이, 일부 예시적인 실시예에서, 검색 용어 분석 모듈(124) 및 페이지 명명 모듈(126)은 다양한 애플리케이션 서버 모듈과 함께 동작하는 서비스로서 구현된다. 예를 들어, 임의의 수의 개별 애플리케이션 서버 모듈이 검색 용어 분석 모듈(124) 및 페이지 명명 모듈(126)의 기능성을 호출할 수 있다. 그러나, 다양한 대안의 예시적인 실시예에서, 검색 용어 분석 모듈(124) 및 페이지 명명 모듈(126)은 이들이 스탠드 얼론 애플리케이션으로 동작하도록 이들 자체의 애플리케이션 서버 모듈로 구현될 수 있다.
일반적으로, 검색 용어 분석 모듈(124)은 특정 제품 페이지와 연관되는 검색 용어 세트를 결정하려는 요청을 수신한다. 그 다음, 검색 용어 분석 모듈(124)은 검색 데이터(130)에 액세스하여 특정 제품 웹 페이지상에 사용자 클릭을 초래하는 각각의 검색 쿼리를 식별한다. 그 다음, 검색 용어 분석 모듈(124)은 결과로 생긴 검색 용어를 필터링하여 가장 빈번한 검색 용어를 식별한다. 예를 들어, 검색 용어 분석 모듈(124)은 평균적으로 100 번의 클릭에 대해 어떤 검색 용어가 상위 60 번의 클릭을 초래하는지를 결정한다. 이러한 방식으로 가장 적합한 검색 용어 만이 검색 용어 집합에 남게 될 것이다.
일부 예시적인 실시예에서, 페이지 명명 모듈(126)은 특정 제품 카테고리에 대한 일련의 잠재적 페이지 명칭을 생성한다. 일부 예시적인 실시예에서, 잠재적 페이지 명칭은 특정 제품 카테고리의 명칭 및 모든 부모 카테고리 둘 모두에 포함되는 단어의 상이한 조합을 생성함으로써 생성된다. 그 다음 페이지 명명 모듈(126)은 잠재적인 페이지 명칭 각각을 검색 용어 분석 모듈(124)에 의해 생성되는 검색 용어 세트에 대비하여 비교한다.
일단 검색 용어와 매칭하는 잠재적인 페이지 명칭의 세트가 생성되면, 페이지 명명 모듈(126)은 하나 이상의 인자에 기초하여 잠재적 페이지 명칭의 순위를 매긴다. 그 다음, 최상위 순위의 잠재적 페이지 명칭이 해당 제품 카테고리의 정적 페이지 명칭으로 선택된다. 다른 예시적인 실시예에서, 사용자 상호작용 기록은 이미 모든 관련 사용자 정보를 포함하고 있다. 검색 용어 분석 모듈(124)은 시간 및 (아직 기록에 포함되지 않은 경우라면) 사용자 상호작용 기록의 소스를 기록하고 사용자 상호 작용 기록을 페이지 명명 모듈(126)에 전달한다.
도 2는 일부 예시적인 실시예에 따른 클라이언트 시스템(102)을 추가 설명하는 블록도이다. 클라이언트 시스템(102)은 전형적으로 하나 이상의 중앙 처리 유닛(central processing unit, CPU)(202), 하나 이상의 네트워크 인터페이스(210), 메모리(212) 및 이들 구성요소를 상호 접속하기 위한 하나 이상의 통신 버스(214)를 포함한다. 클라이언트 시스템(102)은 사용자 인터페이스(204)를 포함한다. 사용자 인터페이스(204)는 디스플레이 디바이스(206)를 포함하고 선택적으로 키보드, 마우스, 터치 감지 디스플레이 또는 다른 입력 수단과 같은 입력 디바이스(208)를 포함한다. 또한 일부 클라이언트 시스템은 마이크로폰 및 음성 인식을 사용하여 다른 입력 디바이스를 보완하거나 대체한다.
메모리(212)는 동적 랜덤 액세스 메모리(dynamic random-access memory, DRAM), 정적 랜덤 액세스 메모리(static random access memory, SRAM), 더블 데이터 속도 랜덤 액세스 메모리(double data rate random access memory, DDR RAM) 또는 다른 랜덤 액세스 고체 상태 메모리 디바이스와 같은 고속 랜덤 액세스 메모리를 포함하고, 하나 이상의 자기 디스크 저장 디바이스, 광학디스크 저장소 디바이스, 플래시 메모리 디바이스 또는 다른 비휘발성 고체 상태 저장소 디바이스와 같은 비휘발성 메모리를 포함할 수 있다. 메모리(212)는 선택적으로 CPU(들)(202)로부터 멀리 떨어져 위치하는 하나 이상의 저장소 디바이스를 포함할 수 있다. 메모리(212) 또는 대안으로 메모리(212) 내의 비휘발성 메모리 디바이스는 비일시적인 컴퓨터 판독 가능한 저장 매체를 포함한다.
일부 예시적인 실시예에서, 메모리(212) 또는 메모리(212)의 컴퓨터 판독 가능한 저장 매체는 다음의 프로그램, 모듈 및 데이터 구조, 또는 이들의 서브세트를 저장한다:
* 다양한 기본 시스템 서비스를 처리하고 하드웨어 종속적인 작업을 수행하기 위한 절차를 포함하는 오퍼레이팅 시스템(216);
* 클라이언트 시스템(102)을 하나 이상의 네트워크 인터페이스(210)(유선 또는 무선) 및 인터넷, 다른 WAN, LAN, MAN등과 같은 하나 이상의 통신 네트워크(110)를 통해 다른 컴퓨터에 연결하기 위해 사용되는 네트워크 통신 모듈(218);
* 오퍼레이팅 시스템(216) 및 클라이언트 애플리케이션(들)(104)에 의해 생성되는 정보가 디스플레이 디바이스(206) 상에서 시각적으로 제공될 수 있게 하는 디스플레이 모듈(220);
* 서버 시스템(120)(도 1)과 상호 작용하는 다양한 양태를 처리하기 위한 하나 이상의 클라이언트 애플리케이션 모듈(222)
- o 클라이언트 애플 모듈은 이것으로 제한되는 것은 아니지만, 서버 시스템(120)과 연관되는 웹 서비스로부터 정보(예를 들어, 콘텐츠 아이템 및 목록)를 요청하고 서버 시스템(120)과 연관되는 웹 서비스로부터 응답을 수신하는 브라우저 애플리케이션(224)을 포함함 -; 및
* 클라이언트에 관련된 데이터를 저장하는 클라이언트 데이터 모듈(들)(230)
- o 클라이언트 데이터 모듈(들)은 이것으로 제한되는 것은 아니지만, 클라이언트 시스템(102)과 연관되는 서버 시스템(120)의 사용자와 관련되는 프로파일 데이터를 저장하기 위한 클라이언트 프로파일 데이터(232)를 포함함 -.
도 3은 일부 예시적인 실시예에 따른 서버 시스템(120)을 추가 설명하는 블록도이다. 서버 시스템(120)은 전형적으로 하나 이상의 CPU(302), 하나 이상의 네트워크 인터페이스(310), 메모리(306), 및 이들 구성요소를 상호 접속하기 위한 하나 이상의 통신 버스(308)를 포함한다. 메모리(306)는 DRAM, SRAM, DDR RAM 또는 다른 랜덤 액세스 고체 상태 메모리 디바이스와 같은 고속 랜덤 액세스 메모리를 포함하고, 하나 이상의 자기 디스크 저장소 디바이스, 광학 디스크 저장소 디바이스, 플래시 메모리 디바이스 또는 다른 비휘발성 고체 상태 저장소 디바이스와 같은 비휘발성 메모리를 포함할 수 있다. 메모리(306)는 임의적으로 CPU(들)(302)로부터 원격에 위치된 하나 이상의 저장소 디바이스를 포함할 수 있다.
메모리(306) 또는 대안으로 메모리(306) 내의 비휘발성 메모리 디바이스(들)는 비일시적 컴퓨터 판독 가능한 저장 매체를 포함한다. 일부 예시적인 실시예에서, 메모리(306) 또는 메모리(306)의 컴퓨터 판독 가능한 저장 매체는 다음의 프로그램, 모듈 및 데이터 구조물, 또는 이들의 서브세트를 저장한다:
* 다양한 기본 시스템 서비스를 처리하고 하드웨어 종속적인 작업을 수행하기 위한 절차를 포함하는 오퍼레이팅 시스템(314);
* 하나 이상의 네트워크 인터페이스(310)(유선 또는 무선) 및 인터넷, 다른 WAN, LAN, MAN 등과 같은 하나 이상의 통신 네트워크(110)를 통해 서버 시스템(120)을 다른 컴퓨터에 연결하기 위해 사용되는 네트워크 통신 모듈(316);
* 서버 시스템(120)에 의해 제공되는 서비스를 수행하도록 구성되는 하나 이상의 서버 애플리케이션 모듈(318);
- o 서버 애플리케이션 모듈은 이것으로 제한되는 것은 아니지만, 검색 쿼리 및 저장된 검색 데이터(130) 및 제품 카테고리 데이터(134)에 기초하여 특정 제품 카테고리와 연관되는 검색 용어 세트의 요청을 수신하는 검색 용어 분석 모듈(124);
o 제품 카테고리 및 그의 부모 카테고리와 연관되는 단어 및 제품 카테고리와 연관되는 정적 제품 페이지를 선택하는 것과 연관된 검색 용어에 기초하여, 특정 제품 카테고리와 연관되는 웹 페이지에 대한 명칭을 선택하기 위한 페이지 명명 모듈(126);
o 서버 시스템(120)에 연관되는 데이터베이스로부터 검색 데이터(130) 및 제품 카테고리 데이터(134)에 액세스하기 위한 액세스 모듈(322);
o 특정 제품 카테고리가 주어지면, 그 특정 제품 카테고리에 대한 모든 부모 및 자식 제품 카테고리(즉, 각각 보다 일반적이고 특정한 카테고리)를 결정하기 위한 계층구조 분석 모듈(324);
o 특정 제품 카테고리 및 그의 모든 부모 제품 카테고리로부터의 단어의 조합에 기초한 특정 제품 카테고리에 대한 하나 이상의 잠재적 제품 페이지 명칭을 생성하기 위한 생성 모듈(326);
o 하나 이상의 잠재적 제품 명칭을 특정 제품 카테고리와 연관되는 검색 용어 세트와 비교하여 검색 용어와 매칭하는 잠재적 제품 명칭을 찾는 비교 모듈(328);
o 잠재적 제품 명칭이 하나 이상의 관련 기준과 매칭하는 정도에 기초하여 각각의 매칭하는 잠재적 제품 명칭을 순위 매기기 위한 순위 모듈(330);
o 검색 용어 중 하나와 매칭하는 각각의 잠재적 제품 명칭의 상대적 순위에 기초하여 특정 잠재적 제품 명칭을 선택하기 위한 선택 모듈(332);
o 특정 제품 카테고리와 연관되는 모든 검색 용어 세트에서 덜 빈번한 검색 용어를 제거하기 위한 감축 모듈(334); 및
o 잠재적 페이지 명칭의 순위 매김을 위해 어떤 인자가 가장 중요한지를 결정하기 위한 가중 모듈(336)을 포함함 -; 및
* 서버 시스템(120)과 관련되는 데이터를 저장하는 서버 데이터 모듈(들)(340)
- o 서버 데이터 모듈(들)은 이것으로 제한되는 것은 아니지만, 검색 쿼리에 응답하는데 사용되는 데이터(예를 들어, 제품을 인덱싱하고 검색에 응답할 수 있는 데이터) 및 과거 검색 쿼리 및 검색 결과의 디스플레이에 응답하여 사용자가 클릭한 것을 서술하는 데이터 둘 모두를 포함하는 검색 데이터(130); 및
o 어떤 제품이 어떤 제품 카테고리에 있는지 및 다양한 제품 카테고리 간의 관계를 포함하는, 제품 카테고리의 계층구조를 저장하는 제품 카테고리 데이터(134)를 포함함 -.
도 4는 일부 예시적인 실시예에 따라 각 제품 카테고리를 계층구조로 배열하기 위한 카테고리 계층구조 트리의 다이어그램을 도시한다. 일부 예시적인 실시예에 따르면, 복수의 제품이 제품 카테고리로 함께 그룹화된다. 이러한 예에서 각 카테고리는 문자로 라벨 표시된다(예를 들어, 카테고리 A 내지 카테고리 AJ). 또한 모든 제품 카테고리는 카테고리 계층구조의 일부로 조직화된다.
이 예에서, 카테고리 A는 모든 다른 제품 카테고리가 속하는 일반적인 제품 카테고리이다. 카테고리 A의 제품은 적어도 두 개의 서로 다른 제품 카테고리인 카테고리 B와 카테고리 C 로 분류된다. 각각의 부모 카테고리(예를 들어, 이 경우 카테고리 A는 카테고리 B와 카테고리 C 둘 모두의 부모 카테고리임)에는 많은 수의 자식 카테고리(예를 들어, 서브카테고리)가 포함될 수 있음을 알아야 한다.
이 예에서, 제품 카테고리 B 및 C는 둘 모두 서브카테고리(또는 자식 카테고리)를 갖는다. 예를 들어, 카테고리 A가 의류이면, 카테고리 B는 남성 의류일 수 있으며 카테고리 C는 여성 의류이다. 카테고리 B의 서브카테고리에는 카테고리 D, E 및 F가 포함된다. 서브카테고리 D, E 및 F 각각은 각 서브카테고리가 담당하는 제품의 특정 세부 사항에 따라 상이한 수의 서브카테고리를 갖는다.
예를 들어, 카테고리 D가 액티브 웨어(active wear)이고, 카테고리 E가 정장이고, 카테고리 F가 아웃도어 웨어(outdoor wear)이면, 각각의 서브카테고리는 상이한 수 및 유형의 서브카테고리를 포함한다. 예를 들어, 카테고리 D(이 예에서는 액티브 웨어)에는 서브카테고리 I 및 J가 포함된다. 서브카테고리 I에는 (이 예의 경우) 액티브 풋웨어가 포함되며 서브카테고리 J에는 티셔츠가 포함된다. 이들 두 서브카테고리 사이의 차이의 결과로서, 서브카테고리 I에는 다양한 유형의 액티브 풋웨어(예를 들어, 운동화, 농구화, 등산화 및 테니스화)를 나타내는 네 개의 추가 서브카테고리(서브카테고리 K 내지 N)가 포함된다. 이와 대조적으로, (이 예에서는 티셔츠에 대한 카테고리인) 서브카테고리 J는 (실제 제품 데이터베이스에서는 티셔츠 제품 카테고리가 서브카테고리를 포함할 가능성이 있을지라도) 어떤 서브카테고리도 포함하지 않는다.
따라서, 각 카테고리는 제품의 보다 일반적인 카테고리 및 하나 이상의 자식 카테고리 또는 서브카테고리(보다 일반적인 카테고리 내의 더 특정한 제품 카테고리)를 나타내는 부모 카테고리(최상위 제품 카테고리를 제외함)를 갖는다. 따라서, 카테고리 E는 두 개의 서브카테고리 O와 P를 가지며, 각 서브카테고리는 두 개의 자식 제품 카테고리인 카테고리 Q 및 R과 카테고리 S 및 T를 각각 갖는다. 마찬가지로 카테고리 F는 세 개의 서브카테고리(U, V 및 W)를 갖는다.
카테고리 C는 카테고리 A를 부모 카테고리로 갖는 제품 카테고리로서 두 개의 추가 서브카테고리(G 및 H)를 포함한다. 카테고리 G는 두 개의 자식 카테고리(X 및 AF)를 포함한다. 카테고리 X는 서브카테고리 Y 및 Z를 포함하고 Y는 AA 내지 AE를 포함한다. 카테고리 H는 서브카테고리 AG 및 AH를 포함된다. 카테고리 AG는 카테고리 AI 및 AJ를 포함한다.
도 5는 일부 예시적인 실시예에 따라 특정 제품 카테고리와 연관되는 정적 페이지에 유용한 페이지 제목을 생성하기 위한 시스템의 블록도를 도시한다. 이 예에서, 페이지 명명 모듈(126)은 제품 카테고리와 연관되는 정적 페이지에 대한 페이지 명칭이 없는 제품 카테고리를 선택한다. 일부 예시적인 실시예에서, 페이지 명명 모듈(126)은 새로 생성된 제품 카테고리에 대한 페이지 명칭을 생성한다. 다른 예시적인 실시예에서, 페이지 명명 모듈(126)은 시스템의 다른 부분으로부터 요청을 수신한다.
일부 예시적인 실시예에서, 페이지 명명 모듈(126)은 제품 카테고리 식별자를 검색 용어 분석 모듈(124)로 전송한다. 일부 예시적인 실시예에서, 검색 용어 분석 모듈(124)은 특정 제품 카테고리에 대한 제품 카테고리 식별자를 사용하여 그 특정 제품 카테고리와 연관된 검색 용어 세트를 식별한다. 검색 용어 분석 모듈(124)은 저장된 검색 데이터(130)에 액세스한다. 검색 데이터(130)는 제출된 검색 쿼리의 기록, 검색 쿼리에 응답하여 전송된 검색 결과, 및 요청 사용자가 클릭한 검색 결과가 있으면 그 중 어느 것을 포함한다.
일부 예시적인 실시예에서, 검색 용어 분석 모듈(124)은 특정 제품 카테고리에 대한 정적 제품 페이지상의 사용자 클릭을 초래하는 모든 검색 쿼리를 결정한다. 일부 예시적인 실시예에서, 검색 용어는 그룹화되고, 검색 용어 분석 모듈(124)은 각 특정 검색 용어로부터 제품 페이지에 대해 모든 클릭 중 몇 퍼센트가 수신되었는지를 결정한다. 따라서 검색 용어 A는 모든 클릭 중의 20%의 결과를 초래하고, 검색 용어 B는 다음 15%의 결과를 초래하고, 검색 용어 C는 다음 10%의 결과를 초래하는 등등을 초래한다.
일부 예시적인 실시예에서, 감축 모듈(334)은 특정 제품 카테고리와 연관되는 식별된 검색 용어의 세트에 포함되는 검색 용어의 총 수를 줄인다. 이런 방식으로, 제품 카테고리의 제품 페이지에 대해 매우 드물게 클릭을 유발하는 검색 용어는 전체 용어 세트에 포함되지 않아 세트에는 아주 관련성 있는 검색 용어만 포함되는 것이 보장된다.
일부 예시적인 실시예에서, 감축 모듈(334)은 포함할 검색 용어의 수를 결정한다. 일부 예시적인 실시예에서, 검색 용어의 수는 검색 용어 관련성(예를 들어, 클릭의 특정 퍼센트)의 미리 결정된 측정치에 의해 결정되며, 기준을 만족시키는 임의의 검색 용어가 포함된다. 다른 예시적인 실시예에서, 감축 모듈(334)은 포함될 모든 클릭의 퍼센트를 결정한다. 예를 들어, 감축 모듈(334)은 80 퍼센트의 클릭을 포함한다. 첫 번째 검색 용어는 모든 클릭 중 최대 퍼센트(15 퍼센트)을 나타낸다. 각각의 추가 검색 용어가 먼저 최고 퍼센트로 시작하는 세트에 추가된다. 포함된 검색 용어가 모든 클릭 중 80 퍼센트를 나타내면, 감축 모듈(334)은 세트에 추가 용어를 추가하는 것을 중단하고 (모든 클릭 중 더 작은 퍼센트를 나타내는) 나머지 검색 용어는 세트에서 제외된다.
페이지 명명 모듈(126)은 또한 제품 카테고리 식별자를 제품 카테고리 분석 모듈(502)에 전송한다. 그 다음, 제품 카테고리 분석 모듈(502)은 제품 카테고리 데이터(134)에 액세스하여 제품 카테고리 식별자에 의해 식별되는 제품 카테고리의 명칭을 결정한다. 제품 카테고리 분석 모듈(502)은 또한 식별된 제품 카테고리와 연관되는 모든 제품 카테고리의 명칭을 식별한다. 예를 들어, 제품 카테고리 분석 모듈(502)은 식별된 제품 카테고리의 부모, 식별된 제품 카테고리의 부모의 부모 등을 식별한다. 따라서, 식별된 제품 카테고리와 연관되는 모든 제품 카테고리는 최상위 제품 카테고리까지 통틀어 식별된다.
일부 예시적인 실시예에서, 제품 카테고리 분석 모듈(502)은 모든 제품 카테고리 명칭의 세트를 잠재적 명칭 생성 모듈(504)에 전송한다. 잠재적 명칭 생성 모듈(504)은 일련의 n-그램(n-gram)을 생성한다. 각각의 n-그램은 제품 카테고리 분석 모듈(502)로부터 수신되는 모든 단어(제품 카테고리의 명칭)의 조합을 나타낸다. 다양한 n-그램은 단일 단어(1-gram), 두 단어(2-gram)의 임의의 조합 등의 잠재적 제품명을 포함한다.
잠재적 명칭 생성 모듈(504)이 복수의 잠재적 제품 페이지 명칭을 생성하면, 잠재적 명칭이 매칭 모듈(506)에 전송된다. 일부 예시적인 실시예에서, 매칭 모듈(506)은 각각의 잠재적 제품 카테고리 페이지 명칭을 검색 용어 분석 모듈(124)에 의해 생성되는 검색 용어 세트와 비교한다. 그 다음, 검색 쿼리와 매칭하는 각각의 잠재적 제품 페이지 명칭은 선택 모듈(332)로 전달된다.
하나 이상의 잠재적 제품 페이지 명칭이 선택 모듈(332)에 전달되면(예를 들어, 하나 이상의 잠재적 제품 페이지 명칭이 검색 쿼리와 매칭하면), 선택 모듈(332)은 잠재적 페이지 명칭 길이, 매칭하는 검색 쿼리의 인기도 등을 비롯한 하나 이상의 인자에 기초하여 각각의 잠재적 페이지 명칭을 순위 매김한다. 그 다음, 선택 모듈(332)은 최고 순위의 검색 쿼리를 제품 카테고리 웹 페이지 명칭(또는 제목)으로 선택한다.
도 6은 일부 예시적인 실시예에 따라, 카탈로그 명칭을 사용자가 자신의 의도를 표현하는 어휘와 매칭하는 간단한 구성요소로 세분화하는 방법(600)을 나타내는 흐름도이다. 도 6에 도시된 각각의 동작은 컴퓨터 메모리 또는 컴퓨터 판독 가능한 저장 매체에 저장되는 명령어에 대응할 수 있다. 일부 실시예에서, 도 6에서 설명되는 방법(600)은 서버 시스템(예를 들어, 도 1의 서버 시스템(120))에 의해 수행된다. 그러나, 방법(600)은 전자 하드웨어의 임의의 다른 적절한 구성에 의해 수행될 수도 있다.
일부 실시예에서, 방법(600)은 하나 이상의 프로세서 및 하나 이상의 프로세서에 의해 실행하기 위한 하나 이상의 프로그램을 저장하는 메모리를 포함하는 서버 시스템(예를 들어, 도 1의 서버 시스템(120))에서 수행된다.
일부 예시적인 실시예에서, 서버 시스템(예를 들어, 도 1의 서버 시스템(120))은 특정 제품 카테고리와 연관되는 웹 페이지의 선택을 초래하는 모든 사용자 검색 쿼리를 검색한다(602). 예를 들어, 사용자가 서버 시스템(예를 들어, 도 1의 서버 시스템(120))에 검색 쿼리를 제출할 때마다, 서버 시스템은 검색 쿼리를 기록한 다음 일련의 검색 결과를 생성한다. 일부 예시적인 실시예에서, 검색 결과는 검색 쿼리와 연관되는 웹 페이지로의 일련의 링크이다. 그 다음, 검색 결과는 (예를 들어, 디스플레이를 위해 컴퓨터 네트워크를 통해 검색 결과를 사용자의 컴퓨터로 전송함으로써) 검색 쿼리를 제출한 사용자에게 제시된다.
그 다음, 사용자는 하나 이상의 검색 결과를 선택할 수 있다. 사용자가 검색 결과의 세트에서 검색 결과를 (예를 들어, 이것을 클릭함으로써) 선택할 때, 그 선택은 서버 시스템(예를 들어, 도 1의 서버 시스템(120))으로 전송된다. 그 다음, 서버 시스템은 선택 및 검색 결과를 개시한 검색 쿼리를 기록한다. 따라서, 서버 시스템이 특정 페이지(예를 들면, 이 경우 특정 제품 카테고리에 대한 웹 페이지)의 사용자 선택을 초래한 모든 검색 쿼리를 결정해야 할 때, 서버 시스템은 사용자가 특정 페이지를 선택한 각 시간을 결정하기 위해 기록에 액세스 한 다음 검색 쿼리를 각각의 경우에 기록한다.
일부 예시적인 실시예에서, 서버 시스템(예를 들어, 도 1의 서버 시스템(120))은 복수의 잠재적 웹 페이지 명칭을 생성한다(604). 일부 예시적인 실시예에서, 서버 시스템은 명칭이 생성되는 제품 카테고리(예를 들어, 제품 카테고리의 계층 트리 내의 리프(leaf) 제품 카테고리)의 카테고리 명칭 및 임의의 상위 카테고리의 명칭에 액세스한다. 이들 카테고리 명칭 내의 단어는 복수의 상이한 구성으로(예를 들어, 상이한 수의 단어 및 상이한 순서로) 배열된다.
일부 예시적인 실시예에서, 서버 시스템(예를 들면, 도 1의 서버 시스템(120))은 잠재적 웹 페이지 명칭을 검색된 사용자 검색 쿼리와 비교한다(606). 일부 예시적인 실시예에서, 서버 시스템은 각각의 잠재적 웹 페이지 명칭마다, 검색된 사용자 검색 쿼리의 세트에서 정확히 텍스트가 매칭하는 검색 쿼리가 있는지 여부를 결정한다.
일부 예시적인 실시예에서, 서버 시스템(예를 들어, 도 1의 서버 시스템(120))은 용어 빈도(예를 들어, 잠재적 웹 페이지 명칭 내의 용어가 검색 쿼리 및 카테고리 명칭에서 얼마나 자주 발생하는지), 쿼리 빈도(예를 들면, 매칭하는 검색 쿼리가 얼마나 인기가 있었는지) 및 항목 수에 기초하여 각각의 매칭하는 잠재적 웹 페이지 명칭을 가중한다(608). 일부 예시적인 실시예에서, 서버 시스템은 매칭하는 잠재적 제품명마다 점수를 생성한다.
일부 예시적인 실시예에서, 서버 시스템(예를 들어, 도 1의 서버 시스템(120))은 미리 결정된 신뢰 기준 또는 문턱치를 만족하는 최장 잠재적 웹 페이지 명칭을 선택한다(610). 일부 예시적인 실시예에서, 문턱치는 특정 점수로서 나타낸다.
도 7a는 일부 예시적인 실시예에 따라, 카테고리 명칭을 사용자가 자신의 의도를 표현하는 어휘와 매칭하는 간단한 구성요소로 세분화하기 위한 방법(700)을 도시하는 흐름도이다. 도 7a에 도시된 각각의 동작은 컴퓨터 메모리 또는 컴퓨터 판독 가능한 저장 매체에 저장되는 명령어에 대응할 수 있다. 임의적 동작은 점선(예를 들어, 점선 테두리가 있는 박스)로 표시된다. 일부 실시예에서, 도 7a 에 설명된 방법(700)은 서버 시스템(예를 들어, 도 1의 서버 시스템(120))에 의해 수행된다. 그러나, 방법(700)은 전자 하드웨어의 임의의 다른 적절한 구성에 의해서도 또한 수행될 수 있다.
일부 실시예에서, 방법(700)은 하나 이상의 프로세서 및 하나 이상의 프로세서에 의해 실행하기 위한 하나 이상의 프로그램을 저장하는 메모리를 포함하는 서버 시스템(예를 들어, 도 1의 서버 시스템(120))에서 수행된다.
일부 예시적인 실시예에서, 서버 시스템(예를 들어, 도 1의 서버 시스템(120))은 특정 제품 카테고리와 연관되는 제품 페이지를 식별한다(702). 일부 예시적인 실시예에서, 제품 페이지는 정적 제품 페이지(예를 들어, 동적으로 생성되지 않는 제품 카테고리에 대한 웹 페이지)이다. 정적 제품 페이지는 검색을 위해 보다 쉽게 인덱스를 생성하여 사용자가 특정 제품 카테고리에 관한 정보를 보다 쉽게 찾을 수 있게 한다. 동적 제품 페이지는 다양한 제품 카테고리를 보다 유연하게 나타낼 수 있지만 콘텐츠를 미리 명확히 알 수 없기 때문에 검색용 인덱스를 생성하기가 더 어렵다.
일부 예시적인 실시예에서, 각각의 제품 카테고리는 데이터베이스에 저장되는 데이터에 의해 정의되고 제품 카테고리의 정적 웹페이지로의 링크를 포함한다.
일부 예시적인 실시예에서, 서버 시스템(예를 들어, 도 1의 서버 시스템(120))은 특정 제품 카테고리와 연관되는 제품 페이지의 사용자 선택을 수신한다(704). 예를 들어, 사용자는 서버 시스템(예를 들어, 도 1의 서버 시스템(120))으로 페이지 요청을 개시하는 제품 페이지로의 링크를 클릭한다.
일부 예시적인 실시예에서, 서버 시스템(예를 들어, 도 1의 서버 시스템(120))은 제품 페이지의 사용자 선택과 연관된 검색 쿼리를 기록한다(706). 일부 예시적인 실시예에서, 서버 시스템은 먼저 제품 페이지의 선택이 검색 쿼리와 관련이 있는지를 결정한다. 예를 들어, 웹 페이지 선택 요청은 웹 페이지 요청의 소스에 대해 서버 시스템에 알리는 메타 데이터를 포함한다. 다른 예시적인 실시예에서, 서버 시스템은 특정 클라이언트 시스템에 송신되는 모든 검색 결과의 세트를 저장하며, 웹 페이지 요청이 검색 결과에 포함된 웹 페이지에 대한 것이고 요청이 미리 결정된 시간 윈도우(예를 들어, 30초 미만) 내에서 수신되었다면, 서버 시스템은 웹 페이지 요청이 검색 결과가 클라이언트 시스템으로 송신되도록 촉구했던 검색 쿼리와 연관된다고 결정한다.
웹 페이지 요청이 특정 웹 쿼리와 연관된다는 결정에 따라, 그 다음에 그 웹 쿼리는 제품 페이지와 연관되는 웹 쿼리 세트에 저장된다.
일부 예시적인 실시예에서, 서버 시스템(예를 들어, 도 1의 서버 시스템(120))은 특정 제품 카테고리와 연관되는 검색 용어 세트에 액세스한다(708). 예를 들어, 서버 시스템은 과거 검색 쿼리 및 결과적인 사용자 선택의 데이터베이스를 저장한다. 서버 시스템은 특정 제품 카테고리와 연관되는 제품 페이지의 선택을 초래한 모든 검색 쿼리를 식별할 수 있다.
일부 예시적인 실시예에서, 서버 시스템(예를 들어, 도 1의 서버 시스템(120))은 사용자가 특정 제품 카테고리와 연관된 제품 페이지를 선택하는 각각의 인스턴스에 대한 검색 쿼리를 수집한다(710).
일부 예시적인 실시예에서, 사용자 검색 쿼리 세트 내의 각 사용자 검색 쿼리마다, 서버 시스템(예를 들어, 도 1의 서버 시스템(120))은 사용자 검색 쿼리가 미리 결정된 쿼리 관련 문턱치를 충족하는지를 결정한다(712). 일부 예시적인 실시예에서, 미리 결정된 쿼리 관련 문턱치는 각각의 사용자 검색 쿼리로부터 오는 클릭의 총 퍼센트에 기초한다. 예를 들어, 검색 쿼리 A는 제품 카테고리 웹 페이지로의 모든 방문 중의 10 퍼센트의 결과를 초래하고, 검색 용어 B는 제품 카테고리 웹 페이지로의 모든 방문 중 0.6 퍼센트의 결과를 초래한다. 미리 결정된 관련 기준이 1.5 퍼센트이면, 검색 쿼리 A는 관련 기준을 충족하고 검색 쿼리 B는 충족하지 않는 것으로 간주된다.
다른 예시적인 실시예에서, 검색 쿼리 관련 기준은 사용자가 특정 제품 카테고리 웹 페이지를 선택할 가능성에 기초한다. 예를 들어, 매우 인기 있는 검색 쿼리(예를 들어, 신발)를 제출하는 사용자는 궁극적으로 "남성 예복용 구두" 페이지에 클릭할 5 퍼센트 가능성이 있다. 반대로, "아소스 신발(Asos shoes)"을 검색하는 사용자는 "남성 예복용 구두" 페이지에 클릭할 80 퍼센트 가능성이 있을 것이다. 따라서, 검색 쿼리를 제출한 사용자 중 20 퍼센트가 특정 검색 쿼리를 입력한 이후 웹 페이지의 특정 카테고리를 클릭하는지에 기초한 기준이 정해진다면, "아소스 신발"은 기준을 충족하지만 보다 일반적인 "신발"은 충족하지 않을 것이다.
일부 예시적인 실시예에서, 서버 시스템(예를 들어, 도 1의 서버 시스템(120))은 세트에 포함될 모든 사용자 클릭의 특정 퍼센트를 결정한다. 예를 들면, 서버 시스템은 모든 클릭 중 70 퍼센트를 나타내는 검색 쿼리가 검색 쿼리 세트에 포함되도록 미리 결정했다. 이 예에서, 서버 시스템은 검색 쿼리를 총 클릭의 최고 퍼센트에서부터 최하 퍼센트까지 정렬한다. 그 다음, 서버 시스템은 최고 총 퍼센트에서 시작하여 세트에 대한 모든 검색 쿼리에 의해 나타낸 총 퍼센트가 적어도 70 퍼센트를 나타낼 때까지, 검색 쿼리를 세트에 추가한다. 나머지 검색 쿼리는 관련 기준을 충족하지 않는 것으로 결정되어 검색 쿼리의 세트에서 제외된다.
쿼리가 미리 결정된 쿼리 관련 문턱치를 충족하지 않는다는 결정에 따라, 서버 시스템(예를 들어, 도 1의 서버 시스템(120))은 사용자 검색 쿼리의 세트로부터 각각의 사용자 검색 쿼리를 제거한다(714).
일부 예시적인 실시예에서, 서버 시스템(예를 들어, 도 1의 서버 시스템(120))은 특정 제품 카테고리 및 하나 이상의 연관된 제품 카테고리에 대한 제품 카테고리 명칭을 식별한다(716). 일부 예시적인 실시예에서, 제품 카테고리는 계층 트리로 배열된다. 일부 예시적인 실시예에서, 하나 이상의 연관된 카테고리는 계층 트리에서 특정 제품 카테고리의 부모 카테고리이다.
예를 들어, 특정 제품 카테고리가 "검정 가죽 남성 신발"이면, 그 상위 카테고리는 "남성 가죽 신발", "남성 정장 구두", "남성 신발", "신발" 및 "의류"를 포함하고, 그들 각각은 계층 트리에서의 한 단계이다. 그 다음, 이러한 모든 명칭은 특정 제품 카테고리의 제품 카테고리 명칭 목록에 포함된다.
도 7b는 일부 예시적인 실시예에 따라, 카테고리 명칭을 사용자가 자신의 의도를 표현하는 어휘와 매칭하는 간단한 구성요소로 세분화하는 방법(700)을 추가 설명하는 흐름도이다. 도 7b에 도시되는 각각의 동작은 컴퓨터 메모리 또는 컴퓨터 판독 가능한 저장 매체에 저장되는 명령어에 대응할 수 있다. 임의적 동작은 점선(예를 들면, 점선 테두리가 있는 박스)로 표시된다. 일부 실시예에서, 도 7b에 설명되는 방법(700)은 서버 시스템(예를 들어, 도 1의 서버 시스템(120))에 의해 수행된다. 그러나, 설명되는 방법(700)은 전자 하드웨어의 임의의 다른 적절한 구성에 의해서도 또한 수행될 수 있다.
일부 실시예에서, 방법(700)은 하나 이상의 프로세서 및 하나 이상의 프로세서에 의해 실행하기 위한 하나 이상의 프로그램을 저장하는 메모리를 포함하는 서버 시스템(예를 들어, 도 1의 서버 시스템(120))에서 수행된다.
일부 예시적인 실시예에서, 서버 시스템(예를 들어, 도 1의 서버 시스템(120))은 식별된 제품 카테고리 명칭에 기초하여 복수의 잠재적 제품 카테고리 명칭을 생성한다(718). 일부 예시적인 실시예에서, 잠재적 제품 카테고리 명칭은 가변 개수의 단어를 포함한다. 예를 들어, 잠재적 제품 카테고리 명칭 중 일부는 단어가 하나이고, 일부는 단어가 두 개이고, 일부는 단어가 세 개이고, 등등이다.
일부 예시적인 실시예에서, 각각의 잠재적 제품 카테고리 명칭은 특정 제품 카테고리 및 하나 이상의 연관된 제품 카테고리에 대한 제품 카테고리 명칭에 포함되는 단어의 상이한 변형을 포함한다. 일부 예시적인 실시예에서, 서버 시스템(예를 들어, 도 1의 서버 시스템(120))은 특정 제품 카테고리 및 관련 제품 카테고리의 명칭 세트로부터 가능한 단어의 모든 조합을 생성한다.
일부 예시적인 실시예에서, 각각의 잠재적 제품 카테고리 명칭(720)마다, 서버 시스템(예를 들어, 도 1의 서버 시스템(120))은 각각의 잠재적 제품 카테고리 명칭을 특정 제품 카테고리와 연관되는 검색 용어 세트와 비교하여 잠재적 제품 카테고리 명칭이 검색 용어 중 임의의 검색 용어와 매칭하는지를 결정한다. 예를 들어, 잠재 제품 카테고리 명칭 각각이 모든 검색 용어와 비교되어 이것이 정확하게 매칭하는 텍스트인지를 결정한다.
각각의 잠재적 제품 카테고리 명칭이 검색 용어 중 임의의 검색 용어와 매칭한다는 결정에 따라, 서버 시스템(예를 들어, 도 1의 서버 시스템(120))은 각각의 잠재적 제품 카테고리 명칭을 매칭하는 잠재적 제품 카테고리 명칭의 세트에 추가한다(724).
일부 예시적인 실시예에서, 서버 시스템(예를 들어, 도 1의 서버 시스템(120))은 각각의 잠재적 제품 페이지 명칭에 대해 점수를 생성한다(726). 일부 예시적인 실시예에서, 잠재적 제품 명칭은 명칭의 길이, 매칭하는 사용자 검색 쿼리의 인기도 및 잠재적 제품 페이지 명칭 내의 단어의 인기도/빈도 등에 기초하여 채점한다.
일부 예시적인 실시예에서, 서버 시스템(예를 들어, 도 1의 서버 시스템(120))은 잠재적 제품 페이지 명칭을 이들의 점수에 기초하여 순위 매김하고(728), 잠재적 제품 페이지 명칭의 순위에 기초하여 제품 페이지 명칭이 선택된다.
일부 예시적인 실시예에서, 서버 시스템(예를 들어, 도 1의 서버 시스템(120))은 매칭하는 제품 페이지 명칭 세트로부터 제품 페이지 명칭을 선택하고(730), 선택된 제품 페이지 명칭을 특정 제품 카테고리와 연관되는 웹 페이지에 할당한다. 일부 예시적인 실시예에서, 그 다음에, 선택된 제품 페이지 명칭은 정적 제품 카테고리 페이지에 추가되고 그 페이지를 인덱싱하는데 사용된다.
일부 예시적인 실시예에서, 잠재적 제품 페이지 명칭은 잠재적 제품 페이지 명칭의 길이, 잠재적 제품 페이지 명칭과 매칭하는 검색 용어의 인기도 및 각 잠재적 제품 페이지 명칭을 구성하는 단어의 인기도에 기초하여 순위가 매겨진다.
일부 예시적인 실시예에서, 서버 시스템(예를 들어, 도 1의 서버 시스템(120))은 모든 제품 카테고리에 대해 선택된 제품 페이지 명칭을 분석한다. 두 카테고리가 동일한 제품 카테고리 명칭을 갖는다면, 서버 시스템은 검토를 위해 이러한 카테고리에 플래그를 지정하여, 이들이 단일 제품 카테고리에 조합되어야 하는지를 결정한다.
모듈, 구성요소, 및 로직
특정 실시예는 본 명세서에서 로직 또는 다수의 구성요소, 모듈 또는 메커니즘을 포함하는 것으로 기술된다. 모듈은 소프트웨어 모듈(예를 들어, 머신 판독 가능한 매체 상에서 구현되는 코드) 또는 하드웨어 모듈 중 하나를 구성할 수 있다. "하드웨어 모듈"은 특정 동작을 수행할 수 있는 유형의 유닛이며 특정 물리적 방식으로 구성 또는 배열될 수 있다. 다양한 예시적인 실시예에서, 하나 이상의 컴퓨터 시스템(예를 들면, 스탠드 얼론 컴퓨터 시스템, 클라이언트 컴퓨터 시스템, 또는 서버 컴퓨터 시스템) 또는 컴퓨터 시스템(예를 들어, 프로세서 또는 프로세서의 그룹)의 하나 이상의 하드웨어 모듈은 본 명세서에서 기술되는 바와 같은 특정 동작을 수행하도록 동작하는 하드웨어 모듈로서 소프트웨어(예를 들어, 애플리케이션 또는 애플리케이션 일부)에 의해 구성될 수 있다.
일부 실시예에서, 하드웨어 모듈은 기계적으로, 전자적으로 또는 이들의 임의의 적절한 조합으로 구현될 수 있다. 예를 들어, 하드웨어 모듈은 특정 동작을 수행하도록 영구적으로 구성되는 전용 회로 또는 로직을 포함할 수 있다. 예를 들어, 하드웨어 모듈은 필드 프로그래머블 게이트 어레이(Field-Programmable Gate Array, FPGA) 또는 주문형 집적 회로(Application Specific Integrated Circuit, ASIC)와 같은 특수 목적 프로세서일 수 있다. 하드웨어 모듈은 또한 특정 동작을 수행하기 위해 소프트웨어에 의해 일시적으로 구성되는 프로그래머블 로직 또는 회로를 또한 포함할 수 있다. 예를 들어, 하드웨어 모듈은 범용 프로세서 또는 다른 프로그래머블 프로세서에 의해 실행되는 소프트웨어를 포함할 수 있다. 이러한 소프트웨어에 의해 일단 구성되면 하드웨어 모듈은 구성된 기능을 수행하도록 고유하게 맞춤 제작된 특정 머신(또는 특정 머신 구성요소)이 되어 더 이상 범용 프로세서가 아니다. 기계적으로, 전용으로, 영구적으로 구성된 회로에서, 또는 (예를 들어, 소프트웨어에 의해 구성된) 일시적으로 구성된 회로에서 하드웨어 모듈을 구현하기 위한 결정은 비용 및 시간 고려 사항에 의해 추진될 수 있음을 이해할 것이다.
따라서, "하드웨어 모듈"이라는 문구는 본 명세서에서 설명되는 특정 방식으로 동작하거나 특정 동작을 수행하도록 물리적으로 구성되거나, 영구적으로 구성되거나(예를 들면, 고정 배선되거나(hardwired)), 또는 일시적으로 구성되는(예를 들면, 프로그래밍되는) 엔티티인 유형의 엔티티를 포함하는 것으로 이해하여야 한다. 본 명세서에 사용된 바와 같이, "하드웨어에 의해 구현된 모듈(hardware-implemented module)"은 하드웨어 모듈을 지칭한다. 하드웨어 모듈이 일시적으로 구성되는(예를 들어, 프로그래밍되는) 실시예를 고려하면, 하드웨어 모듈 각각은 임의의 하나의 시간 인스턴스에서 구성될 필요도 없고 인스턴스화될 필요도 없다. 예를 들어, 하드웨어 모듈이 소프트웨어에 의해 특수 목적 프로세서가 되도록 구성되는 범용 프로세서를 포함하는 경우, 범용 프로세서는 상이한 시간에 (예를 들어, 상이한 하드웨어 모듈을 포함하는) 각각 상이한 특수 목적 프로세서로서 구성될 수 있다. 따라서, 소프트웨어는 예를 들어, 특정 프로세서 또는 프로세서들을 구성하여, 하나의 시간 인스턴스에서 특정 하드웨어 모듈을 구성하고 상이한 시간 인스턴스에서 상이한 하드웨어 모듈을 구성한다.
하드웨어 모듈은 다른 하드웨어 모듈에 정보를 제공하고 다른 하드웨어 모듈로부터 정보를 수신할 수 있다. 따라서, 설명된 하드웨어 모듈은 통신 가능하게 연결되는 것으로 간주될 수 있다. 다수의 하드웨어 모듈이 동시에 존재하는 경우, 통신은 둘 이상의 하드웨어 모듈 사이에서 신호 전송을 통해 (예를 들어, 적절한 회로 및 버스를 통해) 달성될 수 있다. 다수의 하드웨어 모듈이 상이한 시간에 구성되거나 인스턴스화되는 실시예에서, 그러한 하드웨어 모듈 간의 통신은, 예를 들어, 다수의 하드웨어 모듈이 액세스하는 메모리 구조 내의 정보의 저장 및 검색을 통해 달성될 수 있다. 예를 들어, 하나의 하드웨어 모듈은 동작을 수행하고 그 동작의 출력을 이 모듈이 통신 가능하게 연결된 메모리 디바이스에 저장할 수 있다. 그런 다음 추가의 하드웨어 모듈은 그 후에, 저장된 출력을 검색하고 처리하기 위해 메모리 디바이스에 액세스할 수 있다. 하드웨어 모듈은 입력 또는 출력 디바이스와의 통신을 개시할 수도 있고, 자원(예를 들어, 정보의 모음)에 대해 동작할 수 있다.
본 명세서에서 설명되는 예시적인 방법의 다양한 동작은 관련 동작을 수행하도록 (예를 들어, 소프트웨어에 의해) 일시적으로 구성되거나 영구적으로 구성되는 하나 이상의 프로세서에 의해 적어도 부분적으로 수행될 수 있다. 일시적으로 구성되든 아니면 영구적으로 구성되든, 그러한 프로세서는 본 명세서에서 설명되는 하나 이상의 동작 또는 기능을 수행하도록 동작하는 프로세서에 의해 구현되는 모듈(processor-implemented module)을 구성할 수 있다. 본 명세서에서 사용되는 바와 같이, "프로세서에 의해 구현되는 모듈"은 하나 이상의 프로세서를 사용하여 구현되는 하드웨어 모듈을 지칭한다.
유사하게, 본 명세서에서 설명되는 방법은 적어도 부분적으로 프로세서 구현될 수 있고, 특정 프로세서 또는 프로세서들은 하드웨어의 일 예이다. 예를 들어, 방법의 동작 중 적어도 일부는 하나 이상의 프로세서 또는 프로세서에 의해 구현된 모듈에 의해 수행될 수 있다. 또한, 하나 이상의 프로세서는 "클라우드 컴퓨팅" 환경에서 또는 "서비스형 소프트웨어(software as a service)"(SaaS)로서 관련 동작의 성능을 지원하도록 동작할 수 있다. 예를 들어, 동작 중 적어도 일부는 (프로세서를 포함하는 머신의 예로서) 컴퓨터 그룹에 의해 수행될 수 있으며, 이러한 동작은 네트워크(예를 들어, 인터넷) 및 하나 이상의 적절한 인터페이스(예를 들어, 응용 프로그램 인터페이스(Application Program Interface, API)를 통해 액세스 가능하다.
특정 동작의 성능은 단일 머신 내에 존재할 뿐만 아니라 다수의 머신에 걸쳐 배치되는 프로세서 사이에 분산될 수 있다. 일부 예시적인 실시예에서, 프로세서 또는 프로세서에 의해 구현된 모듈은 단일의 지리적 위치(예를 들어, 가정 환경, 사무실 환경 또는 서버 팜 내)에 위치할 수 있다. 다른 예시적인 실시예에서, 프로세서 또는 프로세서에 의해 구현된 모듈은 다수의 지리적 위치에 걸쳐 분산될 수 있다.
머신 및 소프트웨어 아키텍처
도 1 내지 도 7과 관련하여 설명된 모듈, 방법, 애플리케이션 등은 머신 및 연관된 소프트웨어 아키텍처의 맥락에서 일부 실시예에서 구현된다. 아래의 섹션은 개시된 실시예와 함께 사용하기에 적합한 대표적인 소프트웨어 아키텍처(들) 및 머신(예를 들어, 하드웨어) 아키텍처(들)를 설명한다.
소프트웨어 아키텍처는 하드웨어 아키텍처와 관련하여 특정 목적에 맞게 맞춤 제작되는 디바이스 및 머신을 생성하는데 사용된다. 예를 들어, 특정 소프트웨어 아키텍처와 결합되는 특정 하드웨어 아키텍처는 모바일 폰, 태블릿 디바이스 등과 같은 모바일 디바이스를 생성할 것이다. 약간 다른 하드웨어 및 소프트웨어 아키텍처는 "사물 인터넷(internet of things)"에서 사용하기 위한 스마트 디바이스를 산출할 수 있지만, 또 다른 조합은 클라우드 컴퓨팅 아키텍처 내에서 사용하기 위한 서버 컴퓨터를 생성한다. 관련 기술분야의 통상의 지식을 가진 자는 본 명세서에 포함되는 개시내용과 상이한 맥락에서 본 발명의 주제를 어떻게 구현하는지 쉽게 이해할 수 있기 때문에, 그러한 소프트웨어 및 하드웨어 아키텍처의 모든 조합이 본 명세서에 제시되지는 않는다.
소프트웨어 아키텍처
도 8은 본 명세서에서 설명되는 다양한 하드웨어 아키텍처와 함께 사용될 수 있는 대표적인 소프트웨어 아키텍처(802)를 도시하는 블록도(800)이다. 도 8은 소프트웨어 아키텍처(802)의 단지 비제한적 예일뿐이고 많은 다른 아키텍처가 본 명세서에서 설명되는 기능성을 가능하게 하도록 구현될 수 있음을 알 것이다. 소프트웨어 아키텍처(802)는 다른 것들 중에서, 프로세서(910), 메모리/저장소(930), 및 I/O 구성요소(950)를 포함하는 도 9의 머신(900)과 같은 하드웨어 상에서 실행될 수 있다. 대표적인 하드웨어 계층(804)은 도 8에 도시되며 예를 들면, 도 9의 머신(900)을 나타낼 수 있다. 대표적인 하드웨어 계층(804)은 연관된 실행 가능한 명령어(808)를 갖는 하나 이상의 처리 유닛(806)을 포함한다. 실행 가능한 명령어(808)는 도 1내지 도 7의 방법, 모듈 등의 구현을 포함하는, 소프트웨어 아키텍처(802)의 실행 가능한 명령어를 나타낸다. 하드웨어 계층(804)은 또한 실행 가능한 명령어(808)를 갖는 메모리 및/또는 저장 모듈(810)을 포함한다. 하드웨어 계층(804)은 또한 머신(900)의 일부로서 도시되는 다른 하드웨어와 같은, 하드웨어 계층(804)의 임의의 다른 하드웨어를 나타내는 다른 하드웨어(812)를 포함할 수 있다.
도 8의 예시적인 아키텍처에서, 소프트웨어 아키텍처(802)는 각 계층이 특정 기능을 제공하는 계층의 스택으로서 개념화될 수 있다. 예를 들어, 소프트웨어 아키텍처(802)는 오퍼레이팅 시스템(814), 라이브러리(816), 프레임워크/미들웨어(818), 애플리케이션(820) 및 프리젠테이션 계층(844)과 같은 계층을 포함할 수 있다. 동작적으로, 애플리케이션(820) 및/또는 계층 내의 다른 구성요소는 소프트웨어 스택을 통해 애플리케이션 프로그래밍 인터페이스(API) 호출(824)을 불러올 수 있고, API 호출(824)에 응답하여 메시지(826)로서 예시되는 응답, 리턴 값 등을 수신할 수 있다. 예시된 계층은 본질적으로 대표적이며 모든 소프트웨어 아키텍처가 모든 계층을 갖는 것은 아니다. 예를 들어, 일부 모바일 또는 특수 목적 오퍼레이팅 시스템은 프레임워크/미들웨어(818) 계층을 제공하지 않을 수도 있고, 다른 일부는 그러한 계층을 제공할 수도 있다. 다른 소프트웨어 아키텍처는 추가 계층 또는 상이한 계층을 포함할 수 있다.
오퍼레이팅 시스템(814)은 하드웨어 자원을 관리하고 공통 서비스를 제공할 수 있다. 오퍼레이팅 시스템(814)은 예를 들어, 커널(828), 서비스(830) 및 드라이버(832)를 포함할 수 있다. 커널(828)은 하드웨어와 다른 소프트웨어 계층 사이의 추상화 계층으로서 작용할 수 있다. 예를 들어, 커널(828)은 메모리 관리, 프로세서 관리(예를 들어, 스케줄링), 구성요소 관리, 네트워킹, 보안 설정 등을 담당할 수 있다. 서비스(830)는 다른 소프트웨어 계층을 위한 다른 공통 서비스를 제공할 수 있다. 드라이버(832)는 하부 하드웨어를 제어하거나 인터페이스하는 책임이 있을 수 있다. 예를 들어, 드라이버(832)는 하드웨어 구성에 따라, 디스플레이 드라이버, 카메라 드라이버, 블루투스(Bluetooth®) 드라이버, 플래시 메모리 드라이버, 직렬 통신 드라이버(예를 들어, 범용 직렬 버스(Universal Serial Bus, USB) 드라이버), 와이파이(Wi-Fi®) 드라이버, 오디오 드라이버, 전력 관리 드라이버 등을 포함할 수 있다.
라이브러리(816)는 애플리케이션(820) 또는 다른 구성요소 또는 계층에 의해 이용될 수 있는 공통 인프라스트럭처를 제공할 수 있다. 라이브러리(816)는 통상 다른 소프트웨어 모듈이 기본 오퍼레이팅 시스템(814) 기능성(예를 들어, 커널(828), 서비스(830) 및/또는 드라이버(832))과 직접 인터페이스하는 것보다 쉬운 방식으로 작업을 수행할 수 있게 하는 기능성을 제공한다. 라이브러리(816)는 메모리 할당 기능, 문자열 조작 기능, 수학 기능 등과 같은 기능을 제공할 수 있는 시스템 라이브러리(834)(예를 들어, C 표준 라이브러리)를 포함할 수 있다. 또한, 라이브러리(816)는 미디어 라이브러리(예를 들어, MPEG4, H.264, MP3, AAC, AMR, JPG, PNG와 같은 다양한 미디어 포맷의 표현 및 조작을 지원하는 라이브러리), 그래픽 라이브러리(예를 들어, 디스플레이에 2D 및 3D 그래픽 콘텐츠를 렌더링하는데 사용할 수 있는 OpenGL 프레임워크), 데이터베이스 라이브러리(예를 들어, 다양한 관계형 데이터베이스 기능을 제공할 수 있는 SQLite), 웹 라이브러리(예를 들어, 웹 브라우징 기능을 제공할 수 있는 WebKit) 등과 같은 API 라이브러리(836)를 포함할 수 있다. 라이브러리(816)는 또한 많은 다른 API를 애플리케이션(820) 및 다른 소프트웨어 구성요소/모듈에 제공하기 위한 광범위하게 다양한 다른 라이브러리(838)를 포함할 수 있다.
프레임워크/미들웨어(818)는 애플리케이션(820) 또는 다른 소프트웨어 구성요소/모듈에 의해 이용될 수 있는 상위 레벨의 공통 인프라스트럭처를 제공할 수 있다. 예를 들어, 프레임워크/미들웨어(818)는 다양한 그래픽 사용자 인터페이스(graphic user interface, GUI) 기능, 상위 레벨 자원 관리, 상위 레벨 로케이션 서비스 등을 제공할 수 있다. 프레임워크/미들웨어(818)는 애플리케이션(820) 또는 다른 소프트웨어 구성요소/모듈에 의해 이용될 수 있는 다양한 스펙트럼의 다른 API를 제공할 수 있고, 다른 소프트웨어 구성요소/모듈 중 일부는 특정 오퍼레이팅 시스템 또는 플랫폼에 특정될 수 있다.
애플리케이션(820)은 빌트인 애플리케이션(840) 또는 제3자 애플리케이션(842)을 포함한다. 대표적인 빌트인 애플리케이션(840)의 예는 이것으로 제한되는 것은 아니지만, 콘택트 애플리케이션(contacts application), 브라우저 애플리케이션, 북 리더 애플리케이션, 로케이션 애플리케이션, 미디어 애플리케이션, 메시징 애플리케이션 또는 게임 애플리케이션을 포함할 수 있다. 제3자 애플리케이션들(842)은 내장 애플리케이션(840)뿐만 아니라 광범위한 다른 애플리케이션 중 임의의 애플리케이션을 포함할 수 있다. 특정 예에서, 제3자 애플리케이션(842)(예를 들어, 특정 플랫폼의 벤더 이외의 엔티티에 의해 Android™ 또는 iOS™ 소프트웨어 개발 킷(software development kit, SDK)을 사용하여 개발되는 애플리케이션)은 iOS™, Android™, Windows® 폰 또는 기타 모바일 오퍼레이팅 시스템과 같은 모바일 오퍼레이팅 시스템 상에서 실행되는 모바일 소프트웨어일 수 있다. 이 예에서, 제3자 애플리케이션(842)은 본 명세서에서 기술되는 기능을 용이하게 하기 위해 오퍼레이팅 시스템(814)와 같은 모바일 오퍼레이팅 시스템에 의해 제공되는 API 호출(824)을 불러올 수 있다.
애플리케이션(820)은 시스템의 사용자와 상호 작용하는 사용자 인터페이스를 생성하기 위해 내장된 오퍼레이팅 시스템 기능(예를 들어, 커널(828), 서비스(830) 및/또는 드라이버(832)), 라이브러리(예를 들어, 시스템 라이브러리(834), API 라이브러리(836) 및 다른 라이브러리(838)), 및 프레임워크/미들웨어(818)를 이용할 수 있다. 대안으로 또는 부가적으로, 일부 시스템에서, 사용자와의 상호 작용은 프리젠테이션 계층(844)과 같은 프리젠테이션 계층을 통해 발생할 수 있다. 이들 시스템에서, 애플리케이션/모듈 "로직"은 사용자와 상호 작용하는 애플리케이션/모듈의 양상과 분리될 수 있다.
일부 소프트웨어 아키텍처는 가상 머신을 이용한다. 도 8의 예에서, 이것은 가상 머신(848)에 의해 도시된다. 가상 머신은 애플리케이션/모듈이 하드웨어 머신(예를 들어, 도 9의 머신(900)) 상에서 실행중인 것처럼 실행할 수 있는 소프트웨어 환경을 생성한다. 가상 머신은 호스트 오퍼레이팅 시스템(예를 들어, 오퍼레이팅 시스템(814))에 의해 호스팅되고, 통상 항상 그렇지는 않지만, 호스트 오퍼레이팅 시스템(예를 들어, 오퍼레이팅 시스템 (814))와의 인터페이스뿐만 아니라 가상 머신(848)의 동작을 관리하는 가상 머신 모니터(846)를 구비한다. 소프트웨어 아키텍처는 오퍼레이팅 시스템(850), 라이브러리(852), 프레임워크(854), 애플리케이션(856), 또는 프리젠테이션 계층(858)과 같은 가상 머신(848) 내에서 실행된다. 가상 머신(848) 내에서 실행되는 소프트웨어 아키텍처의 이들 계층은 이전에 기술된 대응 계층과 동일할 수 있거나 상이할 수 있다.
예시적인 머신 아키텍처 및 머신 판독 가능한 매체
도 9는 머신 판독 가능한 매체(예를 들어, 머신 판독 가능한 저장 매체)로부터의 명령어를 판독하고 본 명세서에서 논의되는 방법론 중 임의의 하나 이상의 방법론을 수행할 수 있는 일부 예시적인 실시예에 따른 머신(900)의 구성요소를 도시하는 블록도이다. 구체적으로, 도 9는 컴퓨터 시스템의 예시적인 형태의 머신(900)의 도식화된 표현을 도시하는데, 컴퓨터 시스템 내에서 머신(900)이 본 명세서에서 논의되는 방법론 중 임의의 하나 이상의 방법론을 수행하게 하기 위한 명령어(916)(예를 들어, 소프트웨어, 프로그램, 애플리케이션, 애플릿, 앱, 또는 다른 실행 가능한 코드)가 실행될 수 있다. 예를 들어, 명령어(916)는 머신(900)이 도 5 내지 도 7의 흐름도를 실행하게 할 수 있다. 명령어(916)는 일반적인 프로그램되지 않은 머신(900)을, 설명되는 방식으로 설명되고 도시된 기능을 수행하도록 프로그램된 특정 머신으로 변환한다. 다른 실시예에서, 머신(900)은 스탠드얼론 디바이스로서 동작하거나 다른 머신에 연결(예를 들어, 네트워크화)될 수 있다. 네트워크화된 배치에서, 머신(900)은 서버-클라이언트 네트워크 환경에서 서버 머신 또는 클라이언트 머신의 입장으로서 동작하거나 피어-투-피어(또는 분산) 네트워크 환경에서 피어 머신으로서 동작할 수 있다. 머신(900)은 이것으로 제한되는 것은 아니지만, 서버 컴퓨터, 클라이언트 컴퓨터, 개인용 컴퓨터(PC), 태블릿 컴퓨터, 랩톱 컴퓨터, 넷북, 셋톱 박스(set-top box, STB), 개인 휴대 정보 단말기(personal digital assistant, PDA), 엔터테인먼트 미디어 시스템, 셀룰러 폰, 스마트폰, 모바일 디바이스, 웨어러블 디바이스(예를 들어, 스마트 시계), 스마트 홈 디바이스(예를 들어, 스마트 기기), 기타 스마트 디바이스, 웹 어플라이언스, 네트워크 라우터, 네트워크 스위치, 네트워크 브릿지, 또는 머신(900)에 의해 취해질 동작을 지정하는 명령어(916)를 순차적으로 또는 다른 방식으로 실행할 수 있는 임의의 머신을 포함할 수 있다. 또한, 단 하나의 머신(900)이 도시되지만, "머신"이라는 용어는 본 명세서에서 논의되는 방법론 중 임의의 하나 이상의 방법론을 수행하기 위해 개별적으로 또는 공동으로 명령어(916)를 실행하는 머신(900)의 모음을 포함하는 것으로 받아들여져야 한다.
머신(900)은 예컨대 버스(902)를 통해 서로 통신하도록 구성될 수 있는 프로세서(910), 메모리/저장소(930) 및 I/O 구성요소(950)를 포함할 수 있다. 예시적인 실시예에서, 프로세서(910)(예를 들면, 중앙 처리 유닛(CPU), 축소 명령어 집합 컴퓨팅(Reduced Instruction Set Computing, RISC) 프로세서, 복잡 명령어 집합 컴퓨팅(Complex Instruction Set Computing, CISC) 프로세서, 그래픽 처리 유닛(Graphics Processing Unit, GPU), 디지털 신호 프로세서(Digital Signal Processor, DSP), 주문형 반도체(ASIC), 무선 주파수 집적 회로(Radio-Frequency Integrated Circuit, RFIC), 다른 프로세서, 또는 이들의 임의의 적절한 조합)는 예를 들어, 명령어(916)를 실행할 수 있는 프로세서(912) 및 프로세서(914)를 포함할 수 있다. “프로세서”라는 용어는 동시에 명령어(916)를 실행할 수 있는 두 개 이상의 독립적인 프로세서(때로는 "코어"라고도 함)를 포함할 수 있는 멀티 코어 프로세서를 포함할 수 있다. 도 9에서 다수의 프로세서(910)가 도시되지만, 머신(900)은 단일 코어를 갖는 단일 프로세서, 다중 코어를 갖는 단일 프로세서(예를 들어, 멀티 코어 프로세서), 단일 코어를 갖는 다중 프로세서, 다중 코어를 갖는 다중 프로세서, 또는 이들의 임의의 조합을 포함할 수 있다.
메모리/저장소(930)는 둘 모두 예컨대 버스(902)를 통해 프로세서(910)에 액세스 가능한, 예컨대 메인 메모리 또는 다른 메모리 저장소와 같은 메모리(932), 및 저장 유닛(936)을 포함할 수 있다. 저장 유닛(936) 및 메모리(932)는 본 명세서에 설명되는 방법론 또는 기능 중 임의의 하나 이상의 방법론 또는 기능을 구현하는 명령어(916)를 저장한다. 또한, 명령어(916)는 머신(900)에 의해 실행되는 동안 프로세서(910) 중 적어도 하나의 프로세서 내에(예를 들어, 프로세서의 캐시 메모리 내에), 또는 이들의 임의의 적절한 조합 내에 완전히 또는 부분적으로 상주할 수 있다. 따라서, 메모리(932), 저장 유닛(936), 프로세서(910)의 메모리는 머신 판독 가능한 매체의 예이다.
본 명세서에 사용된 바와 같이, "머신 판독 가능한 매체"는 명령어 및 데이터를 일시적으로 또는 영구적으로 저장할 수 있는 디바이스를 의미하며, 이것으로 제한되는 것은 아니지만, 랜덤 액세스 메모리(random-access memory, RAM), 판독 전용 메모리(read-only memory, ROM), 버퍼 메모리, 플래시 메모리, 광학 매체, 자기 매체, 캐시 메모리, 다른 유형의 저장소(예를 들어, 소거 가능한 프로그램 가능 판독 전용 메모리(Erasable Programmable Read-Only Memory, EEPROM)) 또는 이들의 임의의 적절한 조합을 포함할 수 있다. "머신 판독 가능한 매체"라는 용어는 명령어(916)를 저장할 수 있는 단일 매체 또는 다중 매체(예를 들어, 중앙 집중형 또는 분산형 데이터베이스, 또는 연관된 캐시 및 서버)를 포함하는 것으로 취급되어야 한다. "머신 판독 가능한 매체"라는 용어는 또한 머신(예를 들어, 머신(900))에 의해 실행하기 위한 명령어(예를 들어, 명령어(916))를 저장 또는 반송할 수 있는 임의의 매체 또는 다중 매체의 조합을 포함하는 것으로 취급될 것이며, 따라서 명령어는 머신(900)의 하나 이상의 프로세서(예를 들어, 프로세서(910))에 의해 실행될 때 머신(900)으로 하여금 본 명세서에서 설명되는 방법론 중 임의의 하나 이상의 방법론을 수행하도록 한다. 따라서, "머신 판독 가능한 매체"는 단일 저장소 디바이스 또는 디바이스뿐만 아니라 다수의 저장 장치 또는 디바이스를 포함하는 "클라우드 기반" 저장 시스템 또는 저장 네트워크도 또한 지칭한다. "머신 판독 가능한 매체"라는 용어는 신호 또는 전송 매체를 포함한다.
I/O 구성요소(950)는 입력을 수신하고, 출력을 제공하고, 출력을 생성하고, 정보를 전송하고, 정보를 교환하고, 측정을 포착하는 등을 위한 다양한 구성요소를 포함할 수 있다. 특정 머신에 포함되는 특정 I/O 구성요소(950)는 머신의 유형에 따라 달라질 것이다. 예를 들어, 모바일 폰과 같은 휴대용 머신에는 터치 입력 디바이스 또는 다른 그러한 입력 메커니즘이 포함될 수 있지만 헤드리스 서버 머신에는 그러한 터치 입력 디바이스가 포함되지 않을 수 있다. I/O 구성요소(950)는 도 9에 도시되지 않는 많은 다른 구성요소를 포함할 수 있음을 인식할 것이다. I/O 구성요소(950)는 단지 다음의 논의를 단순화하기 위해 기능에 따라 그룹화되며, 그룹화는 결코 제한하는 것이 아니다. 다양한 예시적인 실시예에서, I/O 구성요소(950)는 출력 구성요소(952) 및 입력 구성요소(954)를 포함할 수 있다. 출력 구성요소(952)는 시각 구성요소(예를 들어, 플라즈마 디스플레이 패널(plasma display panel, PDP), 발광 다이오드(light emitting diode, LED) 디스플레이, 액정 디스플레이(liquid crystal display, LCD), 프로젝터 또는 음극선관(cathode ray tube, CRT)), 음향 구성요소(예를 들어, 스피커), 햅틱 구성요소(예를 들어, 진동 모터, 저항 메커니즘), 기타 신호 발생기 등을 포함할 수 있다. 입력 구성요소(954)는 영숫자 입력 구성요소(예를 들어, 키보드, 영숫자 입력을 수신하도록 구성되는 터치 스크린, 광-광학 키보드(photo-optical keyboard) 또는 다른 영숫자 입력 구성요소), 포인트 기반 입력 구성요소(예를 들어, 마우스, 터치 패드, 트랙볼, 조이스틱, 모션 센서, 또는 다른 포인팅 도구), 촉각 입력 구성요소(예를 들어, 물리적 버튼, 터치 또는 터치 제스처의 위치 및/또는 힘을 제공하는 터치 스크린, 또는 기타 촉각 입력 구성요소), 오디오 입력 구성요소(예를 들어, 마이크로폰) 등을 포함할 수 있다.
또 다른 예시적인 실시예에서, I/O 구성요소(950)는 다른 구성요소의 광범위한 배열 중에서 생체 인식 구성요소(956), 모션 구성요소(958), 환경 구성요소(960) 또는 위치 구성요소(962)를 포함할 수 있다. 예를 들어, 생체 인식 구성요소(956)는 표현(예를 들어, 손 표현, 얼굴 표정, 음성 표현, 몸짓 또는 눈 추적)을 검출하고, 생체 신호(예를 들어, 혈압, 심장 박동수, 체온, 땀 또는 뇌파)를 측정하고, 사람을 식별(예를 들어, 음성 식별, 망막 식별, 안면 식별, 지문 식별 또는 뇌파 기반 식별)하는 등을 하는 구성요소를 포함할 수 있다. 모션 구성요소(958)는 가속도 센서 구성요소(예를 들어, 가속도계), 중력 센서 구성요소, 회전 센서 구성요소(예를 들어, 자이로스코프) 등을 포함할 수 있다. 환경 구성요소(960)는 예를 들어 조명 센서 구성요소(예를 들어, 광도계), 온도 센서 구성요소(예를 들어, 주변 온도를 검출하는 하나 이상의 온도계), 습도 센서 구성요소, 압력 센서 구성요소(예를 들어, 기압계), 음향 센서 구성요소(예를 들어, 배경 잡음을 검출하는 하나 이상의 마이크로폰), 근접 센서 구성 요소(예를 들어, 근처의 물체를 검출하는 적외선 센서), 가스 센서(예를 들어, 안전을 위해 유해 가스의 농도를 감지하거나 대기의 오염 물질을 측정하기 위한 가스 감지 센서), 또는 주변 물리적 환경에 대응하는 표시, 측정 또는 신호를 제공할 수 있는 기타 구성요소를 포함할 수 있다. 위치 구성 요소(962)는 위치 센서 구성 요소(예를 들어, 위성 위치 추적 시스템(Global Position System, GPS) 수신기 구성요소), 고도 센서 구성요소(예를 들어, 고도가 유도될 수 있는 공기압을 검출하는 고도계 또는 기압계), 방향 센서 구성요소(예를 들어, 자력계) 등을 포함할 수 있다.
통신은 다양한 기술을 사용하여 구현될 수 있다. I/O 구성요소(950)는 머신(900)을 각각 커플링(982) 및 커플링(972)을 통해 네트워크(980) 또는 디바이스(970)에 연결하도록 동작 가능한 통신 구성요소(964)를 포함할 수 있다. 예를 들어, 통신 구성요소(964)는 네트워크(980)와 인터페이스하기 위한 네트워크 인터페이스 구성요소 또는 다른 적합한 디바이스를 포함할 수 있다. 또 다른 예에서, 통신 구성요소(964)는 유선 통신 구성요소, 무선 통신 구성요소, 셀룰러 통신 구성요소, 근거리 통신(Near Field Communication, NFC) 구성요소, 블루투스(Bluetooth®) 구성요소(예를 들어, Bluetooth® 저에너지), Wi-Fi® 구성요소, 및 다른 방식으로 통신할 수 있는 다른 통신 구성요소를 포함할 수 있다. 디바이스(970)는 다른 머신 또는 임의의 다양한 주변 디바이스(예를 들어, 범용 직렬 버스(Universal Serial Bus, USB)를 통해 연결되는 주변 디바이스)일 수 있다.
더욱이, 통신 구성요소(964)는 식별자를 검출하거나 식별자를 검출하도록 동작할 수 있는 구성요소를 포함할 수 있다. 예를 들어, 통신 구성요소(964)는 무선 주파수 식별(Radio Frequency Identification, RFID) 태그 판독기 구성요소, NFC 스마트 태그 검출 구성요소, 광학 판독기 구성요소(예를 들어, 유니버설 제품 코드(Universal Product Code, UPC) 바 코드와 같은 일 차원 바코드, QR(Quick Response) 코드, 아즈텍 코드(Aztec code), 데이터 매트릭스(Data Matrix), 데이터글리프(Dataglyph), 맥시코드(MaxiCode), PDF417, 울트라(Ultra) 코드, UCC RSS-2D 바코드, 및 기타 광학 코드를 감지하는 광학 센서), 또는 음향 탐지 구성요소(예를 들어, 태그된 오디오 신호를 식별하는 마이크로폰)를 포함할 수 있다. 또한, 인터넷 프로토콜(Internet Protocol, IP) 지리적 위치, Wi-Fi® 신호 삼각 측량을 통한 위치, 특정 위치를 표시할 수 있는 NFC 비콘 신호 검출을 통한 위치 등을 통한 위치와 같이, 통신 구성요소(964)를 통해 다양한 정보가 도출될 수 있다.
전송 매체
다양한 예시적인 실시예에서, 네트워크(980)의 하나 이상의 부분은 애드혹 네트워크(ad hoc network), 인트라넷, 엑스트라넷, 가상 사설망(virtual private network, VPN), 근거리 통신망(LAN), 무선 LAN(wireless LAN, WLAN), 광역 통신망(wide area network, WAN), 무선 WAN(wireless WAN, WWAN), 도시 지역 네트워크(MAN), 인터넷, 인터넷의 일부, 공중 전화 교환망(Public Switched Telephone Network, PSTN)의 일부, 기존 전화 서비스(plain old telephone service, POTS) 네트워크, 셀룰러 전화 네트워크, 무선 네트워크, Wi-Fi®네트워크, 다른 유형의 네트워크, 또는 둘 이상의 이러한 네트워크의 조합일 수 있다. 예를 들어, 네트워크(980) 또는 네트워크(980)의 일부는 무선 또는 셀룰러 네트워크를 포함할 수 있고, 커플링(982)은 코드 분할 다중 접속(Code Division Multiple Access, CDMA) 접속, 글로벌 모바일 통신 시스템(Global System for Mobile communications, GSM) 접속, 또는 다른 유형의 셀룰러 또는 무선 커플링일 수 있다. 이 예에서, 커플링(982)은 단일 반송파 무선 전송 기술(Single Carrier Radio Transmission Technology, 1xRTT), 진화-데이터 최적화(Evolution-Data Optimized, EVDO) 기술, 일반 패킷 무선 서비스(General Packet Radio Service, GPRS) 기술, GSM 진화를 위한 향상된 데이터 속도(Enhanced Data rates for GSM Evolution, EDGE) 기술, 3G를 포함하는3 세대 파트너십 프로젝트(third Generation Partnership Project, 3GPP), 4 세대 무선(fourth generation wireless, 4G) 네트워크, 범용 이동 통신 시스템 (Universal Mobile Telecommunications System, UMTS), 고속 패킷 접속(High Speed Packet Access, HSPA), 와이맥스(Worldwide Interoperability for Microwave Access, WiMAX), 롱 텀 에볼루션(Long Term Evolution, LTE) 표준, 다양한 표준 설정 기관에 의해 정의되는 다른 것, 기타 장거리 프로토콜, 또는 기타 데이터 전송 기술과 같은 다양한 유형의 데이터 전송 기술 중 임의의 기술을 구현할 수 있다.
명령어(916)는 네트워크 인터페이스 디바이스(예를 들어, 통신 구성요소(964)에 포함되는 네트워크 인터페이스 구성요소)를 통해 전송 매체를 사용하고 다수의 공지된 전송 프로토콜(예를 들어, 하이퍼텍스트 전송 프로토콜(hypertext transfer protocol, HTTP)) 중 임의의 프로토콜을 사용하여 네트워크(980)를 통해 송신되거나 수신될 수 있다. 유사하게, 명령어(916)는 전송 매체를 사용하여 커플링(972)(예를 들어, 피어 투 피어 커플링)을 통해 디바이스(970)에 송신 또는 수신될 수 있다. "전송 매체"라는 용어는 머신(900)에 의한 실행을 위해 명령어(916)를 저장, 인코딩 또는 전달할 수 있고 디지털 또는 아날로그 통신 신호를 포함하는 임의의 무형 매체, 또는 그러한 소프트웨어의 통신을 용이하게 하는 다른 무형의 매체를 포함하는 것으로 취급될 것이다. 전송 매체는 머신 판독 가능한 매체의 일 실시예이다.
다음의 번호가 매겨진 예는 실시예이다.
1. 방법은,
특정 제품 카테고리와 연관되는 검색 용어 세트에 액세스하는 단계와,
특정 제품 카테고리 및 하나 이상의 연관된 제품 카테고리에 대한 제품 카테고리 명칭을 식별하는 단계와,
식별된 제품 카테고리 명칭에 기초하여 복수의 잠재적 제품 카테고리 명칭을 생성하는 단계와,
각각의 잠재적 제품 카테고리 명칭에 대해,
잠재적 제품 카테고리 명칭이 검색 용어 중 임의의 검색 용어와 매칭하는지 여부를 결정하기 위해 각각의 잠재적 제품 카테고리 명칭을 특정 제품 카테고리와 연관되는 검색 용어 세트와 비교하는 단계와,
각각의 잠재적 제품 카테고리 명칭이 검색 용어 중 임의의 검색 용어와 매칭한다는 결정에 따라, 각각의 잠재적 제품 카테고리 명칭을 매칭하는 잠재적 제품 카테고리 명칭의 세트에 추가하는 단계와,
매칭하는 잠재적 제품 카테고리 명칭의 세트로부터 제품 페이지 명칭을 선택하고 선택된 제품 페이지 명칭을 특정 제품 카테고리와 연관되는 웹 페이지에 할당하는 단계를 포함한다.
2. 예 1의 방법은,
특정 제품 카테고리와 연관되는 제품 페이지를 식별하는 단계와,
특정 제품 카테고리와 연관되는 제품 페이지의 사용자 선택을 수신하는 단계와,
제품 페이지의 사용자 선택과 연관되는 검색 쿼리를 기록하는 단계를 포함한다.
3. 예 2의 방법에서, 특정 제품 카테고리와 연관되는 검색 용어 세트에 액세스하는 단계는,
사용자가 특정 제품 카테고리와 연관되는 제품 페이지를 선택하는 각각의 인스턴스에 대해 검색 쿼리를 수집하는 단계를 더 포함한다.
4. 예 1 내지 예 3 중 어느 한 예의 방법에서, 제품 카테고리는 계층 트리(hierarchical tree)로 배열된다.
5. 예 4의 방법에서, 하나 이상의 연관된 제품 카테고리는 계층 트리에서 특정 제품 카테고리의 부모 카테고리이다.
6. 예1 내지 예5 중 어느 한 예의 방법에서, 제품 카테고리 명칭의 각 잠재적 제품 카테고리 명칭은 가변 개수의 단어를 포함한다.
7. 예 6의 방법에서, 각각의 잠재적 제품 카테고리 명칭은 특정 제품 카테고리 및 하나 이상의 연관된 제품 카테고리에 대한 제품 카테고리 명칭에 포함되는 단어의 상이한 변형을 포함한다.
8. 예 1 내지 예7 중 어느 한 예의 방법은,
각각의 잠재적 제품 페이지 명칭에 대해 점수를 생성하는 단계와,
잠재적인 제품 페이지 명칭을 이들의 점수에 기초하여 순위 매김하는 단계를 더 포함하고, 제품 페이지 명칭은 잠재적인 제품 페이지 명칭의 순위에 기초하여 선택된다.
9. 예 8의 방법에서, 잠재적 제품 페이지 명칭은 잠재적 제품 페이지 명칭의 길이, 잠재적 제품 페이지 명칭과 매칭하는 검색 용어의 인기도 및 각 잠재적 제품 페이지 명칭을 구성하는 단어의 인기도에 기초하여 순위가 매겨진다.
10. 예 2의 방법은,
제품 페이지의 사용자 선택과 연관되는 각각의 검색 쿼리에 대해, 검색 쿼리가 미리 결정된 쿼리 관련 문턱값을 충족하는지를 결정하는 단계와,
검색 쿼리가 미리 결정된 쿼리 관련 문턱치를 충족하지 않는다는 결정에 따라, 검색 용어 세트로부터 각각의 검색 쿼리를 제거하는 단계를 더 포함한다.
11. 시스템은,
하나 이상의 프로세서와,
메모리와,
메모리에 저장되는 하나 이상의 프로그램을 포함하고, 하나 이상의 프로그램은,
특정 제품 카테고리와 연관되는 검색 용어 세트에 액세스하고,
특정 제품 카테고리 및 하나 이상의 연관된 제품 카테고리에 대한 제품 카테고리 명칭을 식별하고,
식별된 제품 카테고리 명칭에 기초하여 복수의 잠재적 제품 카테고리 명칭 생성하고,
각각의 잠재적 제품 카테고리 명칭에 대해,
잠재적 제품 카테고리 명칭이 검색 용어 중 임의의 검색 용어와 매칭하는지 여부를 결정하기 위해 각각의 잠재적 제품 카테고리 명칭을 특정 제품 카테고리와 연관되는 검색 용어 세트와 비교하고,
각각의 잠재적 제품 카테고리 명칭이 검색 용어 중 임의의 검색 용어와 매칭한다는 결정에 따라, 각각의 잠재적 제품 카테고리 명칭을 매칭하는 잠재적 제품 카테고리 명칭의 세트에 추가하고,
매칭하는 잠재적인 제품 카테고리 명칭의 세트로부터 제품 페이지 명칭을 선택하고 선택된 제품 페이지 명칭을 특정 제품 카테고리와 연관되는 웹 페이지에 할당하기 위한 명령어를 포함한다.
12. 예 11의 시스템은,
특정 제품 카테고리와 연관되는 제품 페이지를 식별하고,
특정 제품 카테고리와 연관되는 제품 페이지의 사용자 선택을 수신하고,
제품 페이지의 사용자 선택과 연관되는 검색 쿼리를 기록하는 것을 포함한다.
13. 예 12의 시스템에서, 특정 제품 카테고리와 연관되는 검색 용어의 세트에 액세스하는 것은,
사용자가 특정 제품 카테고리와 연관되는 제품 페이지를 선택하는 각각의 인스턴스에 대해 검색 쿼리를 수집하는 것을 더 포함한다.
14. 예 11 내지 예 13 중 어느 한 예의 시스템에서, 제품 카테고리는 계층 트리로 배열된다.
15. 예 14의 시스템에서, 하나 이상의 연관된 제품 카테고리는 계층 트리에서 특정 제품 카테고리의 부모 카테고리이다.
16. 컴퓨터 판독 가능한 저장 매체는, 머신의 하나 이상의 프로세서에 의해 실행될 때, 머신으로 하여금, 특정 제품 카테고리와 연관되는 검색 용어 세트에 액세스하는 것과,
특정 제품 카테고리 및 하나 이상의 연관된 제품 카테고리에 대한 제품 카테고리 명칭을 식별하는 것과,
식별된 제품 카테고리 명칭에 기초하여 복수의 잠재적 제품 카테고리 명칭을 생성하는 것과,
각각의 잠재적 제품 카테고리 명칭에 대해,
잠재적 제품 카테고리 명칭이 검색 용어 중 임의의 검색 용어와 매칭하는지 여부를 결정하기 위해 각각의 잠재적 제품 카테고리 명칭을 특정 제품 카테고리와 연관되는 검색 용어 세트와 비교하는 것과,
각각의 잠재적 제품 카테고리 명칭이 검색 용어 중 임의의 검색 용어와 매칭한다는 결정에 따라, 각각의 잠재적 제품 카테고리 명칭을 매칭하는 잠재적 제품 카테고리 명칭의 세트에 추가하는 것과,
매칭하는 잠재적 제품 카테고리 명칭의 세트로부터 제품 페이지 명칭을 선택하고 선택된 제품 페이지 명칭을 특정 제품 카테고리와 연관되는 웹 페이지에 할당하는 것을 포함하는 동작을 수행하게 하는 명령어를 갖는다.
17. 예 16의 컴퓨터 판독 가능한 저장 매체는,
특정 제품 카테고리와 연관되는 제품 페이지를 식별하는 것과,
특정 제품 카테고리와 연관되는 제품 페이지의 사용자 선택을 수신하는 것과,
제품 페이지의 사용자 선택과 연관되는 검색 쿼리를 기록하는 것을 더 포함한다.
18. 예 17의 컴퓨터 판독 가능한 저장 매체에서, 특정 제품 카테고리와 연관되는 검색 용어 세트에 액세스하는 것은,
사용자가 특정 제품 카테고리와 연관되는 제품 페이지를 선택하는 각각의 인스턴스에 대한 검색 쿼리를 수집하는 것을 더 포함한다.
19. 예 16 내지 예 18 중 어느 한 예의 컴퓨터 판독 가능한 저장 매체에서, 제품 카테고리는 계층 트리로 배열된다.
20. 예 19의 컴퓨터 판독 가능한 매체에서, 하나 이상의 연관된 제품 카테고리는 계층 트리에서 특정 제품 카테고리의 부모 카테고리이다.
21. 컴퓨터 판독 가능한 매체는 머신의 하나 이상의 프로세서에 의해 실행될 때, 머신으로 하여금 예 1 내지 예 10 중 어느 한 예의 방법을 수행하게 하는 명령어를 반송한다.
언어
본 명세서 전체에서, 복수의 인스턴스는 단일의 인스턴스로서 설명되는 구성요소, 동작 또는 구조를 구현할 수 있다. 하나 이상의 방법의 개별 동작이 별개의 동작으로 도시되고 설명되지만, 개별 동작 중 하나 이상은 동시에 수행될 수 있으며, 동작이 도시된 순서대로 수행될 필요는 없다. 예시적인 구성에서 별개의 구성요소로 제시되는 구조 및 기능성은 결합된 구조 또는 구성요소로서 구현될 수 있다. 유사하게, 단일의 구성요소로 제시되는 구조 및 기능성은 별개의 구성요소로서 구현될 수 있다. 이들 및 다른 변형, 수정, 추가 및 개선은 본 명세서의 주제의 범위 내에 속한다.
본 발명의 주제에 관한 개요가 특정 예시적인 실시예를 참조하여 설명되었지만, 본 개시내용의 실시예의 더 넓은 범위를 벗어나지 않으면서 이러한 실시예에 대하여 다양한 수정 및 변형이 이루어질 수 있다. 본 발명의 주제의 이러한 실시예는 실제로 하나를 초과하여 개시된다면 본 출원의 범위를 임의의 단일 개시내용 또는 발명 개념으로 자발적으로 제한하려 하지 않고, 본 명세서에서 단지 편의상 "발명"이라는 용어로 개별적으로 또는 집합적으로 언급될 수 있다.
본 명세서에 도시되는 실시예는 관련 기술분야의 통상의 지식을 가진 자가 개시된 가르침을 실시할 수 있도록 충분히 상세하게 설명된다. 본 개시내용의 범위를 벗어나지 않고 구조적 및 논리적 대체 및 변형이 이루어질 수 있도록 다른 실시예가 사용될 수 있고 그로부터 유도될 수 있다. 따라서, 상세한 설명은 제한적인 의미로 받아들여서는 안되며, 다양한 실시예의 범위는 첨부된 청구범위와 그러한 청구범위가 부여되는 등가물의 전체 범위에 의해서만 정의된다.
본 명세서에 사용되는 "또는"이라는 용어는 포괄적 또는 배타적 의미로 해석될 수 있다. 또한, 본 명세서에서 단일 인스턴스로서 설명되는 자원, 동작 또는 구조에 대해 복수의 인스턴스가 제공될 수 있다. 또한, 다양한 자원, 동작, 모듈, 엔진 및 데이터 저장소 사이의 경계는 다소 임의적이며, 특정 동작은 특정 예시적인 구성의 맥락에서 설명된다. 기능성의 다른 할당이 구상되고 본 개시내용의 다양한 실시예의 범위 내에 속할 수 있다. 일반적으로, 예시적인 구성에서 별도의 자원으로 제시되는 구조 및 기능성은 조합된 구조 또는 자원으로서 구현될 수 있다. 유사하게, 단일 자원으로 제시되는 구조 및 기능성은 별개의 자원으로서 구현될 수 있다. 이들 및 다른 변형, 수정, 추가 및 개선은 첨부된 청구범위에 의해 나타내지는 본 개시내용의 실시예의 범위 내에 속한다. 따라서, 명세서 및 도면은 제한적인 의미라기보다는 예시로 간주된다.

Claims (21)

  1. 방법으로서,
    특정 제품 카테고리와 연관되는 검색 용어 세트에 액세스하는 단계와,
    상기 특정 제품 카테고리 및 하나 이상의 연관된 제품 카테고리에 대한 제품 카테고리 명칭을 식별하는 단계와,
    상기 식별된 제품 카테고리 명칭에 기초하여 복수의 잠재적 제품 카테고리 명칭을 생성하는 단계와,
    각각의 잠재적 제품 카테고리 명칭에 대해,
    상기 잠재적 제품 카테고리 명칭이 상기 검색 용어 중 임의의 검색 용어와 매칭하는지를 결정하기 위해 상기 각각의 잠재적 제품 카테고리 명칭을 상기 특정 제품 카테고리와 연관되는 상기 검색 용어 세트와 비교하는 단계와,
    상기 각각의 잠재적 제품 카테고리 명칭이 상기 검색 용어 중 임의의 검색 용어와 매칭한다는 결정에 따라, 상기 각각의 잠재적 제품 카테고리 명칭을 매칭하는 잠재적 제품 카테고리 명칭의 세트에 추가하는 단계와,
    상기 매칭하는 잠재적 제품 카테고리 명칭의 세트로부터 제품 페이지 명칭을 선택하고 상기 선택된 제품 페이지 명칭을 상기 특정 제품 카테고리와 연관되는 웹 페이지에 할당하는 단계를 포함하는, 방법.
  2. 제 1 항에 있어서,
    상기 특정 제품 카테고리와 연관되는 제품 페이지를 식별하는 단계와,
    상기 특정 제품 카테고리와 연관되는 상기 제품 페이지의 사용자 선택을 수신하는 단계와,
    상기 제품 페이지의 상기 사용자 선택과 연관되는 검색 쿼리를 기록하는 단계를 포함하는, 방법.
  3. 제 2 항에 있어서,
    상기 특정 제품 카테고리와 연관되는 상기 검색 용어 세트에 액세스하는 단계는,
    사용자가 상기 특정 제품 카테고리와 연관되는 상기 제품 페이지를 선택하는 각각의 인스턴스에 대해 검색 쿼리를 수집하는 단계를 더 포함하는, 방법.
  4. 제 1 항에 있어서,
    상기 제품 카테고리는 계층 트리로 배열되는, 방법.
  5. 제 4 항에 있어서,
    상기 하나 이상의 연관된 제품 카테고리는 상기 계층 트리에서 상기 특정 제품 카테고리의 부모 카테고리인, 방법.
  6. 제 1 항에 있어서,
    상기 제품 카테고리 명칭의 각각의 잠재적 제품 카테고리 명칭은 가변 개수의 단어를 포함하는, 방법.
  7. 제 6 항에 있어서,
    각각의 잠재적 제품 카테고리 명칭은 상기 특정 제품 카테고리 및 하나 이상의 연관된 제품 카테고리에 대한 상기 제품 카테고리 명칭에 포함되는 상기 단어의 상이한 변형을 포함하는, 방법.
  8. 제 1 항에 있어서,
    각각의 잠재적 제품 페이지 명칭에 대해 점수를 생성하는 단계와,
    상기 잠재적인 제품 페이지 명칭을 이들의 점수에 기초하여 순위 매김하는 단계를 더 포함하고, 상기 제품 페이지 명칭은 상기 잠재적인 제품 페이지 명칭의 순위에 기초하여 선택되는, 방법.
  9. 제 8 항에 있어서,
    잠재적 제품 페이지 명칭은 상기 잠재적 제품 페이지 명칭의 길이, 상기 잠재적 제품 페이지 명칭과 매칭하는 검색 용어의 인기도 및 각 잠재적 제품 페이지 명칭을 구성하는 단어의 인기도에 기초하여 순위가 매겨지는, 방법.
  10. 제 2 항에 있어서,
    상기 제품 페이지의 상기 사용자 선택과 연관되는 각각의 검색 쿼리에 대해, 상기 검색 쿼리가 미리 결정된 쿼리 관련 문턱치를 충족하는지를 결정하는 단계와,
    상기 검색 쿼리가 미리 결정된 쿼리 관련 문턱치를 충족하지 않는다는 결정에 따라, 상기 검색 용어 세트로부터 상기 각각의 검색 쿼리를 제거하는 단계를 더 포함하는, 방법.
  11. 시스템으로서,
    하나 이상의 프로세서와,
    메모리와,
    상기 메모리에 저장되는 하나 이상의 프로그램을 포함하고, 상기 하나 이상의 프로그램은,
    특정 제품 카테고리와 연관되는 검색 용어 세트에 액세스하고,
    상기 특정 제품 카테고리 및 하나 이상의 연관된 제품 카테고리에 대한 제품 카테고리 명칭을 식별하고,
    상기 식별된 제품 카테고리 명칭에 기초하여 복수의 잠재적 제품 카테고리 명칭 생성하고,
    각각의 잠재적 제품 카테고리 명칭에 대해,
    상기 잠재적 제품 카테고리 명칭이 상기 검색 용어 중 임의의 검색 용어와 매칭하는지 여부를 결정하기 위해 상기 각각의 잠재적 제품 카테고리 명칭을 상기 특정 제품 카테고리와 연관되는 상기 검색 용어 세트와 비교하고,
    상기 각각의 잠재적 제품 카테고리 명칭이 상기 검색 용어 중 임의의 검색 용어와 매칭한다는 결정에 따라, 상기 각각의 잠재적 제품 카테고리 명칭을 매칭하는 잠재적 제품 카테고리 명칭의 세트에 추가하고,
    상기 매칭하는 잠재적인 제품 카테고리 명칭의 세트로부터 제품 페이지 명칭을 선택하고 상기 선택된 제품 페이지 명칭을 상기 특정 제품 카테고리와 연관되는 웹 페이지에 할당하기 위한 명령어를 포함하는, 시스템.
  12. 제 11 항에 있어서,
    상기 특정 제품 카테고리와 연관되는 제품 페이지를 식별하고,
    상기 특정 제품 카테고리와 연관되는 상기 제품 페이지의 사용자 선택을 수신하고,
    상기 제품 페이지의 상기 사용자 선택과 연관되는 검색 쿼리를 기록하는 것을 더 포함하는, 시스템.
  13. 제 12 항에 있어서,
    상기 특정 제품 카테고리와 연관되는 상기 검색 용어의 세트에 액세스하는 것은,
    사용자가 상기 특정 제품 카테고리와 연관되는 상기 제품 페이지를 선택하는 각각의 인스턴스에 대해 검색 쿼리를 수집하는 것을 더 포함하는, 시스템.
  14. 제 11 항에 있어서,
    제품 카테고리는 계층 트리로 배열되는, 시스템.
  15. 제 14 항에 있어서,
    상기 하나 이상의 연관된 제품 카테고리는 상기 계층 트리에서 상기 특정 제품 카테고리의 부모 카테고리인, 시스템.
  16. 명령어를 저장하는 컴퓨터 판독 가능한 저장 매체로서, 상기 명령어는 머신의 하나 이상의 프로세서에 의해 실행될 때, 상기 머신으로 하여금,
    특정 제품 카테고리와 연관되는 검색 용어 세트에 액세스하는 것과,
    상기 특정 제품 카테고리 및 하나 이상의 연관된 제품 카테고리에 대한 제품 카테고리 명칭을 식별하는 것과,
    상기 식별된 제품 카테고리 명칭에 기초하여 복수의 잠재적 제품 카테고리 명칭을 생성하는 것과,
    각각의 잠재적 제품 카테고리 명칭에 대해,
    상기 잠재적 제품 카테고리 명칭이 상기 검색 용어 중 임의의 검색 용어와 매칭하는지 여부를 결정하기 위해 상기 각각의 잠재적 제품 카테고리 명칭을 상기 특정 제품 카테고리와 연관되는 상기 검색 용어 세트와 비교하는 것과,
    상기 각각의 잠재적 제품 카테고리 명칭이 상기 검색 용어 중 임의의 검색 용어와 매칭한다는 결정에 따라, 상기 각각의 잠재적 제품 카테고리 명칭을 매칭하는 잠재적 제품 카테고리 명칭의 세트에 추가하는 것과,
    상기 매칭하는 잠재적 제품 카테고리 명칭의 세트로부터 제품 페이지 명칭을 선택하고 상기 선택된 제품 페이지 명칭을 상기 특정 제품 카테고리와 연관되는 웹 페이지에 할당하는 것을 포함하는 동작을 수행하게 하는, 컴퓨터 판독 가능한 저장 매체.
  17. 제16항에 있어서,
    상기 특정 제품 카테고리와 연관되는 제품 페이지를 식별하는 것과,
    상기 특정 제품 카테고리와 연관되는 상기 제품 페이지의 사용자 선택을 수신하는 것과,
    상기 제품 페이지의 상기 사용자 선택과 연관되는 검색 쿼리를 기록하는 것을 더 포함하는, 컴퓨터 판독 가능한 저장 매체.
  18. 제17항에 있어서,
    상기 특정 제품 카테고리와 연관되는 상기 검색 용어 세트에 액세스하는 것은,
    사용자가 상기 특정 제품 카테고리와 연관되는 상기 제품 페이지를 선택하는 각각의 인스턴스에 대해 검색 쿼리를 수집하는 것을 더 포함하는, 컴퓨터 판독 가능한 저장 매체.
  19. 제16항에 있어서,
    제품 카테고리는 계층 트리로 배열되는, 컴퓨터 판독 가능한 저장 매체.
  20. 제19항에 있어서,
    상기 하나 이상의 연관된 제품 카테고리는 상기 계층 트리에서 상기 특정 제품 카테고리의 부모 카테고리인, 컴퓨터 판독 가능한 저장 매체.
  21. 머신의 하나 이상의 프로세서에 의해 실행될 때, 머신으로 하여금 제1항 내지 제10항 중 어느 한 항의 방법을 수행하게 하는 명령어를 반송하는 컴퓨터 판독 가능한 매체.
KR1020187029536A 2016-03-15 2017-03-13 카탈로그 관리 KR20180121632A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/070,760 US20170270577A1 (en) 2016-03-15 2016-03-15 Catalogue management
US15/070,760 2016-03-15
PCT/US2017/022105 WO2017160722A1 (en) 2016-03-15 2017-03-13 Catalogue management

Publications (1)

Publication Number Publication Date
KR20180121632A true KR20180121632A (ko) 2018-11-07

Family

ID=59852358

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020187029536A KR20180121632A (ko) 2016-03-15 2017-03-13 카탈로그 관리

Country Status (5)

Country Link
US (1) US20170270577A1 (ko)
EP (1) EP3430528A4 (ko)
KR (1) KR20180121632A (ko)
CN (1) CN108780440A (ko)
WO (1) WO2017160722A1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11836165B2 (en) * 2016-08-22 2023-12-05 Nec Corporation Information processing apparatus, control method, and program including display of prioritized information
US10618133B1 (en) * 2018-02-27 2020-04-14 Levis Strauss & Co. Apparel design system with intelligent asset placement
CN109711953A (zh) * 2019-01-23 2019-05-03 山东可里巴巴知识产权运营有限公司 一种在线商标起名系统及起名方法
US20230394100A1 (en) * 2022-06-01 2023-12-07 Ellipsis Marketing LTD Webpage Title Generator

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7007008B2 (en) * 2000-08-08 2006-02-28 America Online, Inc. Category searching
US7428530B2 (en) * 2004-07-01 2008-09-23 Microsoft Corporation Dispersing search engine results by using page category information
CN101281525B (zh) * 2007-11-23 2010-06-02 北京九城网络软件有限公司 一种互联网上基于知识库的搜索系统和方法
US9405841B2 (en) * 2009-10-15 2016-08-02 A9.Com, Inc. Dynamic search suggestion and category specific completion
DE102010022263A1 (de) * 2010-05-31 2011-12-01 Siemens Aktiengesellschaft Verfahren zur Optimierung einer Suchanfrage
US8473485B2 (en) * 2011-06-29 2013-06-25 Microsoft Corporation Organizing search history into collections
US9183280B2 (en) * 2011-09-30 2015-11-10 Paypal, Inc. Methods and systems using demand metrics for presenting aspects for item listings presented in a search results page
WO2014022715A1 (en) * 2012-08-01 2014-02-06 Google Inc. Categorizing search terms
US9104787B2 (en) * 2012-12-14 2015-08-11 Microsoft Technology Licensing, Llc Augmenting search results with relevant third-party application content
WO2015097881A1 (ja) * 2013-12-27 2015-07-02 楽天株式会社 カテゴリ名抽出装置、カテゴリ名抽出方法及びカテゴリ名抽出プログラム

Also Published As

Publication number Publication date
CN108780440A (zh) 2018-11-09
EP3430528A4 (en) 2019-10-09
EP3430528A1 (en) 2019-01-23
US20170270577A1 (en) 2017-09-21
WO2017160722A1 (en) 2017-09-21

Similar Documents

Publication Publication Date Title
US20190228038A1 (en) Method of identifying temporal demand of queries and metadata to give better autocomplete queries and improved search results
KR102214015B1 (ko) 스마트 매치 자동 완성 시스템
US20170177712A1 (en) Single step cross-linguistic search using semantic meaning vectors
KR102170012B1 (ko) 데이터베이스 검색 최적화기 및 주제 필터
KR20190013954A (ko) 애스펙트를 이용한 쿼리의 라벨링
US20170293695A1 (en) Optimizing similar item recommendations in a semi-structured environment
US20230177579A1 (en) System and method for computing features that apply to infrequent queries
US11687991B2 (en) Structured item organizing mechanism in e-commerce
US20200020000A1 (en) Generating product descriptions from user reviews
US10230806B2 (en) Tracking of user interactions
US10838984B2 (en) Browse node creation using frequent pattern mining
US11741112B2 (en) Identification of intent and non-intent query portions
US20180276302A1 (en) Search provider selection using statistical characterizations
US20210165838A1 (en) Context Identification For Content Generation
US11126628B2 (en) System, method and computer-readable medium for enhancing search queries using user implicit data
KR20180121632A (ko) 카탈로그 관리
KR20190020785A (ko) 결과 피드백을 이용하는 검색 시스템
KR20200128429A (ko) 자동 로트 분류
KR102353420B1 (ko) 크라우드 지원 질의 시스템
US20210142376A1 (en) Compatible model determination for efficient listing creation
US20170193579A1 (en) System and method to calculate session-based price demand on e-commerce site
CN113779354A (zh) 用于生成目标页面的系统和方法

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application