KR20170052667A - 향상된 검색 질의어 제안 - Google Patents
향상된 검색 질의어 제안 Download PDFInfo
- Publication number
- KR20170052667A KR20170052667A KR1020177009679A KR20177009679A KR20170052667A KR 20170052667 A KR20170052667 A KR 20170052667A KR 1020177009679 A KR1020177009679 A KR 1020177009679A KR 20177009679 A KR20177009679 A KR 20177009679A KR 20170052667 A KR20170052667 A KR 20170052667A
- Authority
- KR
- South Korea
- Prior art keywords
- search query
- token
- search
- query
- suggestions
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/33—Querying
- G06F16/332—Query formulation
- G06F16/3322—Query formulation using system suggestions
-
- G06F17/3064—
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/9032—Query formulation
- G06F16/90324—Query formulation using system suggestions
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Information Transfer Between Computers (AREA)
Abstract
다양한 예시적인 실시예에서, 자동 완성 검색 제안을 향상시키기 위한 시스템 및 방법이 제시된다. 시스템은 클라이언트 장치로부터 토큰 부분을 갖는 질의어 부분을 수신하고, 토큰 부분에 기초하여 제 1 순서를 갖는 제 1 검색 질의어 제안 세트를 생성한다. 시스템은 클라이언트 장치와 연관된 토큰 풀에 액세스하고, 토큰 부분 및 토큰 풀에 기초하여 제 2 순서를 갖는 제 2 검색 질의어 제안 세트를 생성한다. 시스템은 검색 질의어 제안의 제 1 서브세트 및 검색 질의어 제안의 제 2 서브세트를 선택한다. 상기 시스템은 검색 질의어 제안의 제 1 서브세트 및 검색 질의어 제안의 제 2 서브세트를 제 3 검색 질의어 제안 세트로 병합하고, 제 3 검색 질의어 제안 세트를 제 1 및 제 2 순서와 구별되는 제 3 순서로 구성한다.
Description
관련 출원
이 국제 출원은 2015 년 8 월 4 일에 출원된 향상된 검색 질의어 제안(Enhanced Search Query Suggestions)이라는 제목의 미국 특허 출원 제 14/818,034 호에 대해 우선권을 주장하며, 이 미국 특허 출원은 2014 년 9 월 11 일자 출원된 "검색 질의어 제안을 향상시키기 위한 시스템 및 방법"이라는 명칭의 미국 가출원 제 62/049,271 호에 대해 우선권을 주장하며, 이들 출원은 그 전체가 본원에 참고로 인용된다.
기술 분야
본 개시내용의 실시예는 일반적으로 검색 질의어 제안을 생성하는 것에 관한 것이고, 보다 구체적으로는 검색 질의어 제안을 향상시키는 것에 관한 것이나 이에 한정되지는 않는다.
통상적으로, 검색 질의어는 사용자가 검색 필드에 검색 질의어를 입력하는 동안 사용자에게 제공되는 검색 질의어 제안(search query suggestions)을 포함한다. 일부 시스템에서는 검색 질의어 제안이 자동 완성(Auto Complete)으로 알려져 있다. 검색 질의어 제안은 검색 시스템에 저장된 검색 질의어를 제안하여 검색 질의어를 채우고 작성하는 데 사용할 수 있다. 예를 들어, 검색 질의어 제안은 검색 시스템에 저장된 인기있고 잘 알려진 검색 질의어를 제안함으로써 채워질 수 있다. 검색 질의어 제안은 흔히 검색 질의어에 입력된 용어 또는 부분적 용어와 관련된 제안 용어를 결정하는 검색 시스템을 나타낸다. 검색 시스템은 일반적으로 글로벌 스코어링 함수(global scoring functions)를 사용하여 모든 사용자에 대한 검색 질의어의 전체 성능을 평가하여 검색 질의어에 사용된 특정 용어 또는 용어 세트의 인기도 및 효율성의 순위를 지정한다.
첨부된 다양한 도면들은 단지 본 개시내용의 예시적인 실시예를 도시하는 것으로서 실시예의 범위를 제한하는 것으로 간주될 수는 없다.
도 1은 몇몇 예시적인 실시예에 따른 네트워크 시스템을 도시하는 블록도이다.
도 2는 다양한 실시예에 따른 예시적인 검색 향상 시스템의 블록도이다.
도 3은 다양한 실시예에 따라 검색 질의어 제안 세트를 생성 및 제공하기 위한 예시적인 방법을 도시하는 흐름도이다.
도 4는 다양한 실시예에 따라 검색 질의어 제안 세트를 생성 및 제공하기 위한 예시적인 방법을 나타내는 흐름도이다.
도 5는 다양한 실시예에 따라 검색 질의어 제안 세트를 생성 및 제공하기 위한 예시적인 방법을 도시하는 흐름도이다.
도 6은 다양한 실시예에 따라 검색 질의어 제안 세트를 생성 및 제공하기 위한 예시적인 방법을 도시하는 흐름도이다.
도 7은 다양한 실시예에 따라 예시적인 네트워크 기반 배포 시스템의 컴포넌트를 나타내는 블록도이다.
도 8은 다양한 실시예에 따라 머신에 설치될 수 있는 소프트웨어 아키텍처의 일례를 도시한 블록도이다.
도 9는 다양한 실시예에 따라 고수준의 엔티티-관계 다이어그램을 나타내는 블록도이다.
도 10은 컴퓨터 시스템 형태의 머신을 개략적으로 도시하며, 이 컴퓨터 시스템 내에서 명령어 세트가 실행되어 머신으로 하여금 하나 이상의 본 명세서에서 논의된 방법을 예시적 실시예에 따라 수행하게 한다.
본 명세서에 제공된 표제(headings)는 단지 편의를 위한 것이며 사용된 용어의 범위 또는 의미에 반드시 영향을 미치는 것은 아니다.
도 1은 몇몇 예시적인 실시예에 따른 네트워크 시스템을 도시하는 블록도이다.
도 2는 다양한 실시예에 따른 예시적인 검색 향상 시스템의 블록도이다.
도 3은 다양한 실시예에 따라 검색 질의어 제안 세트를 생성 및 제공하기 위한 예시적인 방법을 도시하는 흐름도이다.
도 4는 다양한 실시예에 따라 검색 질의어 제안 세트를 생성 및 제공하기 위한 예시적인 방법을 나타내는 흐름도이다.
도 5는 다양한 실시예에 따라 검색 질의어 제안 세트를 생성 및 제공하기 위한 예시적인 방법을 도시하는 흐름도이다.
도 6은 다양한 실시예에 따라 검색 질의어 제안 세트를 생성 및 제공하기 위한 예시적인 방법을 도시하는 흐름도이다.
도 7은 다양한 실시예에 따라 예시적인 네트워크 기반 배포 시스템의 컴포넌트를 나타내는 블록도이다.
도 8은 다양한 실시예에 따라 머신에 설치될 수 있는 소프트웨어 아키텍처의 일례를 도시한 블록도이다.
도 9는 다양한 실시예에 따라 고수준의 엔티티-관계 다이어그램을 나타내는 블록도이다.
도 10은 컴퓨터 시스템 형태의 머신을 개략적으로 도시하며, 이 컴퓨터 시스템 내에서 명령어 세트가 실행되어 머신으로 하여금 하나 이상의 본 명세서에서 논의된 방법을 예시적 실시예에 따라 수행하게 한다.
본 명세서에 제공된 표제(headings)는 단지 편의를 위한 것이며 사용된 용어의 범위 또는 의미에 반드시 영향을 미치는 것은 아니다.
이하의 설명은 본 개시내용의 예시적인 실시예를 구현하는 시스템, 방법, 기술, 명령어 시퀀스, 및 컴퓨팅 머신 프로그램 제품을 포함한다. 이하에서, 설명을 목적으로, 본 발명의 대상의 다양한 실시예에 대한 이해를 제공하기 위해 다수의 특정 세부 사항이 설명된다. 그러나, 당업자는 본 발명 대상의 실시예가 이러한 특정 세부 사항 없이도 실시될 수 있다는 점을 명백히 이해할 것이다. 일반적으로, 잘 알려진 명령어 인스턴스, 프로토콜, 구조 및 기술을 반드시 상세하게 나타내야 하는 것은 아니다.
자동 완성(Auto Complete)으로 알려진 검색 질의어 제안은 임의의 검색 시스템에서 중요하고 필수적인 부분이다. 자동 완성 기능을 사용하면 검색 시스템에서 인기 있고 잘 알려진 검색어를 제안하여 사용자가 신속하게 검색어를 채우고 작성할 수 있다. 이러한 시스템은 사용자 충돌을 줄이고 사용자가 의미 있는 검색 질의어로 더 빠르게 집중할 수 있게 하여 만족스러운 검색 결과를 얻도록 도와준다.
다양한 예시적인 실시예에서, 검색 질의어 제안은 사용자에 의해 입력된 이전 검색 질의어에 기초하여 검색 향상 시스템에 의해 사용자에 대해 강화되고 개인화된다. 검색 질의어 제안을 향상시키기 위해 검색 향상 시스템에 의해 채용된 방법 및 시스템은 사용자의 과거 검색 질의어로 표준 검색 질의어 제안을 편향(bias)(예를 들어, 확장, 제거 및 재-랭킹)시켜 더 관련성 있고 개인화된 검색 질의어 제안을 가져올 수 있다. 브랜드, 사이즈, 성별 등과 같은 차원(dimensions)에 따른 사용자의 선호도는 사용자의 과거 검색을 통해 미리 캡처된다. 이러한 정보를 활용하고 그러한 내재된 선호사항을 고려하여 표준 검색 질의어 제안을 수정하면 사용자를 만족스럽게 하고 관련 검색어에 빠르게 도달하도록 하여 사용자의 시간을 절약할 수 있다. 예를 들어, 사용자가 이전에 검색 질의어 "gucci handbag"를 입력한 경우 검색 상자에 "belt"를 타이핑하면 "gucci belt"에 대한 검색 질의어 제안이 표시될 수 있다.
검색 향상 시스템은 모든 사용자에 대한 검색 질의어의 전체 성능을 평가하여 그 인기도 및 효율성을 평가하는 글로벌 스코어링(global scoring) 함수를 사용할 수 있다. 예를 들어, 일부 실시예에서, 검색 향상 시스템은 MostPopularCompletion의 고급 버전을 사용하여 글로벌 히스토리에서의 인기도에 따라 모든 질의어를 순위 매김한다. 각 히스토리 질의어는 글로벌 스코어링 함수의 일부인 인기도 계산 모델을 기반으로 인덱싱되고 점수가 매겨진다. 빈도 및 기타 차원은 인기도 계산에 통합된다. 검색 향상 시스템은 하나 이상의 검색 용어 또는 부분 용어가 데이터 엔트리 필드에 입력될 때, 사용자의 이전에 입력된 검색 질의어를 사용하여 글로벌 스코어링 함수에 의해 제공된 일련의 제안된 검색 질의어 용어를 수정할 수 있다. 검색 시스템 사용자는 자체적 특이성 또는 인기도가 없기 때문에 이러한 글로벌 스코어링 함수을 통해 캡처되지 않을 수도 있는 검색어에 대해 개인적인 선호도 및 의도를 가질 수 있다. 예를 들어, 보다 일반적인 검색 질의어 "nike air"는 특정 검색 질의어 "nike air size 8.5"보다 더 대중적이거나 유용할 수 있다. 사용자의 이전 검색 질의어를 이용하여 글로벌 스코어링 함수에 의해 제공된 제안된 검색 질의 용어의 수정은 사용자의 선호도 및 의도를 반영하는 검색 질의어 제안을 생성할 수 있다.
본 문서의 나머지 부분은 사용자의 개인적 선호도를 포착하기 위해 사용자의 과거 검색 질의어를 이용하여 동작하는 검색 질의어 제안을 향상시키는 방법 및 시스템을 개략적으로 설명한다. 본 문서는 더욱 개인화되고 관련 있는 검색 질의어를 드러내기 위해 검색 질의어 추천 시스템에서 이러한 데이터가 어떻게 사용될 수 있는지에 대해 개략적으로 설명한다.
도 1을 참조하면, 고수준 클라이언트-서버-기반 네트워크 아키텍처(100)의 예시적인 실시예가 도시된다. 네트워크 기반 배포 시스템 또는 지불 시스템의 예시적인 형태의 네트워크 시스템(102)은 통신 네트워크(104)(예를 들어, 인터넷 또는 광역 네트워크(WAN))를 통해 서버 측 기능을 하나 이상의 클라이언트 장치(110)에 제공한다. 도 1은 예를 들어, 웹 클라이언트(112)(예를 들어, 워싱턴 주 레드몬드의 마이크로소프트® 코포레이션에 의해 개발된 인터넷 익스플로러® 브라우저와같은 브라우저), 애플리케이션(114) 및 클라이언트 장치(110)상에서 실행되는 프로그램 클라이언트(116)를 나타낸다.
네트워크 구조(100)는 본 문서에서 설명된 방법들 중 임의의 것을 실행하는데 이용된다. 클라이언트 장치(110)는 이동 전화, 데스크톱 컴퓨터, 랩톱, 휴대용 디지털 보조 장치(PDA), 스마트폰, 태블릿, 울트라 북, 넷북, 랩톱, 멀티 프로세서 시스템, 마이크로프로세서 기반 또는 프로그램 가능 가전제품, 게임 콘솔, 셋톱 박스, 또는 사용자가 네트워크 시스템(102)에 액세스하기 위해 이용할 수 있는 임의의 다른 통신 장치를 포함할 수 있다. 일부 실시예에서, 클라이언트 장치(110)는 정보를 디스플레이하는 디스플레이 모듈(미도시)(가령, 사용자 인터페이스의 형태)을 포함한다. 다른 실시예에서, 클라이언트 장치(110)는 하나 이상의 터치 스크린, 가속도계, 자이로스코프, 카메라, 마이크로폰, GPS(Global Positioning System) 장치 등을 포함한다. 클라이언트 장치(110)는 네트워크 시스템(102) 내에서 디지털 아이템을 포함하는 거래를 수행하는 데 사용되는 사용자 장치일 수 있다. 일 실시예에서, 네트워크 시스템(102)은 제품 리스트에 대한 요청에 응답하는 네트워크 기반 배포 시스템(network-based publication system)이고, 네트워크 기반 배포 시스템에서 사용 가능한 제품의 아이템 리스트를 포함하는 게시물을 배포하며, 네트워크 기반 배포 시스템과 관련된 거래(transaction)에 대한 지불을 관리한다. 일부 실시예에서, 제품 리스트 및 게시물에 관련된 동작은 디지털 제품의 관리로서 이해될 수 있다. 네트워크(104)의 하나 이상의 부분은 애드혹 네트워크, 인트라넷, 엑스트라넷, 가상 사설망(VPN), 근거리 통신망(LAN), 무선 LAN(WLAN), 광역 네트워크(WAN), 무선 WAN(WWAN), 도심 지역 네트워크(MAN), 인터넷의 일부, 공중 교환 전화망(PSTN)의 일부, 셀룰러 전화 네트워크, 무선 네트워크, WiFi 네트워크, WiMax 네트워크, 다른 유형의 네트워크, 또는 2 개 이상의 그러한 네트워크이 조합일 수 있다.
각각의 클라이언트 장치(110)는 웹 브라우저, 메시징 애플리케이션, 전자 메일(이메일) 애플리케이션, 전자 상거래 사이트(e-commerce site) 애플리케이션(배포 애플리케이션이라고도 함)과 같은 하나 이상의 애플리케이션(114)("앱"이라고도 함) 등을 포함할 수 있다. 일부 실시예에서, 전자 상거래 사이트 애플리케이션이 클라이언트 장치(110) 중 지정 장치에 포함되면, 이러한 애플리케이션(114)은 네트워크 시스템(102)과 통신하도록 구성된 애플리케이션(114)을 사용자 인터페이스 및 적어도 일부 기능에게 이용가능하지 않은 처리 성능(예를 들어, 판매에 이용할 수 있는 아이템들의 데이터베이스에 대한 액세스, 사용자(106)를 인증하기 위한 액세스, 지불 방법을 검증하기 위한 액세스 등)이나 데이터에 대해 필요에 따라 로컬로 제공하도록 구성된다. 반대로, 전자 상거래 사이트 애플리케이션(114)이 클라이언트 장치(110)에 포함되지 않으면, 클라이언트 장치(110)는 자신의 웹 브라우저를 사용하여 네트워크 시스템(102)상에서 호스팅되는 전자 상거래 사이트(또는 그 변형 사이트)에 액세스 할 수 있다.
하나 이상의 사용자(106)는 사람, 기계, 또는 클라이언트 장치(110)와 상호 작용하는 다른 수단일 수 있다. 예시적인 실시예에서, 사용자(106)는 네트워크 아키텍처(100)의 일부는 아니지만, 네트워크 아키텍처와 클라이언트 장치(110) 또는 다른 수단을 통해 상호 작용할 수 있다. 예를 들어, 사용자(106)는 클라이언트 장치(110)에 입력(예를 들어, 터치 스크린 입력 또는 영숫자 입력)을 제공하고, 입력은 네트워크(104)를 통해 네트워크 시스템(102)에 통신된다. 이 경우, 네트워크 시스템은 사용자(106)로부터 입력을 수신하는 것에 응답하여, 사용자(106)에게 제시되도록 네트워크(104)를 통해 클라이언트 장치(110)에게 정보를 통신한다. 이러한 방식으로, 사용자(106)는 클라이언트 장치(110)를 사용하여 네트워크 시스템(102)과 상호 작용할 수 있다.
애플리케이션 프로그램 인터페이스(API) 서버(120) 및 웹 서버(122)는 각각 하나 이상의 애플리케이션 서버(140)에 연결되어 프로그래밍 방식 인터페이스 및 웹 인터페이스를 하나 이상의 애플리케이션 서버(140)에 제공한다. 애플리케이션 서버(140)는 하나 이상의 배포 시스템(142) 및 지불 시스템(144)을 호스팅할 수 있으며, 각각은 하나 이상의 모듈 또는 애플리케이션을 포함할 수 있고, 각각은 하드웨어, 소프트웨어, 펌웨어 또는 이들의 임의의 조합으로서 구현될 수 있다. 애플리케이션 서버(140)는 결국은 하나 이상의 정보 저장 저장소 또는 데이터베이스(들) (126)로의 액세스를 용이하게 하는 하나 이상의 데이터베이스 서버(124)에 연결되는 것으로 도시되어 있다. 일 실시예에서, 데이터베이스(126)는 게시될 정보(예를 들어, 배포물 또는 리스트)를 배포 시스템(142)에 저장하는 저장 장치이다. 데이터베이스(126)는 또한 예시적인 구현예에 따라 디지털 아이템 정보를 저장할 수 있다.
또한, 제 3 자 서버(들)(130)상에서 실행되는 제 3 자 애플리케이션(132)이 API 서버(120)에 의해 제공되는 프로그래밍 인터페이스를 통해 네트워크 시스템(102)에 프로그래밍 방식으로 액세스하는 것으로 도시되어 있다. 예를 들어, 제 3 자 애플리케이션(132)은 네트워크 시스템(102)으로부터 검색된 정보를 이용하여 제 3 자에 의해 호스팅되는 웹 사이트상의 하나 이상의 특징 또는 기능을 지원한다. 예를 들어 제 3 자 웹 사이트는 네트워크 시스템(102)의 관련 애플리케이션에 의해 지원되는 하나 이상의 판촉, 시장, 배포 또는 지불 기능을 제공한다. 제 3 자 서버(들)(130)는 외부 사이트(134 및 136)를 호스팅할 수 있다. 외부 사이트(134 및 136)는 네트워크(104)를 통해 네트워크 아키텍처(100)에 연결될 수 있으며, 전자 상거래 시스템을 포함하는 임의의 원하는 시스템일 수 있다.
배포 시스템(142)은 네트워크 시스템(102)에 액세스하는 사용자(106)에게 다수의 배포 기능 및 서비스를 제공할 수 있다. 지불 시스템(144)은 마찬가지로 지불 및 거래를 수행하거나 촉진하기 위한 다수의 기능을 제공할 수 있다. 배포 시스템(142) 및 지불 시스템(144)이 도 1에 도시되어 있지만, 대안적인 실시예에서, 각각의 시스템(142 및 144)은 네트워크 시스템(102)과는 별개의 분리된 지불 서비스의 일부를 형성할 수 있음을 이해할 수 있을 것이다. 일부 실시예에서, 지불 시스템(144)은 배포 시스템(142)의 일부를 형성할 수 있다.
일부 예시적인 실시예에서, 배포 시스템(142)은 네트워크(104)(예를 들어, 인터넷) 상에 컨텐츠를 배포한다. 이와 같이, 배포 시스템(142)은 네트워크 아키텍처(100)에 액세스하는 사용자(106)에게 다수의 배포 및 시장 기능 및 서비스를 제공한다. 배포 시스템(142)은 도 7과 관련하여 더 상세히 논의된다. 예시적인 실시예에서, 배포 시스템(142)은 온라인 시장 환경에 관하여 논의된다. 그러나, 배포 시스템(142)은 정보(예를 들어, 검색 엔진) 또는 소셜 네트워킹 환경과 같은 비 시장 환경과 관련될 수 있음을 알아야한다.
지불 시스템(144)은 사용자(106)에게 다수의 지불 서비스 및 기능을 제공한다. 지불 시스템(144)은 사용자(106)가 자신 계좌에 가치(value)(예컨대, 미국 달러와 같은 상용 통화 또는, 포인트, 마일리지 또는 사기업이 제공하는 다른 형태의 통화와 같은 사적 통화(proprietary currency))를 축적하는 것을 가능하게 하고, 이어서 배포 시스템(142)을 통해 또는 네트워크(104) 또는 네트워크 아키텍처(100) 상의 어디에서나 이용될 수 있는 제품(예: 상품 또는 서비스)에 대한 누적된 가치를 나중에 보상받을 수 있다. 또한, 지불 시스템(144)은 모든 유형 및 형태의 네트워크 기반 배포 시스템을 통해 아이템의 구매를 위한 지불 메커니즘(예를 들어, 은행 계좌, PayPal ™, 또는 신용 카드)에서의 결제 및 거래를 용이하게 한다.
검색 향상 시스템(150)은 다른 사용자의 검색 질의어 히스토리를 사용하는 글로벌 스코어링 함수와 조합하여 사용자(106)의 이전 검색 질의어를 사용하여 검색 질의어 제안을 향상시키는 기능을 제공한다. 예를 들어, 검색 향상 시스템(150)은 데이터베이스(126), 제 3 자 서버(130), 배포 시스템(142) 및 다른 소스로부터 사용자(106)의 이전 검색 질의어에 액세스한다. 일부 실시예에서, 검색 향상 시스템(150)은 검색 질의어 제안을 향상시키기 위한 사용자 선호도 및 관심도를 결정하기 위해 사용자(106)의 이전 검색 질의어 히스토리를 분석한다. 더 많은 검색 질의가 사용자(106)에 의해 수행됨에 따라, 검색 향상 시스템(150)은 검색 질의어 제안의 개인화를 더 개선(refine)할 수 있다. 일부 예시적인 실시예에서, 검색 향상 시스템(150)은 배포 시스템(142) 및 제 3 자 서버(130)와 통신하여 상이한 시스템, 서비스 또는 제품에 걸쳐 사용자(106)에 대한 이전 검색 히스토리에 액세스한다. 대안적 실시예에서, 검색 향상 시스템(150)은 배포 시스템(142) 내에 저장된 사용자(106)의 이전 검색 히스토리에 직접 액세스하는 배포 시스템(142)의 일부일 수 있다.
다양한 예시적인 실시예에서, 글로벌 스코어 서버(152)는 질의어 항목, 질의어, 토큰, 토큰 부분 등에 대한 글로벌 스코어(global scores)를 저장한다. 글로벌 스코어는 질의어 풀 내의 질의어 항목과 질의어 항목의 관련성을 나타냅니다. 질의어 항목은 질의어의 키워드 또는 키워드의 일부와 같은 질의어의 일부분으로 이해될 수 있다. 글로벌 스코어는 검색 향상 시스템(150)에 의해 생성될 수 있다. 몇몇 경우에, 글로벌 스코어 서버(152)는 글로벌 스코어를 생성할 수 있다. 일 실시예에서, 글로벌 스코어 서버(152)는 독립 컴포넌트가 아닌 검색 향상 시스템(150)의 일부로서 구현될 수 있다.
일부 경우에, 세션 히스토리 서버(154)는 복수의 사용자(예컨대, 사용자(106))에 대한 세션 히스토리를 저장한다. 일부 실시예에서, 세션 히스토리 서버(154)는 복수의 사용자(106)의 각각과 관련된 질의어 항목, 질의어 부분, 토큰, 토큰 부분 등을 저장하도록 구성된 하나 이상의 데이터 구조 및 메모리 컴포넌트를 포함한다. 일부 경우에, 세션 히스토리 서버(154)는 세션 히스토리를 나타내는 글로벌 세션 히스토리 및 복수의 사용자(106) 모두의 질의어를 저장하도록 구성된 데이터 구조를 추가로 포함할 수 있다. 일부 경우에서, 세션 히스토리 서버(154)는 검색 향상 시스템(150)의 컴포넌트로서 구현된다.
또한, 도 1에 도시된 클라이언트-서버-기반 네트워크 아키텍처(100)는 클라이언트-서버 아키텍처를 사용하지만, 본 발명의 대상은 물론 그러한 아키텍처에 국한되지 않으며, 예를 들어 분산형 또는 피어 투 피어(peer-to-peer) 아키텍처 시스템에서도 마찬가지로 쉽게 응용예를 찾아볼 수 있다.
웹 클라이언트(112)는 웹 서버(122)에 의해 지원되는 웹 인터페이스를 통해 다양한 발행 및 지불 시스템(142 및 144)에 액세스한다. 유사하게, 프로그램 클라이언트(116)는 API 서버(120)에 의해 제공되는 프로그래밍 방식 인터페이스를 통해 발행 및 결제 시스템(142 및 144)에 의해 제공되는 다양한 서비스 및 기능에 액세스한다. 프로그래밍 방식 클라이언트(116)는 예를 들어, 판매자 애플리케이션(예를 들어, 캘리포니아 주 산호세의 eBay® 사에 의해 개발된 터보 리스터(Turbo Lister) 애플리케이션)일 수 있으며, 이러한 판매자 애플리케이션은 판매자가 오프라인 방식으로 네트워크 시스템(102)상에서 리스트를 작성하고 관리하는 것을 가능하게 하고, 프로그래밍 방식 클라이언트(116)와 네트워크 시스템(102) 사이에서 배치 모드 통신(batch-mode communication)을 수행하게 할 수 있다.
도 2는 일부 예시적인 실시예에 따른 검색 향상 시스템(150)의 컴포넌트를 나타내는 블록도이다. 검색 향상 시스템(150)은 수신기 모듈(210), 네이티브 결과 모듈(220), 액세스 모듈(230), 토큰 관리 모듈(240), 확장 결과 모듈(250), 선택 모듈(260), 프레젠테이션 모듈(270) 및 통신 모듈(290)을 포함할 수 있다. 본 명세서에 설명된 임의의 하나 이상의 모듈은 하드웨어(예를 들어, 머신의 하나 이상의 프로세서) 또는 하드웨어 및 소프트웨어의 조합을 사용하여 구현될 수 있다. 예를 들어, 본 명세서에 설명된 임의의 모듈은 그 모듈이 설계되는 동작을 수행하도록 프로세서(예를 들어, 머신의 하나 이상의 프로세서 중 하나)를 구성할 수 있다. 또한, 이들 모듈 중 임의의 2 개 이상의 모듈이 단일 모듈로 결합될 수 있고, 단일 모듈에 대해 본 명세서에 설명된 기능들은 다수의 모듈로 세분될 수 있다. 또한, 다양한 예시적인 실시예에 따르면, 단일 머신, 데이터베이스(들)(126) 또는 디바이스(예를 들어, 클라이언트 장치(110)) 내에서 구현되는 것으로 본 명세서에 설명된 모듈은 다수의 머신, 데이터베이스(들)(126) 또는 디바이스에 걸쳐 분산될 수 있다.
수신기 모듈(210)은 클라이언트 장치(110)로부터 질의어 부분을 수신한다. 질의어 부분은 클라이언트 장치(110)로부터 수신된 검색 질의어의 전부 또는 일부인 것으로 이해될 수 있다. 질의어 부분은 적어도 토큰 부분을 포함한다. 토큰 부분은 단어, 숫자, 단어 세트(예: 문장 또는 단락), 숫자 세트(예: 숫자 스트링, 전화 번호, 특허 출원 번호 또는 항목 리스트 식별 번호)의 전부 또는 일부 및 이들의 조합을 포함할 수 있다. 토큰 데이터는 검색 질의어를 나타내거나 다른 토큰과 조합되어 검색 질의어를 형성할 수 있는 토큰을 나타낸다. 클라이언트 장치(110)는 클라이언트 장치(110)의 입력 디바이스를 통해 사용자(106)로부터 텍스트 스트링을 수신한다. 이어서 수신기 모듈(210)은 네트워크(104)를 통해 클라이언트 장치(110)로부터 텍스트 스트링을 수신한다. 수신기 모듈(210)은 하드웨어 구현 모듈 또는 하드웨어-소프트웨어 조합 구현 모듈일 수 있다. 수신기 모듈(210)의 컴포넌트의 예시적인 실시예는 "모듈, 컴포넌트 및 로직"이라는 제목의 섹션에서 후술되는 모듈과 관련하여 설명된다.
네이티브 결과 모듈(220)은 수신기 모듈(210) 및 글로벌 토큰 풀에 의해 수신된 질의어 부분을 사용하여 검색 질의어 제안을 생성한다. 글로벌 토큰 풀은 검색 향상 시스템(150)과 상호 작용하는 사용자들의 세트에 의해 사용되는 토큰, 토큰 부분, 질의어 부분 또는 검색 질의어의 세트로 이해될 수 있다. 일부 경우에, 글로벌 토큰 풀은 사용자 집합에서 사용하지 않는 단어 및 문구를 포함할 수 있다. 예를 들어, 글로벌 토큰 풀은 사전, 시소러스, 백과사전 및 기타 토큰 참조 소스에서 발견되는 토큰(예: 단어)을 포함할 수 있다. 일부 실시예에서, 사용자 세트는 사용자(106)를 포함한다. 네이티브 결과 모듈(220)은 하드웨어 구현 모듈 또는 하드웨어-소프트웨어 조합 구현 모듈일 수 있다. 네이티브 결과 모듈(220)의 컴포넌트의 예시적인 실시예는 "모듈, 컴포넌트 및 로직"이라는 제목의 섹션에서 후술되는 모듈과 관련하여 설명된다.
액세스 모듈(230)은 클라이언트 장치(110)(이로부터 수신기 모듈(210)이 토큰 부분을 수신함)와 연관된 토큰 풀에 액세스한다. 액세스 모듈(230)은 저장 장치(예를 들어, 메모리 또는 머신 판독가능 저장 매체), 머신(예를 들어, 서버) 또는 토큰 풀 및 토큰 풀의 그룹을 저장할 수 있는 다른 적절한 저장소에 액세스함으로써 클라이언트 장치(110)와 연관된 토큰 풀에 액세스한다. 일부 실시예에서, 액세스 모듈(230)은 네트워크(104)를 통해 토큰 풀에 액세스한다. 일부 경우, 액세스 모듈(230)은 검색 향상 시스템(150)에 대해 로컬인 저장 장치 내의 토큰 풀에 액세스한다. 액세스 모듈(230)은 하드웨어 구현 모듈 또는 하드웨어-소프트웨어 조합 구현 모듈일 수 있다. 액세스 모듈(230)의 컴포넌트의 예시적인 실시예는 "모듈, 컴포넌트 및 로직"이라는 제목의 섹션에서 후술되는 모듈과 관련하여 설명된다.
토큰 관리 모듈(240)은 일반적으로 검색 향상 시스템(150)에 의해 수신된 토큰을 관리한다. 다양한 실시예에서, 토큰 관리 모듈(240)은 수신된 질의어 항목, 질의어 부분, 토큰 및 토큰 부분을 저장한다. 수신된 데이터(예를 들어, 질의어 항목, 질의어 부분, 토큰, 토큰 부분)는 사용자(예를 들어, 사용자(106))와 연관된 토큰 풀 및 글로벌 토큰 풀 중 하나 이상에 저장될 수 있다. 일부 실시예에서, 글로벌 토큰 풀은 네트워크 기반 배포 시스템(142) 및 검색 향상 시스템(150) 중 하나 이상의 모든 사용자의 집합적 검색 질의어 항목 및 토큰을 나타낸다. 토큰 관리 모듈(240)은 토큰 풀의 각각의 토큰에 대해 품질을 결정하고, 각각의 개별 토큰마다 결정된 토큰 품질을 토큰 풀의 각 토큰과 연관시킨다.
확장 결과 모듈(250)은 수신기 모듈(210)에 의해 수신된 질의어 부분 및 클라이언트 장치(110)와 연관된 토큰 풀을 사용하여 검색 질의어 제안을 생성한다. 클라이언트 장치(110)와 연관된 토큰 풀은 일부 실시예에서, 수신기 모듈(210)이 질의어 부분을 수신하기 이전의 시간에 클라이언트 장치(110)로부터 수신기 모듈(210)에 의해 수신된 히스토리 토큰 세트, 토큰 부분, 질의어 부분 또는 검색 질의어를 포함하는 히스토리 토큰 풀이 될 수 있다는 점을 이해할 것이다. 일부 실시예에서, 히스토리 토큰 풀은 수신기 모듈(210)에 의해 수신된 질의어 부분을 포함하는 사용자 세션 내에서 수신된다. 일부 실시예에서, 히스토리 토큰 풀은 수신기 모듈(210)에 의해 수신된 질의어 부분과는 별도의 사용자 세션에서 수신된다. 히스토리 토큰 풀은 복수의 사용자 세션(예를 들어, 수신기 모듈(210)에 의해 수신된 질의어 부분과 동일한 사용자 세션 및 하나 이상의 이전 사용자 세션)을 통해 수신된 토큰 및 토큰 부분을 포함할 수 있다. 확장 결과 모듈(250)은 하드웨어 구현 모듈 또는 하드웨어-소프트웨어 조합 구현 모듈일 수 있다. 확장 결과 모듈(250)의 컴포넌트의 예시적인 실시예는 "모듈, 컴포넌트 및 로직"이라는 제목의 섹션에서 후술되는 모듈과 관련하여 설명된다.
선택 모듈(260)은 네이티브 결과 모듈(220)에 의해 생성된 검색 질의어 제안의 제 1 서브세트 및 제 2 서브세트 및 확장 결과 모듈(250)에 의해 생성된 검색 질의어 제안을 선택한다. 일부 실시예에서, 검색 질의어 제안의 제 1 서브세트는 네이티브 결과 모듈(220)에 의해 생성된 검색 질의어 제안을 포함하는 반면, 검색 질의어 제안의 제 2 서브세트는 확장 결과 모듈(250)에 의해 생성된 검색 질의어 제안을 포함한다. 선택 모듈(260)은 제 1 서브세트 및 제 2 서브세트 각각에 대해 동일한 또는 상이한 수의 검색 질의어 제안를 선택한다. 일부 예에서, 검색 질의어 제안의 제 2 서브세트에 포함된 검색 질의어 제안의 수는 적어도 부분적으로는 제 1 서브세트 내의 검색 질의어 제안의 수에 기초할 수 있다. 선택 모듈(260)은 하드웨어 구현 모듈 또는 하드웨어-소프트웨어 조합 구현 모듈일 수 있다. 선택 모듈(260)의 컴포넌트의 예시적인 실시예는 "모듈, 컴포넌트 및 로직"이라는 제목의 섹션에서 후술되는 모듈과 관련하여 설명된다.
제안 모듈(270)은 검색 질의어 제안의 제 1 서브세트와 검색 질의어 제안의 제 2 서브세트를 결합하고 검색 질의어 제안의 결합된 서브세트를 일정 순서(order)로 구성한다. 일부 실시예에서, 검색 질의어 제안의 결합된 서브세트들의 순서는 제 1 서브세트의 순서 및 제 2 서브세트의 순서와 상이하다. 예를 들어, 제안 모듈(270)은 제 1 서브세트의 검색 질의어 제안 사이에 제 2 서브세트의 하나 이상의 검색 질의어 제안을 산재시킬 수 있다. 제안 모듈(270)은 하드웨어 구현 모듈 또는 하드웨어-소프트웨어 조합 구현 모듈일 수 있다. 제안 모듈(270)의 컴포넌트의 예시적인 실시예는 "모듈, 컴포넌트 및 로직"이라는 제목의 섹션에서 후술되는 모듈과 관련하여 설명된다.
프레젠테이션 모듈(280)은 제안 모듈(270)에 의해 결정된 순서에 따라 결합된 검색 질의어 제안의 프레젠테이션이 이루어지도록 한다. 예를 들어, 프레젠테이션 모듈(280)은 클라이언트 장치(110)에서의 프레젠테이션을 위해 사용자 인터페이스 요소, 스크린, 프레임 등의 세트를 생성한다. 프레젠테이션 모듈(280)은 클라이언트 장치(110)의 사용자 인터페이스 상에 결합된 검색 질의어 제안이 프레젠테이션되게 한다. 일부 실시예에서, 프레젠테이션 모듈(280)은 결합된 검색 질의어 제안을 클라이언트 장치(110)에 송신함으로써 결합된 검색 질의어 제안의 프레젠테이션이 이루어지게 한다. 프레젠테이션 모듈(280)은 하드웨어 구현 모듈 또는 하드웨어-소프트웨어 조합 구현 모듈일 수 있다. 프레젠테이션 모듈(280)의 컴포넌트의 예시적인 실시예는 "모듈, 컴포넌트 및 로직"이라는 제목의 섹션에서 후술되는 모듈과 관련하여 설명된다.
통신 모듈(290)은 클라이언트 장치(110), 검색 향상 시스템(150), 배포 시스템(들)(142) 및 임의의 다른 적합한 시스템 간의 통신을 가능하게 한다. 일부 실시예에서, 통신 모듈(290)은 수신기 모듈(210), 네이티브 결과 모듈(220), 액세스 모듈(230), 토큰 관리 모듈(240), 확장 결과 모듈(250), 선택 모듈(260), 제안 모듈(270) 및 프레젠테이션 모듈(280) 간의 통신을 가능하게 한다. 통신 모듈(290)은 이하에서 보다 상세히 설명되는 바와 같이, 하드웨어 구현 모듈, 소프트웨어 구현 모듈, 또는 이들의 조합일 수 있다. 예를 들어, 통신 모듈(290)은 안테나, 송신기, 하나 이상의 버스 등과 같은 통신 메커니즘 및 모듈(210-280), 클라이언트 장치(110), 검색 향상 시스템(150) 및 배포 시스템(142) 간의 통신을 가능하게 할 수 있는 다른 적절한 통신 메커니즘을 포함할 수 있다. 통신 모듈(290)은 하드웨어 구현 모듈, 소프트웨어 구현 모듈 또는 이들의 조합일 수 있다. 통신 모듈(290)의 컴포넌트의 예시적인 실시예는 "모듈, 컴포넌트 및 로직"이라는 제목의 섹션에서 후술되는 모듈과 관련하여 설명된다.
보다 상세히 후술되는 일부 실시예 및 실시예의 조합에서, 검색 향상 시스템의 모듈은 함께 동작하여, 이하에서 의사 코드에 의해 표현되는 동작들을 수행하며, 의사 코드는 다음을 포함한다.
Data: 검색의 질의어 스트링, q. 이 스트링은 접두사, 토큰 또는 완성 질의어가 될 수 있음.
Result: 자동 완성을 위한 q와 관련된 질의어 리스트
NQ = retrieveQAC(q);
initializeEQ;
candidateRequests = expand(q);
for c in candidateRequests do
| EQ.addAll(retrieveQAC(c));
end
EQ' = selection(EQ);
boostRank(EQ');
AQ = merge(NQ, EQ');
return AQ;
위의 의사 코드에서, 다양한 실시예의 도면 및 설명에 의해 더 상세히 후술되는 바와 같이, NQ는 네이티브 큐이고, QAC는 질의어 자동 완성이고, q는 현재 질의어이다. 위의 예시적인 의사 코드에 나타낸 바와 같이, 사용자(106)의 각 질의어는 토큰으로 파싱된다. 검색 향상 시스템(150)은 토큰을 클리닝하기 위해 단어 필터링을 수행할 수 있고, 토큰 풀에 이들을 저장하며, 토큰 풀은 세션에서 중요도가 있는 토큰을 기록 및 추적할 수 있다.
도 3은 몇몇 예시적인 실시예에 따라 검색 질의어 제안을 향상시키는 방법(300)을 수행하고 있는 검색 향상 시스템(150)의 동작 흐름도이다. 방법(300)에서의 동작은 도 2과 관련하여 상술한 모듈 및 후술되는 하드웨어(예: 프로세서, 서버, 컴퓨팅 환경 등)를 사용하여 검색 향상 시스템(150)에 의해 수행된다.
동작(310)에서, 수신 모듈(210)은 클라이언트 장치(110)로부터 적어도 토큰 부분을 포함하는 질의어 부분을 수신한다. 다양한 예시적인 실시예에서, 수신기 모듈(210)은 네트워크(104)를 통해 클라이언트 장치(110)로부터 질의어 부분을 수신한다. 예를 들어, 수신기 모듈(210)은 포트, 서버, 또는 클라이언트 장치(110)로부터 질의어 또는 질의어 부분을 수신할 수 있는 임의의 다른 메커니즘일 수 있다. 수신기 모듈(210)은 q. tok [1 ... n]으로 표현되는 n 토큰의 형태로 질의어 부분을 수신할 수 있다. 방법(300)은 임의의 디바이스(예를 들어, 클라이언트 장치(110))로부터 질의어, 질의어 부분, 토큰 또는 토큰 부분을 발행하는 사용자(106)에 응답하여 개시될 수 있다. 일부 예시적인 실시예에서, 질의어 부분 이외에, 웹 서버(122)의 형태인 수신기 모듈(210)이 자동 완성을 위한 추천 검색어 요청을 수신한다. 수신기 모듈(210)은 질의어 제안에 대한 요청을 검색 향상 시스템(150) 내의 다른 모듈에 전송한다. 예를 들어, 수신기 모듈(210)은 이하에서 더 상세하게 설명되는 네이티브 결과 모듈(220)로 요청을 전송할 수 있다.
질의어는 일 실시예에 따라, 사용자(106)에 의해 사용되며 사용자가 원하는 아이템을 검색하도록 검색 엔진에 의해 수신되는 단어들의 세트이다. 예를 들어, "prada eyeglasses"는 검색 엔진에 의해 수신되고 사용자(106)가 원하는 프라다 브랜드의 안경을 검색하도록 검색 엔진에 의해 처리되는 사용자 질의어일 수 있다. 적어도 일부 실시예에서, 본 개시내용은 다음 단락에서 질의어를 대표하는 것으로서 q를 사용한다. 일부 예에서, "prada eyeglasses"은 사용자(106)가 완전한 질의어를 형성하기 위해 추가 질의어 부분을 추가하는 질의어 부분일 수 있다. 질의어 부분은 질의어의 일부로 이해될 수 있다. 일부 경우에, 질의어 부분은 완성된 질의어이나, 다른 경우에 질의어 부분은 완성된 질의어보다 짧다. 전술한 바와 같이, 질의어 부분은 적어도 클라이언트 장치(110)로부터 수신된 토큰 부분을 포함한다.
토큰은 다양한 예시적인 실시예에 따라 질의어 또는 질의어 부분 내 단어의 서브-리스트로 이해된다. 예를 들어, "prada eyeglasses"이라는 질의어 부분에는 "prada", "eyeglasses" 및 "prada eyeglasses"의 세 가지 토큰이 포함된다. 다양한 실시예에 대한 본 개시 내용은 다음 단락에서 토큰을 대표하는 것으로서 t를 사용할 것이다. 즉, q는 t의 리스트이다. 편의를 위해, 본 개시내용은 q 내의 1부터 i까지의 토큰의 서브-리스트를 나타내기 위해 q. tok[1..i]를 사용한다. 토큰 부분은 토큰의 일부 또는 단편으로 이해될 수 있다. 예를 들어 토큰이 "eyeglasses"인 경우 토큰 부분은 "eye" 또는 "eyegl."과 같은 용어의 일부이다. 동작(310)은 완전한 질의어 또는 토큰을 수신하기 전에 개시될 수 있다. 이와 같이, 일부 실시예에서, 동작(310)은 검색 향상 시스템(150)이 검색 질의어 제안을 생성할 수 있는 최소한의 동작가능 문자 세트(예, 토큰 부분)의 수신 시에 개시될 수 있다.
동작(320)에서, 네이티브 결과 모듈(220)은 토큰 부분에 기초하여 제 1 검색 질의어 제안 세트를 생성한다. 네이티브 결과 모듈(220)은 수신기 모듈(210)로부터 질의어 제안에 대한 요청을 수신하는 것에 기초하여 동작(320)을 수행할 수 있다. 제 1 검색 질의어 제안 세트는 제 1 순서의 제 1 제안 토큰 세트를 포함한다. 다양한 예시적인 실시예에서, 제 1 검색 질의어 제안 세트는 자동 완성 결과의 네이티브 큐이다. 네이티브 큐는 글로벌 스코어링 함수(global scoring function)에 의해 생성될 수 있다. 예를 들어, 사용자(106)가 "prada"를 질의하면, 네이티브 큐는 글로벌 스코어링 함수에 의해 결정된 "prada"와 관련된 상위 n 개의 질의어 제안을 포함할 수 있다. 다르게 설명하면, 네이티브 큐는 자동 완성 시스템이 초기에 제공한 결과가 포함된다. 편의상, 본 개시내용은 NQ[i]를 사용하여 NQ에서 i번째 질의어 항목을 나타낸다. NQ[last]는 NQ에서의 마지막 질의어 제안을 나타낸다.
네이티브 결과 모듈(220)은 질의어 또는 질의어 부분을 수신하고, 질의어 제안 세트(예를 들어, 네이티브 큐)를 생성하며, 질의어 제안 세트를 클라이언트 장치(110) 또는 검색 향상 시스템(150)의 하나 이상의 다른 모듈에 전송하도록 구성된 서버(예를 들어, 자동 완성 서버)로서 구현될 수 있다. 일부 실시예에서, 네이티브 결과 모듈(220)은 확장 결과 모듈(250)(예를 들어, 확장 결과 서버)과 논리적으로 또는 물리적으로 분리된 네이티브 결과 서버로서 구현된다. 일부 경우에, 네이티브 결과 모듈(220)은 확장 결과 모듈(250)(예를 들어, 확장 결과 서버)과 동일한 서버 장비상에 구현된다. 네이티브 결과 서버의 구현의 기초를 형성할 수 있는 예시적인 하드웨어가 도 1의 머신과 관련하여 아래에서 설명된다.
동작(330)에서, 액세스 모듈(230)은 클라이언트 장치(110)와 연관된 토큰 풀에 액세스한다. 일부 경우에, 액세스 모듈(230)은 토큰 풀 데이터베이스 또는 데이터베이스(126) 상의 토큰 풀 테이블에 액세스함으로써 토큰 풀에 액세스한다. 일부 실시예에서, 토큰 풀 데이터베이스는 세션 히스토리 서버(154)에 저장되고, 액세스 모듈(230)은 토큰 풀에 액세스하기 위해 세션 히스토리 서버(154)에 질의하거나 액세스한다. 세션 히스토리 서버(154)에 액세스한 후, 액세스 모듈(230)은 사용자(106) 및 그 안에 저장된 토큰에 대한 세션 히스토리(예를 들어, 질의어 히스토리 또는 토큰 풀)의 전부 또는 일부를 검색한다. 일부 경우에, 액세스 모듈(230)은 서버의 포트, 서버 및 토큰 풀에 액세스하기 위해 소프트웨어에 액세스하거나 소프트웨어에 의해 구성될 수 있는 임의의 다른 적절한 메커니즘 중 하나 이상으로서 구현된다. 일부 예시적인 실시예에서, 액세스 모듈(230)은 수신기 모듈(210)이 질의어 제안에 대한 요청을 전달함으로써 세션 히스토리 서버(154)상의 토큰 풀에 액세스하도록 프롬프트된다.
다양한 실시예에서, 토큰 풀은 일 실시예에 따라 사용자(예를 들어, 사용자(106))의 세션 히스토리에 토큰 또는 토큰 부분을 기록하는 풀이다. 토큰 풀은 품질을 갖춘(예: 고품질) 토큰을 제공할 수 있다. 토큰의 품질을 정의하는 데는 여러 가지 방법이 있을 수 있다. 토큰이 갖는 특징(예: 토큰 특징)은 t.features으로 표시될 수 있으므로 토큰의 품질은 로 공식화될 수 있다. 토큰 풀은 임의의 선택 전략(예: 모든 토큰, 고품질의 상위 n개의 토큰, 풀에서 임의로 선택한 n개의 토큰)에 기초하여 토큰을 제공할 수 있다. 다양한 실시예에서, 토큰 풀 내의 토큰은 하나 이상의 클라이언트 장치(110), 사용자(106) 또는 이들의 조합과 연관될 수 있다. 예를 들어 토큰 풀 테이블 형식의 토큰 풀은 토큰 풀의 토큰 및 클라이언트 장치(110)나 사용자(106) 사이의 연관성의 표현을 포함하는 하나 이상의 연관 데이터 구조 (예를 들어, 연관 데이터베이스, 연관 테이블 등)에 링크될 수 있다. 몇몇 경우에, 토큰 풀은 개별 사용자(106) 또는 클라이언트 장치(110)의 세션 히스토리 간에 분산될 수 있다. 이들 경우의 일부 실시예에서, 토큰 풀의 동일한 토큰은 토큰이 연관되어 있는 각 사용자(106) 또는 클라이언트 장치(110)의 세션 히스토리에 저장될 수 있다.
세션 히스토리는 다양한 실시예에 따른 사용자(106)의 히스토리 질의어의 기록이다. 사용자(106)의 세션 히스토리를 기록하는 (예를 들어, 이 사용자(106)가 처음으로 시스템을 사용하고 과거 n 일/월/년으로부터의 질의어 기록을 저장한 이후의 모든 질의어 기록을 저장하는) 몇 가지 전략이 있을 수 있다. 세션 히스토리의 저장 위치는 변경될 수 있다(예: 클라이언트 측(컴퓨터, 모바일 장치)에 저장되거나 서버 측에 저장되거나 중간 장치에 저장됨). 질의어 히스토리를 저장 위치로 전송하는 전략은 또한 복수의 구현 예를 가질 수 있다(예를 들어, 사용자 질의어 히스토리를 즉시 전송하는 것, 클라이언트 측에서 사용자 질의어 히스토리를 먼저 전송하는 것, 주기적으로 히스토리를 세션 히스토리 서버(154)로 다시 전송하는 것).
다양한 예시적인 실시예에서, 토큰 특징(token features)은 토큰 풀 내의 토큰 또는 질의어 항목의 특징인 것으로 이해될 수 있다. 토큰 특징의 예는 세션 히스토리 내의 토큰의 사용 시간일 수 있다. 또한, 토큰 특징에는 토큰 빈도, 토큰 최신성(token recency) 및 토큰 또는 질의어 항목이 토큰 풀에 수신될 때 기록 가능한 다른 특징이 포함될 수 있다. 토큰 빈도는 다양한 실시예에 따라 세션 히스토리에 특정 토큰이 얼마나 두드러지게 나타나는지를 기술하는데 사용되는 메트릭이다. 토큰 빈도는 다수의 전략을 사용하여 결정될 수 있다. 예를 들어, 토큰 빈도는 세션 히스토리에서의 특정 토큰의 빈도로 결정된다. 토큰 빈도는 또한 세션 히스토리 내의 특정 토큰의 빈도의 정규화된 형태로서 결정될 수 있다. 본 개시 내용에서 토큰 빈도는 t. freq 로 표현된다.
토큰 최신성(token recency)은 토큰이 세션 히스토리에서 사용자(106)에 의해 얼마나 최근에 사용되었는지를 나타내는 메트릭으로 이해될 수 있다. 토큰 최신성이 복수의 사용자(106)의 글로벌 풀의 문맥에서 사용되는 경우, 토큰 최신성은 임의의 사용자(106)에 의해 얼마나 최근에 토큰이 사용되었는지를 나타낼 수 있다. 일부 경우에, 토큰 최신성은 세션 히스토리 내의 특정 토큰 가장 최근의 출현 또는 이의 정규화된 값으로 결정된다. 토큰 관리 모듈(240), 확장 결과 모듈(250) 또는 네이티브 결과 모듈(220)은 부분적으로 토큰 풀 또는 글로벌 토큰 풀 내의 토큰 또는 질의어 항목과 연관된 시간 값에 의해 토큰 최신성을 결정할 수 있다. 시간 값은 토큰이 사용자(예를 들어, 사용자(106))에 의해 사용된 시간을 나타낼 수 있다. 토큰 최신성은 t. rec로 표시될 수 있다.
다양한 예시적인 실시예에서, 토큰 풀에 액세스하는 것은 추가적인 기능을 포함한다. 예를 들어, 도 3에 도시된 바와 같이, 동작(330)은 수신기 모듈(210)이 검색 질의어를 형성하는 토큰 세트를 수신하는 동작(332)을 포함한다.
동작(334)에서, 토큰 관리 모듈(240)은 토큰 세트를 저장하여 토큰 풀을 형성한다. 다양한 예시적인 실시예에서, 토큰 관리 모듈(240)은 세션 히스토리 서버(154)와 연관된 데이터 구조 및 데이터 저장 장치에 토큰 세트를 저장한다. 예를 들어, 토큰 관리 모듈(240)은 토큰 세트를 사용자(106)와 연관된 토큰 테이블에 저장하고, 토큰 세트의 각 토큰에 대한 하나 이상의 특징을 나타내는 값을 포함한다. 토큰 세트가 저장된 데이터 구조(예를 들어, 데이터 테이블)는 세션 히스토리 서버(154)와 같은 검색 향상 시스템(150)의 하나 이상의 서버의 일부일 수 있다.
동작(336)에서, 토큰 관리 모듈(240)은 토큰 풀을 사용자(106) 중 하나 이상 및 사용자(106)와 연관된 클라이언트 장치(110)와 연관시킨다. 토큰 관리 모듈(240)은 토큰 풀을 나타내는 데이터 구조 내의 값을 수정함으로써 토큰 풀을 연간시킬 수 있다. 다양한 실시예에서, 토큰 관리 모듈(240)은 토큰 풀과 사용자(106) 사이의 연관성을 나타내는 메타 데이터를 생성하거나 수정한다.
동작(340)에서, 확장 결과 모듈(250)은 토큰 부분 및 토큰 풀에 기초하여 제 2 검색 질의어 제안 세트를 생성한다. 일부 실시예에서, 제 2 검색 질의어 제안 세트는 제 2 순서의 제 2 제안 토큰 세트를 포함한다. 확장 결과 모듈(250)은 서버(예를 들어, 확장 결과 서버)로서, 네이티브 결과 모듈(220)이 구현되는 서버의 논리 컴포넌트(예를 들어, 자동 완성 서버)로서 또는 임의의 다른 적절한 하드웨어로서 구현될 수 있다. 제 2 검색 질의어 제안 세트는 다양한 예시적인 실시예에 따라 검색 질의어 제안(예를 들어, 네이티브 큐)을 향상시키기 위해 검색 향상 시스템(150)에 의해 예측/확장된 추가 자동 완성 결과를 나타내는 확장 큐(EQ)이다. 확장 큐는 사용자(106)에 대한 최종 자동 완성 결과를 생성하기 위해 네이티브 큐와 병합될 수 있다. 편의상, 확장 큐는 EQ에서 j번째 질의 제안을 나타내는 EQ[j]로서 본 명세서에 나타낸다.
확장 큐를 생성하는 것은 검색 확장 시스템(150)이 사용자의 세션 히스토리 및 토큰 풀에 기초하여 사용자 질의어를 먼저 확장함으로써 검색 질의어 제안(예를 들어, 네이티브 큐)을 향상시키는 확장 동작으로 이해될 수 있다. 검색 향상 시스템(150)은 다중 확장 전략을 이용하여 시스템 개발자의 선택, 파라미터 또는 요구에 기초하여 검색 질의어 제안을 향상시킨다. 예를 들어, 검색 향상 시스템(150)은 토큰 풀로부터의 토큰을 현재의 질의어에 전치(prepend) 또는 추가하거나, 동작(310)에서 수신된 토큰 부분을 완성하기 위해 토큰 부분을 전치하거나 추가하거나, 질의어 중간에 토큰을 삽입하거나, 토큰의 동의어나 어원을 사용하거나, 히스토리의 질의어를 현재 질의어와 연결(concatenating)하거나 다른 적절한 확장 전략을 사용할 수 있다. 검색 향상 시스템(150)은 이러한 확장 전략을 사용하여 현재 질의어를 잠재 질의어 리스트으로 확장할 수 있다. 각각의 잠재적 질의어에 대해, 검색 향상 시스템(150)은 세션 히스토리 서버(154)로부터 대응하는 질의어 제안 결과를 검색할 수 있다.
다양한 예시적인 실시예에서, 동작(340)은 하나 이상의 클리닝 기능을 포함한다. 클리닝 기능에는 질의어 클리닝 기술이라면 어느 것이나 포함될 수 있다. 예를 들어, 검색 향상 시스템(150)은 트리밍(trimming), 스테밍(stemming) 및 스톱 워드 필터링(stop word filtering) 중 하나 이상을 사용할 수 있다. 클리닝 기능은 질의어나 질의어 부분에서 관계없는 토큰이나 토큰 부분을 제거한다.
동작(350)에서, 선택 모듈(260)은 검색 질의어 제안의 제 1 서브세트 및 검색 질의어 제안의 제 2 서브세트를 선택한다. 다양한 경우에, 검색 질의어 제안의 제 1 서브세트는 제 1 검색 질의어 제안 세트로부터 선택되고, 검색 질의어 제안의 제 2 서브세트는 제 2 검색 질의어 제안 세트로부터 선택된다. 선택 모듈(260)은 확장 결과 서버와 같은 서버로서 구현될 수 있다.
검색 질의어 제안의 제 1 서브세트 및 검색 질의어 제안의 제 2 서브세트를 선택하는 것은 선택 기능으로서 이해될 수 있다. 일부 예시적인 실시예에서, 선택 기능은 선택 스코어링 함수을 포함한다. 선택 스코어링 함수은 질의어 제안이 최종 자동 완성 큐에 잠재적으로 리스트되는지 여부를 평가하기 위해 검색 향상 시스템(150)에 의해 이용될 수 있다. 일 실시 형태에 따르면 스코어링 함수은 다음과 같을 수 있다:
스코어링 함수는 확장 큐로부터의 질의어 제안이 검색 질의어 제안의 제 2 세트(예를 들어, 확장 큐)로부터의 검색 질의어 제안의 제 2 서브세트로 선택되어야 하는지를 결정한다. 일부 예시적인 실시예에서, 스코어링 함수는 네이티브 큐로부터의 질의어 제안이 검색 질의어 제안의 제 1 세트(예를 들어, 네이티브 큐)로부터의 검색 질의어 제안의 제 1 서브세트로 선택되어야 하는지를 결정하는데 사용될 수 있다. 스코어링 함수을 사용하여, 선택 모듈(260)은 질의어 항목이 확장 큐 또는 네이티브 큐로부터의 다른 질의어보다 비교적 더 중요한 토큰을 나타내는지를 결정한다. 스코어링 함수은 선택 모듈(260)이 글로벌 스코어가 확장 큐 또는 네이티브 큐로부터의 다른 질의어보다 높은지 여부를 결정할 수 있게 한다. 그 다음, 선택 모듈(260)은 표현된 토큰(represented token)의 상대적 중요도 및 표현된 토큰의 글로벌 스코어 중 하나 이상에 기초하여 검색 질의어 제안의 제 2 서브세트 또는 검색 질의어 제안의 제 1 서브세트에 포함시키기 위한 표현된 토큰을 선택할 수 있다.
다양한 실시예에서, 토큰 중요도는 동작(310)에서 수신기 모듈(210)에 의해 수신된 질의어 부분에 대한 토큰의 중요도를 나타낸다. 토큰 중요도는 토큰 계수(예컨대, 토큰 빈도 및 토큰 최신성)에 기초하여 결정될 수 있다. 일부 실시예에서, 토큰 중요도는 t.imp에 의해 표현되고 t. freq , t. rec 및 다른 인자의 함수일 수 있다. 이와 같이, 적어도 일부 실시예에서, 토큰 중요도는 다음 방정식을 사용하여 결정될 수 있다:
질의어 중요도는 다양한 실시예에서 토큰 중요도와 관련된다. 질의어 중요도는 스코어링 함수와 관련하여 위에 설명한 q.imp로 나타낼 수 있다. 질의어 중요도는 다음 함수를 통해 결정될 수 있다:
일부 예시적인 실시예에서, 각 질의어 제안에 대한 선택 스코어를 계산한 후, 검색 향상 시스템(150)의 선택 모듈(260)은 필터 함수를 사용하여 검색 질의어 제안의 제 1 서브세트 또는 검색 질의어 제안의 제 2 서브세트에 포함시키기 위한 한정된 질의어 항목을 선택한다. 필터 함수는 다음과 같이 나타낼 수 있다:
선택된 질의어 항목은 아래에서보다 상세히 설명되는 한정된 질의어 제안을 포함할 수 있다. 검색 질의어 제안의 제 2 서브세트에 포함될 선택된 질의어 항목이 EQ'로 표현될 수 있다. 일부 실시예에서, EQ'에 대한 선택된 질의어 항목의 최대 수가 제어된다. 예를 들어, 선택된 질의어 항목은 검색 향상 시스템(150)의 동작 이전에 미리 결정된 수로 제한될 수 있다.
검색 질의어 제안의 제 2 세트로부터 포함되도록 선택된 질의어 항목은 검색 질의어 제안의 제 2 서브세트에 배치될 수 있다. 예를 들어, 선택된 질의어 항목은 방법(300)에서의 추가 사용을 위해 자동 완성 서버의 메모리(예를 들어, RAM)에 저장될 수 있다. 일부 실시예에서, 선택된 질의어 항목은 연관된 클라이언트 장치(110) 또는 세션 식별자에 대한 참조와 함께 세션 히스토리 서버(154)에 저장된다. 유사하게, 선택 모듈(260)이 검색 질의어 제안의 제 1 세트로부터 질의어 항목을 선택하는 실시예에서, 선택 모듈(260)은 자동 완성 서버의 메모리 또는 세션 히스토리 서버(154)에 유사 질의어 제안의 제 1 서브세트에 선택된 질의어 항목들을 배치하여 저장되도록 선택된 질의어 항목을 검색 질의어 제안의 제 1 서브세트에 배치할 수 있다.
동작(360)에서, 제안 모듈(270)은 검색 질의어 제안의 제 1 서브세트와 검색 질의어 제안의 제 2 서브세트를 병합하여 제 3 검색 질의어 제안 세트를 형성한다. 다양한 예시적인 실시예에서, 제안 모듈(270)은 제 1 순서 및 제 2 순서와 구별되는 제 3 순서로 제 3 검색 질의어 제안 세트를 구성한다. 제안 모듈(270)은 자동 완성 서버와 같은 서버로서 또는 서버상에 구현될 수 있다.
제안 모듈(270)은 검색 질의어 제안의 제 1 서브세트 및 검색 질의어 제안의 제 2 서브세트를 선택 모듈(260)로부터 수신할 수 있다. 일부 실시예에서, 제안 모듈(270)은 검색 질의어 제안의 제 1 서브세트 및 검색 질의어 제안의 제 2 서브세트를 나타내는 데이터를 수신할 수 있다. 예를 들어, 제안 모듈(270)은 검색 질의어 제안의 제 1 및 제 2 서브세트의 질의어 항목 각각에 대한 데이터 구조(예를 들어, 서버 내의 메모리 위치, 데이터베이스(126) 또는 데이터 테이블) 내의 위치를 나타내는 표시자(indicator)를 수신한다. 이 실시예에서, 제안 모듈(270)(예를 들어, 제안 서버)은 검색 질의어 제안의 제 1 및 제 2 서브세트를 병합하기 전에 검색 질의어 제안의 제 1 및 제 2 서브세트의 질의 항목에 액세스하거나 검색한다.
검색 질의어 제안의 제 1 서브세트와 검색 질의어 제안의 제 2 서브세트를 병합하는 것은 병합 상태 또는 병합 기능으로서 이해될 수 있다. 병합 상태에서, 검색 향상 시스템(150)은 NQ(예를 들어, 네이티브 큐) 및 EQ(예를 들어, 확장 큐)를 제 3 검색 질의어 제안 세트로 결합한다. 이와 같이 제 3 검색 질의어 제안 제안 세트는 자동 완성 대기열(AQ)이다. 다양한 예시적인 실시예에서, 자동 완성 큐는 NQ와 EQ를 병합하여 생성된 최종 큐이다. AQ는 클라이언트 장치(110)에서 사용자(106)가 고려하도록 검색 향상 시스템(150)에 의해 제공될 수 있다.
병합 기능은 다양한 병합 전략에 따라 검색 질의어 제안의 제 1 서브세트와 검색 질의어 제안의 제 2 서브세트를 병합할 수 있다. 예를 들어, 제안 모듈(270)은 검색 질의어 제안의 제 1 및 제 2 서브세트로부터의 질의어 항목을 리스트에 무작위로 삽입함으로써, 또는 정렬된 리스트를 생성함으로써, 또는 정렬된 리스트에서 검색 질의어 제안의 제 2 서브세트를 검색 질의어 제안의 제 1 서브세트보다 위에 배치함으로써, 또는 글로벌 스코어에 기초하여 검색 질의어 제안의 제 1 및 제 2 서브세트의 질의어 항목을 정렬함으로써, 또는 다른 적절한 병합 또는 정렬 방법으로써 검색 질의어 제안의 제 1 및 제 2 서브세트를 병합할 수 있다. 하나의 병합 예는 먼저 NQ로부터 상위 m 개의 질의어 항목을 선택하고 EQ로부터 상위 n 개의 질의어 항목을 선택하여 AQ로 병합하고, AQ의 끝부분에 EQ'로부터의 n 개의 질의어 제안을 일시적으로 배치하는 것을 포함한다. AQ내의 EQ'의 최종 위치는 보다 상세하게 후술되는 부스팅 기능(boosting function)에 의해 결정될 수 있다.
아래에서보다 상세히 설명되는 바와 같이, 다양한 예시적인 실시예에서, 상위 m 개의 질의어는 사전 결정된 또는 상대적인 임계값을 초과하는 글로벌 스코어에 의해 결정된다. 상위 m 개의 질의어의 선택 프로세스는 다음과 같이 표현될 수 있다.
전술한 바와 같이, NQ[m]는 NQ의 m번째 질의어 제안을 나타낸다. 일부 예시적인 실시예에서, 상위 n 개의 질의어 항목에 대한 선택 프로세스는 다음과 같이 표현될 수 있다:
본 실시예에서, EQ'[n]은 EQ를 위해 선택된 n 번째 질의어 제안을 나타낸다.
상술한 바와 같이, 검색 질의어 제안의 제 1 및 제 2 서브세트를 병합하는 동작(360)은 하나 이상의 구성 동작(organization operations)을 포함할 수 있다. 다양한 예시적인 실시예에서, 동작(360)은 제안 모듈(270)이 제 1 검색 질의어 제안 세트의 제 1 순서 및 제 2 질의어 제안 세트의 제 2 순서와 구별되는 제 3 순서로 제 3 검색 질의어 제안 세트(예를 들어, AQ)를 구성하는 동작(362)을 포함한다. 구성 방법의 예시적인 실시예는 이하에서 더 상세하게 설명된다.
동작(370)에서, 프레젠테이션 모듈(280)은 클라이언트 장치(110)에서 제 3 순서로 제 3 검색 질의어 제안 세트(예를 들어, AQ)의 프레젠테이션이 이루어지게 한다. 다양한 실시예에서, 프레젠테이션 모듈(280)은 제 3 검색 질의어 제안 세트를 클라이언트 장치(110)에 전송함으로써 제 3 질의어 제안 세트의 프레젠테이션이 이루어지게 한다.
제 3 검색 질의어 제안 세트의 프레젠테이션 시에, 클라이언트 장치(110) 또는 프레젠테이션 모듈(280)은 하나 이상의 사용자 지각 가능한 사용자 인터페이스 요소가 생성되어 사용자(106)에게 제공되게 한다. 예를 들어, 제 3 검색 질의어 제안 세트는 사용자 인터페이스에 입력된 질의어 부분 또는 토큰 부분에 근접한 클라이언트 장치(110)의 사용자 인터페이스상에 가시적인 사용자 인터페이스 요소로서 생성될 수 있다. 일부 예시적인 실시예에서, 제 3 검색 질의어 제안 세트의 질의어 항목은 사용자 인터페이스에서 청취 가능한 사용자 인터페이스 요소로서 제시되거나, 오디오 출력 장치를 통해 재생되거나, 또는 다른 사용자가 인지할 수 있는 프레젠테이션 방법을 통해 제공된다. 하나 이상의 사용자 지각 가능한 사용자 인터페이스 요소는 선택 가능한 사용자 인터페이스 요소일 수 있어서, 선택 가능한 사용자 인터페이스 요소의 선택시(예를 들어, 질의어 항목에 근접한 터치 스크린을 터치하는 것, 질의어 항목을 클릭 또는 근접시키는 것, 커서를 질의어 항목으로 향하게 하는 것), 선택 가능한 사용자 인터페이스 요소와 연관된 질의어 항목은 데이터 입력 필드에 입력되고, 여기서 질의어 부분 또는 토큰 부분이 입력된다. 일부 경우에, 데이터 입력 필드에 입력되는 질의어 항목은 질의어 부분 또는 토큰 부분을 대체하고 질의어 부분 또는 토큰 부분을 확장 또는 완성하거나 또는 질의어 부분 또는 토큰 부분에 추가로 입력된다.
일부 예시적인 실시예에서, 검색 향상 시스템(150)은 가능성이 없는 후보 질의어를 제거함으로써 서버상의 작업 부하를 감소시키기 위해 n-그램 모델을 사용한다. n-그램 모델은 본 명세서에 기술된 서버들에 대해 작업부하를 감소시키고 검색 향상 시스템(150)의 응답 시간을 개선할 수 있는 최적화 휴리스틱(heuristic)으로서 동작한다.
n-그램은 주어진 문서 세트에 나타나는 n 개의 토큰(예를 들어, 질의어)의 시퀀스이다. 검색 향상 시스템(150)은 확장된 질의어의 조인트(joint)를 체크하기 위해 바이그램(바이그램(n = 2)) 모델을 사용하여 평가될 수 있다. 바이그램 모델에 질의어(예: 확장된 큐에 포함될 수 있는 질의어)의 조인트가 있는 경우, 최종 병합을 위한 질의어를 더 요청하는 데 질의어가 사용될 수 있다. 만약 질의어들 사이의 조인트가 바이그램 모델에 존재하지 않는다면, 테스트되는 질의어는 확장된 큐에서 제외될 수 있다. 예를 들어, 현재 질의어가 ab이고 이러한 질의어가 토큰 c에 의해 abc로 확장되면, 검색 향상 시스템(150)은 조인트 bc가 바이그램 모델에 존재하는지를 검사한다.
n-그램 모델은 문서 세트 내의 n-그램 및 n-그램의 빈도를 기록할 수 있다. 일부 실시예에서, 다른 질의어 제안들과 비교하여, 질의어 제안들의 수를 상대적인 빈도를 갖는 그러한 질의어 제안으로 한정하도록 바이그램 모델이 제한된다. 예를 들어, 바이그램 모델은 미리 결정된 퍼센트로 제한될 수 있다. 바이그램 모델을 일정 퍼센트로 제한하기 위해, k 개의 바이그램으로 한정된 바이그램 모델에 대해 l% 가 지정되는 경우, 검색 향상 시스템은 바이그램 모델 내의 모든 바이그램을 빈도별로 분류하고 l% * k의 순위(ranking)를 갖는 바이그램을 기준(pivot)으로 채택하며, 기준과 같거나 더 큰 빈도를 갖는 모든 바이그램을 선택한다. 바이그램 모델의 제한은 확장된 질의어 제안 큐를 제한하는 효과를 가질 수 있다. 예를 들어, 일부 경우에는, 서버 작업부하 및 네트워크 통신 작업부하(예: 대역폭)와 AQ의 포괄성(inclusiveness)의 균형을 맞추기 위해 바이그램 모델이 0.5% ~ 20%로 제한된다. 또한, 일부 실시예에서, 검색 향상 시스템(150)은 네이티브 큐에 대해 미리 결정된 수의 질의어 제안으로 제한되어, 자동 완성 제안을 실행하는 것과 관련하여 검색 향상 시스템(150)의 실행 시간을 증가시킨다. 네이티브 큐에 대한 질의어 제안의 수를 제한함으로써, 검색 향상 시스템(150)은 질의어 제안을 분류하여, 최고 퍼센트(top percentage)의 질의어 제안을 나타내는 이들에게 제출한다. 일부 경우에, 바이그램 모델의 퍼센트는 제안된 질의어에 포함되도록 선택될 질의어 또는 토큰의 빈도에 관해 제어될 수 있다.
도 4는 다양한 실시예에 따라 제 1 검색 결과 질의어 제안 세트를 생성하는 동작(320)을 수행하는 검색 향상 시스템(150)의 동작 흐름도이다. 도 4에 도시된 동작은, 도 2와 관련하여 전술한 모듈 및 도 10과 관련하여 후술될 하드웨어를 이용하여 검색 향상 시스템(150)에 의해 수행될 수 있다.
일부 예시적인 실시예에서, 클라이언트 장치(110)는 클라이언트 장치 세트의 제 1 클라이언트 장치이다. 동작(410)에서, 액세스 모듈(230)은 클라이언트 장치 세트와 관련된 글로벌 토큰 풀에 액세스한다. 액세스 모듈(230)은 동작(330)에서 클라이언트 장치에 대한 토큰 풀에 액세스하는 액세스 모듈(230)과 유사하게 글로벌 토큰 풀에 액세스할 수 있다. 글로벌 토큰 풀은 클라이언트 장치 세트의 하나 이상의 세션 히스토리에 토큰 또는 토큰 부분을 기록하는 글로벌 풀로서 이해될 수 있다. 일부 예에서, 클라이언트 장치 세트의 각각의 클라이언트 장치는 하나 이상의 연관된 세션 히스토리 레코드를 가지며, 각 세션 히스토리 레코드는 질의어 히스토리를 나타내는 하나 이상의 질의어 항목을 갖는다.
동작(420)에서, 네이티브 결과 모듈(220)은 토큰 부분 및 글로벌 토큰 풀에 기초하여 제 1 검색 질의어 제안 세트를 생성한다. 적어도 일부 실시예에서, 글로벌 토큰 풀을 사용하여, 네이티브 결과 모듈(220)은 각각의 질의어 항목에 대한 글로벌 스코어를 계산한다. 질의어 항목의 글로벌 스코어는 질의어에 대한 글로벌 스코어링 함수에 의해 계산된다. 본 명세서에서 논의된 바와 같이, 질의어에 대한 글로벌 스코어는 q.score.로 표현된다. 글로벌 스코어는 동작(310)에서 수신기 모듈(210)에 의해 수신된 질의어 부분에 대한 글로벌 토큰 풀 또는 사용자(106)에 대한 토큰 풀 내의 질의어 항목의 관련성을 나타낼 수 있다. 스코어링되는 질의어 항목의 특징은 q.features.로 표시된다. 이와 같이, 다양한 실시예에서, 글로벌 스코어링 함수는 다음의 방정식으로 표현될 수 있다:
또한, 도 5는 일부 예시적인 실시예에 따라, 검색 질의어 제안을 향상시키는 방법(500)을 수행하는 검색 향상 시스템(150)의 동작 흐름도이다. 방법(500)에서의 동작은 도 2과 관련하여 전술한 모듈 및 도 10과 관련하여 후술되는 하드웨어를 사용하여 검색 향상 시스템(150)에 의해 수행될 수 있다. 도 5에 도시된 바와 같이, 방법(500)은 도 3와 관련하여 전술된 방법(300)의 하나 이상의 동작을 포함한다.
동작(510)에서, 수신기 모듈(210)은 클라이언트 장치(110)로부터 질의어의 세트를 수신한다. 질의어의 세트는 히스토리 질의어의 세트를 나타낸다. 히스토리 질의어의 세트의 각각의 질의어는 히스토리 토큰 세트가 포함된다. 적어도 일부의 경우, 히스토리 질의어의 세트의 각 질의어의 히스토리 토큰 세트가 토큰 풀을 형성한다. 예를 들어, 클라이언트 장치(110)와 연관된 토큰 풀은 클라이언트 장치(110)로부터 연속적인 질의어 세트를 수신하는 수신기 모듈(210)에 의해 시간이 지남에 따라 채워질 수 있다. 각각의 히스토리 토큰은 하나 이상의 특징을 포함한다. 전술한 바와 같이, 히스토리 토큰에 대한 특징은 토큰의 사용 시간, 다른 토큰 또는 질의어 항목에 대한 토큰의 의미론적 관계, 질의어 시간, 토큰 풀 내에서의 토큰 또는 질의어 항목의 상대적 배치 및 토큰 풀 내의 토큰 또는 질의어 항목 간의 관계를 나타낼 수 있는 다른 적절한 특징을 포함할 수 있다.
다양한 실시예에서, 동작(310)에서 질의어 부분을 수신하고, 동작(320)에서 제 1 검색 질의어 제안을 생성하며, 동작(330)에서 토큰 풀에 액세스한 후, 동작(520)에서, 토큰 관리 모듈(240)이 토큰 풀의 각각의 히스토리 토큰에 대해 토큰 품질을 결정한다.
동작(530)에서, 토큰 관리 모듈(240)은 토큰 품질을 토큰 풀의 각각의 히스토리 토큰과 연관시킨다. 다양한 경우에, 토큰 관리 모듈(240)은 동작(340)에서 설정된 제 2 검색 질의어 제안을 생성하기 위해 임시로 이러한 연관성을 만든다. 토큰 품질을 토큰 풀의 각 토큰과 연관시킨 후에, 확장 결과 모듈(250)은 미리 결정된 품질 임계값보다 높은 토큰 품질을 갖는 토큰으로 설정된 검색 질의어 제안을 생성한다.
도 6은 일부 예시적인 실시예에 따라 검색 질의어 제안을 향상시키는 방법(600)을 수행하는 검색 향상 시스템(150)의 동작 흐름도이다. 방법(600)에서의 동작은 도 2과 관련하여 전술한 모듈 및 도 10과 관련하여 후술될 하드웨어를 사용하여 검색 향상 시스템(150)에 의해 수행될 수 있다. 도 6에 나타낸 바와 같이, 방법(600)은 도 3과 관련하여 전술한 방법(300)의 하나 이상의 동작을 포함한다.
다양한 예시적인 실시예에서, 방법(600)은 도 6에 도시된 바와 같이 동작(310) 및 동작(320)에서 질의어 부분을 수신함으로써 초기에 수행된다. 단계(610)에서, 네이티브 결과 모듈(220)은 글로벌 스코어의 제 1 세트를 생성한다. 글로벌 스코어의 제 1 세트의 각 글로벌 스코어는 제 1 검색 질의어 제안 세트의 검색 질의어 제안(예를 들어, 질의어 항목, 토큰 또는 토큰 부분)과 연관된다. 다양한 예시적인 실시예에서, 네이티브 결과 모듈(220)은 오퍼레이션(420)과 유사한 방식으로 질의어 제안에 대한 글로벌 스코어의 제 1 세트를 생성한다.
동작(620)에서, 네이티브 결과 모듈(220)은 글로벌 스코어의 제 1 세트에 기초하여 제 1 순서로 제 1 검색 질의어 제안 세트를 구성한다. 제 1 순서는 글로벌 스코어(global score)(예를 들어, 글로벌 스코어에 의해 순위가 매겨진 질의어 제안), 의미론적 관계, 무작위 순서, 이들의 조합, 또는 임의의 다른 적절한 구성 방법에 의해 결정될 수 있다. 다양한 경우에서, 네이티브 결과 모듈(220)은 검색 향상 시스템(150)의 휘발성 또는 임시 메모리에 제 1 검색 질의어 제안 세트를 제 1 순서로 또는 그에 대한 참조를 포함하여 저장한다.
다양한 실시예에서, 방법(600)은 동작(330) 및 동작(340)에서 토큰 풀에 액세스함으로써 수행된다. 동작(630)에서, 확장 결과 모듈(250)은 글로벌 스코어의 제 2 세트를 생성한다. 글로벌 스코어의 제 2 세트의 각 글로벌 스코어는 제 2 검색 질의어 제안 세트의 검색 질의어 제안(예를 들어, 질의어 항목, 토큰 또는 토큰 부분)과 연관된다. 제 2 세트의 글로벌 스코어는 전술한 동작(420)과 유사하게 또는 동일한 동작으로 생성될 수 있다.
동작(640)에서, 확장 결과 모듈(250)은 글로벌 스코어의 제 2 세트에 기초하여 제 2 순서로 제 2 검색 질의어 제안 세트를 구성한다. 제 2 검색 질의어 제안 세트는 글로벌 스코어의 제 2 세트, 질의어 부분에 대한 질의어 제안의 의미론적 관계, 이들의 조합, 또는 임의의 다른 적절한 방법에 기초하여 구성될 수 있다.
도 6에 도시된 바와 같이, 동작(350)은 추가 동작을 포함한다. 동작(650)에서, 선택 모듈(260)은 제 1 검색 질의어 제안 세트에 대한 글로벌 스코어 임계값을 생성한다. 일부 실시예에서, 선택 모듈(260)은 상대적인 임계값으로서 글로벌 스코어 임계값을 생성하여 제 1 검색 질의어 제안 세트 및 제 2 검색 질의어 제안 세트 각각에서 선택 가능한 질의어 제안을 제한한다. 선택 모듈(260)은 제 1 및 제 2 검색 질의어 제안 세트 모두에 대해 단일 글로벌 스코어 임계값을 생성하거나 제 1 및 제 2 검색 질의어 제안 세트에 대해 제 1 및 제 2 글로벌 스코어 임계값을 각각 생성할 수 있다. 글로벌 스코어 임계값은 제 1 및 제 2 검색 질의어 제안 세트가 동일하거나 유사한 수의 검색 질의어 제안을 포함하도록 설정될 수 있다. 일부 실시예에서, 글로벌 스코어 임계값은 주어진 질의어 부분에 대한 검색 질의어 제안의 객관적인 관련성을 나타내기 위한 미리 결정된 임계값일 수 있다.
동작(660)에서, 선택 모듈(260)은 검색 질의어 제안의 제 1 서브세트에 포함시키기 위해 글로벌 스코어 임계값을 초과하도록 설정된 제 1 검색 질의어 제안의 하나 이상의 검색 질의어 제안을 결정한다. 선택 모듈(260)은 각 검색 질의어 제안에 대한 글로벌 스코어를 글로벌 스코어 임계값과 비교함으로써 글로벌 스코어 임계값을 초과하는 검색 질의어 제안을 결정할 수 있다. 경우에 따라, 글로벌 스코어는 글로벌 스코어 임계값을 초과하는지 여부를 결정하기 전에 정규화될 수 있다.
동작(670)에서, 선택 모듈(260)은 검색 질의어 제안의 제 2 서브세트에 포함시키기 위해 글로벌 스코어 임계값을 초과하도록 설정된 제 2 검색 질의어 제안의 하나 이상의 검색 질의어 제안을 결정한다. 동작(660)과 유사하게, 선택 모듈(260)은 검색 질의어 제안 중 어느 것이 글로벌 스코어 임계값을 초과하는 원(raw) 글로벌 스코어 또는 정규화된 글로벌 스코어를 갖는지를 결정할 수 있다. 일부 실시예에서, 선택 모듈(260)은 글로벌 스코어링 함수뿐만 아니라 하나 이상의 검색 질의어 제안과 질의어 부분 간의 의미론적 관계의 표현과 같은 추가적인 인자를 사용하여 포함시킬 하나 이상의 검색 질의어 제안을 결정한다.
다양한 예시적인 실시예에서, 동작(362)은 추가적인 동작을 포함한다. 동작(680)에서, 제안 모듈(270)은 제 3 검색 질의어 제안 세트에 포함된 검색 질의어 제안의 제 2 서브세트 내에서 각 검색 질의어 제안에 대한 부스팅 인자를 계산한다. 부스팅(boosting)은 AQ가 글로벌 스코어를 고려하여 다른 사용자가 질의어를 사용하고 질의어 제안을 수신하는 방법을 반영하고 마찬가지로 현재 사용자(예: 사용자(106))가 질의어가 사용되기를 의도하는 방식을 반영하여 AQ를 정렬하는 방법으로 이해될 수 있다. 부스팅 인자의 계산은 부스팅 단계(boosting stage) 또는 부스팅 함수로 이해될 수 있다. 부스팅 단계는 검색 질의어 제안의 제 2 서브세트(예를 들어, EQ')에서 각각의 질의어 항목에 대한 부스팅 인자를 계산할 수 있다. 질의어 항목은 EQ에서 q. bf (예: 질의어 항목의 부스트 인자)로 표현될 수 있다.
동작(690)에서, 제안 모듈(270)은 검색 질의어 제안의 제 2 서브세트 및 글로벌 스코어의 제 1 세트 및 글로벌 스코어의 제 2 세트의 각 검색 질의어 제안의 부스팅 인자에 기초하여 제 3 주문을 결정한다. q. bf 값을 계산하기 위한 부스팅 함수의 예시적인 실시예는 다음과 같다:
일부 경우, q. bf 는 질의어 항목의 기본 토큰의 인자에 기초한다. 이와 같이, q. bf 가 일부 실시예에서 q. bf = 에 의해 표현된다. 제안 모듈(270)은 질의어 항목 내의 토큰에 대한 부스트 인자를 결정할 수 있다. 검색 질의어 제안의 제 2 서브세트에서 사용하기 위해, 제안 모듈(270)은 토큰 부스팅 함수를 이용할 수 있다. 예를 들어, 토큰 부스팅 함수는 토큰에 대한 부스트 인자를 결정하기 위한 전술한 부스팅 함수와 유사할 수 있으며, 다음과 같이 표현된다:
질의어 항목의 부스팅 인자에 기초하여, 검색 향상 시스템(150)의 제안 모듈(270)은 일 실시예에 따라, 자동 완성 대기 행렬의 하부로부터 얼마나 많은 위치에서 이 질의어 항목이 부스팅되는지(q.boostPos)를 다음과 같이 계산할 수 있다:
검색 질의어 제안의 제 2 서브세트에서 각 질의어 항목에 대한 부스팅 인자를 결정한 후에, 제안 모듈(270)은 질의어 항목의 위치를 결정한다. 일부 예시적인 실시예에서, 제안 모듈(270)은 다음과 같은 함수에 따라 제 3 순서를 결정한다:
일부 예시적인 실시예에서, AQ 길이(예를 들어, 자동 완성 옵션의 수)는 10이다. 그러나, AQ 길이는 더 많거나 적은 수의 질의어 항목을 포함하여 임의의 길이일 수 있다는 점을 이해할 수 있을 것이다. 제 3 순서의 결정 및 제 3 순서 내의 질의어 항목의 배치는 클라이언트 장치(110)에서의 프레젠테이션을 위해 NQ 및 EQ'의 질의어 항목을 섞는다.
몇몇 경우에, 부스트 스코어(boost scores)로부터 결정된, 다양한 질의어 항목들의 부스트 순위는 동일한 부스트 순위를 가질 수 있다. 질의어 항목은 중요도(예: q. impScore)를 이용한 가중치 스코어에 따라 분류되고 충분한 수의 추천 질의어 제안을 선택할 수 있다. 중요도는 다음과 같이 나타낼 수 있다:
q. impScore = q.imp * q. gs.
질의어 항목에 대한 최종 위치가 제안 모듈(270)에 의해 일단 설정되면, 프레젠테이션 모듈(280)은 상술한 바와 같이, 동작(370)에서 제 3 검색 질의어 제안 세트(예를 들어, AQ)의 프레젠테이션이 이루어지게 한다.
예를 들어, 방법(300, 500 및 600)의 동작들 중 하나 이상을 수행하는 데 있어서, 검색 향상 시스템(150)은 중요도의 지수적 부스터 알고리즘(exponential booster of importance algorithm)을 수행할 수 있다. 방법(300, 500, 및 600)의 동작들 중 하나 이상은 후술되는 알고리즘의 특징으로 표현될 수 있다.
첫 번째 예에서, 사용자(106)는 구찌(Gucci) 제품에 관심이 있다. 사용자(106)는 이미 "Gucci" 및 "Gucci belt"라는 2 개의 질의어를 발행했다. 이들 2 개의 질의어는 동작(334)에서와 같이 토큰 풀 또는 세션 히스토리 서버(154)의 토큰 풀 내에 저장된다. 동작(310)에서와 같이 다른 질의어 "shoe"를 발행하면, 검색 향상 시스템(150)은 아래 그림과 같이 AQ 생성할 수 있다. 이하에 제시되는 AQ는 이하에 도시된 포맷으로 사용자(106)에게 제시될 수 없다는 것을 알아야 한다.
표 1
네이티브 결과는 동작(320, 340, 620 및 640)에서와 같이 부분적으로 수행 되는 방법(300, 500 또는 600)을 나타낼 수 있다. 도시된 바와 같이, 일부 실시예에서, 동작(320 또는 620)을 수행한 후에 네이티브 결과는 구찌(Gucci)에 관련되거나 이를 포함하는 질의어 제안이 부족하다. 확장 결과 모듈(250)은 동작(340 또는 640)을 수행할 수 있다. 확장 결과 모듈(250)은 네이티브 결과 모듈(250)의 질의어 제안보다 상대적 관련성이 더 높은 것으로 결정될 수 있는 두 개의 질의어 항목인"Gucci shoes" 및 "Gucci shoes men"을 생성한다.
제 2 예에서, 사용자(106)는 NBA 스타들의 신발 모델에 관심이 있다. 사용자(106)는 시퀀스 1. "kd 6", 2. "Nike foamposite size 12", 3. "retro jordan size 12", 4. "Lebron size 12", 5. "Kd 6 size 12", 6. "Kobe 9 size 12" 및 7. "Kobe 8 size 12"의 7개의 질의어를 발행한다. 질의어 1, "kd 6"과 관련하여, 사용자(106)가 자신의 질의어 1을 발행하기 전에 세션에 질의어가 없기 때문에, 검색 향상 시스템(150)은 아래의 표 2에 나타낸 바와 같이 네이티브 결과 모듈(220)로서 확장 결과 모듈(250)과 동일한 결과를 생성한다.
표 2
질의어 2에 대해, 수신기 모듈(210)이 사용자(106)로부터 질의어 2에 대한 제 1 토큰 "nike"를 수신하는 것에 응답하여, 자동 완성 결과의 비교는 다음과 같을 수 있다.
표 3
사용자(106)가 질의어 2에서 검색할 어떠한 특정 의도를 나타내지 않았기 때문에, 검색 향상 시스템(150)은 다양한 실시예에 따라 학습 단계 또는 모드에서 동작한다. 도시된 바와 같이, 일부 실시예에서, 검색 향상 시스템(150)은 학습 단계와 추론 단계 사이에서 전환된다. 학습 단계에서, 검색 향상 시스템(150)은 네이티브 결과 모듈(220)에 기초하여 자동 완성 제안을 제공할 수 있다. 학습 단계 동안, 검색 향상 시스템(150)은 또한 질의어를 내부적으로 저장하고 확장 결과 모듈(250)에 대한 토큰 풀을 구축할 수 있다. 몇몇 실시예에서, 주어진 세션 내에서, 검색 향상 시스템(150)은 학습 단계와 추론 단계에서 동작할 수 있고 이들 간에 전환할 수 있다. 일부 경우에, 검색 향상 시스템(150)은 학습 단계를 단속적으로(intermittently) 수행할 수 있다(예를 들면, 이전 세션에서 또는 복수의 세션에 걸쳐).
질의어 3, "retro jordan size 12"와 관련하여, 사용자(106)는 처음의 두 개의 토큰 "retro"및 "jordan"을 발행한다. 검색 향상 시스템(150)은 하기 표 4에서와 같이 네이티브 및 확장된 결과를 생성한다.
표 4
사용자(106)가 수신기 모듈(210)에 의해 검색 향상 시스템(150)에 단지 "retro" 및 "jordan"을 입력할 때 검색 향상 시스템(150)은 "retro jordan size"를 검색하려는 사용자(106)의 의도를 포착할 수 있다. 질의어 항목은 네이티브 결과 세트보다 검색 향상 시스템(150)(예를 들어, "Exponential Booster with Importance(중요도를 이용한 지수적 부스터)")에 대한 결과에서 비교적 양호한 위치(예를 들어, 제 1 위치)를 유지한다.
이제 질의어 4, "lebron size 12"를 참조하면, 사용자(106)가 제 1 토큰 "lebron"을 발행하고 검색 향상 시스템(150)은 "lebron size 12"를 질의하려는 명백한 의도를 포착한다. 검색 향상 시스템(150)은 이하의 표 5에 도시된 바와 같이, 사용자(106)의 의도의 추론에 기초하여 질의어를 제 1 위치에 위치시킨다.
표 5
질의어 5와 관련하여, 사용자(106)는 처음 두 개의 토큰 "kd"및 "6"을 발급하고, 검색 향상 시스템(150)은 "kd 6 size 12"를 질의하려는 사용자(106)의 의도를 유추하고 이 질의어를 제안된 질의어 세트의 제 1 위치에 배치한다. 하기 표 6에 도시된 바와 같이, 네이티브 결과 모듈(220)은 반드시 동일한 추론에 기초한 제안된 질의어 세트를 제공하지는 않는다.
표 6
이제 검색 질의어 시스템(150)은 질의어 6, "kobe 9 size 12"로 이동하여, 추론 기반 검색 질의어 제안 세트를 생성하고 추론된 검색을 확장된 결과 세트(예를 들어, 부스팅된 결과 세트)의 최상위 위치에 배치한다. 검색 향상 시스템(150)은 이하의 표 7에 도시된 바와 같이 사용자(106)가 "kobe" 및 "9"를 입력하는 것에 응답하여 "kobe 9 size 12"를 질의하려는 사용자(106)의 의도를 포착한다.
표 7
마지막으로, 질의어 7인 "kobe 8 size 12"에 대해, 사용자(106)가 "kobe" 및 "8"을 입력할 때, 검색 향상 시스템(150)은 네이티브 결과 모듈(220)과 확장 결과 모듈(250) 모두의 질의어 제안 세트에서 "kobe 8 size 12"를 검색하려는 의도를 추론한다. 그러나, "kobe 8 size 12" 제안 검색은 확장 결과 모듈(250)의 질의어 제안 세트에서 비교적 높은 위치에 배치된다.
표 8
결과적으로, 본 명세서에 기술된 하나 이상의 방법론은 조사, 의사 결정, 온라인 쇼핑 등에 관련된 특정 노력 또는 자원에 대한 필요성을 제거할 수 있다. 적절한 검색 결과를 위치시키는 데 있어서 사용자(106)가 들이는 수고가 감소될 수 있고, 검색 결과는 검색 향상 시스템(150)의 모듈 및 본 명세서에 기술된 관련 방법에 기초하여 보다 정확하게 결정될 수 있다. 또한, 본 명세서에 기술된 하나 이상의 방법론은 검색 향상 시스템(150)과 관련된 시스템에 질의어 항목 또는 토큰을 입력하는 사용자(106)에게 맞춤화된 자동 완성 및 검색 질의어 제안을 제공할 수 있다. 본원에 개시된 방법은 사용자(106)의 세션 히스토리에 추가되는 추가 질의어 및 토큰에 기초하여 사용자(106)에게 지속적으로 다시 맞춤화되는(retailored) 제안을 제공할 수 있다. 또한, 글로벌 세션 히스토리에 기초한 제안 및 개별 사용자 히스토리에 기초한 맞춤형 제안을 결합하는 본 개시내용의 방법론은 확장 결과 모듈(250) 없이는 하지 못했을 사용자(106)의 목표를 잘 해석하는 검색 질의어 제안을 제공할 수 있다. 예를 들어, 본 명세서에 기술된 하나 이상의 방법론은 표준 자동 완성 기능에 의해 제공되지 않는 질의어 제안을 제공할 수 있는데 이는 검색 질의어 제안의 글로벌 스코어가 질의어의 특이성, 인기도의 부족, 검색어 조합의 새로움 또는 검색어 조합으로 표시되는 결과에 기초하기 때문이다. 더욱이, 본 명세서에 기술된 하나 이상의 방법론은 검색 질의어 제안의 생성 시에 더욱 빠른 집중도(convergence)를 제공한다. 제공되는 방법론의 응답 시간은 확장 결과 모듈(250)에 의해 사용되는 변수의 조작에 의해 검색 제안의 생성 및 프레젠테이션의 효율성, 포괄성 및 적시성(timeliness)의 적절한 비율(rate)의 균형을 맞추도록 검색 향상 시스템(150)에 의해 동적으로 감소된다.
도 7은 적어도 하나의 실시예에서, 네트워크 아키텍처(100)(예를 들어, 네트워크 시스템)의 배포 시스템(142) 내에 제공되는 다수의 컴포넌트를 도시하는 예시적인 블록도이다. 이 실시예에서, 배포 시스템(142)은 아이템(예를 들어, 상품 또는 서비스)이 판매를 위해 제공될 수 있는 시장 시스템이고, 대화식 질의어 생성 및 정제를 위해 본 명세서에서 설명된 특징을 추가로 구현한다. 아이템은 디지털 상품(예: 통화, 라이센스 권한)을 포함할 수 있다. 배포 시스템(142)은 서버 머신 간의 통신을 가능하게 하도록 통신 가능하게 결합된 전용 또는 공유 서버 머신(도시되지 않음)상에서 호스팅될 수 있다. 여러 컴포넌트 자체는 직접 또는 간접적으로 (예를 들면, 적절한 인터페이스를 통해) 서로 및 다양한 데이터 소스에 통신 가능하게 결합되어, 정보를 컴포넌트 간에 전달하거나 컴포넌트가 공통 데이터를 공유하고 액세스할 수 있도록 한다. 또한, 컴포넌트는 도 1에 도시된 바와 같이 하나 이상의 데이터베이스 서버(124)를 통해 하나 이상의 데이터베이스(126)에 액세스할 수 있다.
도 7로 돌아가서, 배포 시스템(142)은 구매자가 판매용 상품 또는 서비스를 열거하거나 (또는 그에 관한 정보를 배포할 수 있는) 다수의 배포, 리스트 및 가격 설정 메카니즘을 제공하고, 구매자는 그러한 상품 또는 서비스에 관한 관심을 표현하거나 구매하려는 욕구를 나타낼 수 있으며, 상품 및 서비스와 관련된 거래에 대해 가격이 설정될 수 있다. 이를 위해, 배포 시스템(142)은 적어도 하나의 배포 엔진(702) 및 경매 포맷 리스트 및 가격 설정 메커니즘(예를 들어, 영어, 네덜란드어, 중국어, 이중, 역경매 등)을 지원하는 하나 이상의 경매 엔진(704)을 포함할 수 있다.
가격 결정 엔진(706)은 다양한 가격 리스트 포맷을 지원한다. 그러한 형식 중 하나는 고정 가격 리스트 형식(예: 전통적으로 분류된 광고 유형 리스트 또는 카탈로그 리스트)이다. 또 다른 형식은 바이 아웃 타입 리스트(buyout-type listings)로 구성된다. 바이아웃 타입 리스트(예: 캘리포니아, 산호세의 eBay 사에서 개발한 BIN(Buy-It-Now) 기술)는 경매 형식 리스트와 함께 제공될 수 있고 구매자가 상품이나 서비스를 구매할 수 있게 하며, 또한 이는 아이템에 대한 경매의 시작 가격보다 일반적으로 높은 고정 가격으로 경매를 통해 판매하도록 제공되고 있다.
상점 엔진(708)은 구매자가 구매자에 의해 그리고 구매자를 위해 브랜드화되고 개인화될 수 있는 "가상" 상점 내에 리스트를 그룹화하도록 한다. 또한, 이러한 가상 상점은 구매자에게 특정되고 개인화된 프로모션, 인센티브 및 기능을 제공할 수도 있다. 일 예에서, 구매자는 가상 상점에서 Buy-It-Now 아이템으로서 복수의 아이템을 제공하거나, 경매를 위해 복수의 아이템을 제공하거나, 또는 이들의 조합을 제공할 수 있다.
평판 엔진(710)은 네트워크 아키텍처(100)를 이용하여 거래하는 사용자(106)가 평판을 확립, 구축 및 유지할 수 있게 한다. 이러한 평판은 잠재적인 거래 상대방에게 이용 가능하게 되고 배포될 수 있다. 일 실시예에 따르면, 배포 시스템(142)이 알려지지 않은 엔티티 간의 개인 대 개인 거래를 지원하기 때문에, 사용자(106)는 히스토리 또는 다른 참조 정보를 갖지 않을 수 있으므로 잠재적 거래 상대방의 신뢰도 및 신용도가 평가될 수 있다. 평판 엔진(710)은 예를 들어, 하나 이상의 다른 거래 상대방에 의해 제공되는 피드백을 통해 사용자(106)가 시간이 지남에 따라 네트워크 기반 배포 시스템 내의 평판을 확립하게 한다. 다른 잠재적인 거래 상대방은 신용도와 신뢰도를 평가할 목적으로 평판을을 참고할 수 있다.
네트워크 기반 배포 시스템의 네비게이션은 네비게이션 엔진(712)에 의해 촉진될 수 있다. 예를 들어, 네비게이션 엔진(712)의 브라우즈 모듈(도시되지 않음)은 어느 리스트가 배포 시스템(142) 내에서 분류될 수 있는지에 따라 사용자(106)가 다양한 카테고리, 카탈로그 또는 인벤토리 데이터 구조를 브라우징할 수 있게 한다. 네비게이션 엔진(712) 내의 다양한 다른 네비게이션 애플리케이션은 브라우징 애플리케이션을 보완하도록 제공될 수 있다. 예를 들어, 네비게이션 엔진(712)은 전술한 통신 모듈(290)과 유사한 통신 모듈을 포함할 수 있다.
가능한 한 시각적으로 정보를 제공하는 것으로서 그리고 매력적인 것으로서 네트워크 시스템을 통해 리스트를 이용 가능하게 하기 위해, 배포 시스템(142)은 사용자(106)가 배포물에 포함시킬 이미지를 업로드할 수 있게 하고 시청 리스트 내에 이미지를 삽입할 수 있게 하는 이미징 엔진(714)을 포함할 수 있다. 이미징 엔진(714)은 또한 검색 질의어로서 사용자(106)로부터 이미지 데이터를 수신하고 이미지 데이터에 의해 묘사되거나 기술된 아이템을 식별하도록 이미지 데이터를 이용할 수 있다.
리스트 생성 엔진(716)은 사용자(106)(예를 들어, 구매자)가 편리하게 아이템의 리스트를 저작하게 한다. 일 실시예에서, 리스트는 사용자(106)(예를 들어, 구매자)가 네트워크 기반 배포 시스템(142)을 통해 거래하고자 하는 물품 또는 서비스에 관한 것이다. 다른 실시예에서, 사용자(106)는 광고 또는 기타 배포 형식의 리스트를 생성할 수 있다.
리스트 관리 엔진(718)은 사용자(106)가 그러한 리스트를 관리하게 한다. 구체적으로, 특정 사용자(106)가 다수의 리스트을 저작하거나 배포한 경우, 그러한 리스트의 관리는 과제를 제시할 수 있다. 리스트 관리 엔진(718)은 사용자(106)가 그러한 리스트를 관리하는 것을 돕기 위한 다수의 특징(예를 들어, 자동 리스트 재작성(auto-relisting), 재고 수준 모니터)을 제공한다. 리스트 관리 엔진(718)은 리스트 모듈을 포함할 수 있다.
사후 리스트 관리 엔진(720)은 또한 사후 리스트 작성 이후에 발생하는 많은 활동으로 사용자(106)를 돕는다. 예를 들어, 하나 이상의 경매 엔진(704)에 의해 촉진되는 거래가 완료되면, 구매자는 특정 판매자에 관한 피드백을 남기길 원할 수 있다. 이를 위해, 사후 리스트 관리 엔진(720)은 평판 엔진(710)에 인터페이스를 제공하여 구매자가 다수 판매자에 관한 피드백을 평판 엔진(710)에 편리하게 제공할 수 있게 한다. 또 다른 사후 리스트 액션(post-listing action)은 판매된 아이템의 선적일 수 있으며, 이로써 사후 리스트 관리 엔진(720)은 선적 라벨 인쇄, 선적 비용 견적 및 운송 회사 제안을 도울 수 있다.
검색 엔진(722)은 질의어와 일치하는 네트워크 기반 배포 시스템(142)에서 배포물에 대한 검색을 수행한다. 예시적인 실시예에서, 검색 엔진(722)은 네트워크 기반 배포 시스템(142)을 통해 배포된 배포물의 키워드 검색을 가능하게 하는 검색 모듈(도시되지 않음)을 포함한다. 또한, 예를 들어, 검색 엔진(722) 자동 완성 서버, 세션 히스토리 서버(154) 및 글로벌 스코어 서버(152)에 관하여 전술한 기능을 수행할 수 있다. 검색 엔진(722)의 기능은 하나 이상의 머신상에서 수행될 수 있다. 다른 실시예에서, 검색 엔진(722)은 검색을 수행하기 위한 입력으로서 이미징 엔진(714)에 의해 수신된 이미지를 취할 수 있다. 검색 엔진(722)은 질의어 입력을 받아 네트워크 구조(100)(예를 들어, 데이터베이스(126)에 저장된 배포물)로부터 복수의 일치(match)를 결정한다. 검색 엔진(722)의 기능은 네비게이션 엔진(712)과 결합될 수 있음에 주의한다.
도 7의 사용자 활동 검출 엔진(724)은 사용자 세션 동안 사용자 활동을 모니터링하고, 이하에서보다 상세히 논의되는 바와 같이, 사용자(106)가 구매할듯하다는 것을 예측할 수 있는 사용자 활동 레벨의 변화를 검출할 수 있다. 사용자 활동 레벨의 정확한 변화량은 달라질 수 있다. 일반적인 지침은 다수의 세션에 걸쳐 모니터링하고 시간이 지남에 따라 어떠한 현저한 증가(예를 들어 짧은 기간에 활동 레벨이 2 배로 늘거나 3 배로 늠)를 검출하는 것이다. 일 실시예에서, 사용자 활동 검출 엔진(724)이 이러한 조건을 검출할 때, 전자 상거래 시스템은 사용자(106)에게 적절한 검색 질의어 제안을 제공할 확률을 향상시키기 위한 노력으로, 사용자(106)의 토큰 풀로부터의 토큰에 가중치를 매기기 위한 증가된 활동을 제공하도록 개입할 수 있고, 사용자(106)가 더 나은 구매를 찾아 경쟁 사이트로 이동하지 않고 그 전자 상거래 시스템 사이트에서 구매하도록 유도할 수 있다. 달리 말하면, 구매 행위 이전의 상이한 시간에의 및 시간에 걸친 활동은 시간에 기초하여 전술한 방법론의 가중치 요소로서 포함시킴으로써 검색 질의어 제안을 사용자(106)에게 개인화할 수 있는 기회를 제공한다.
네트워크 기반 배포 시스템(142)의 다양한 컴포넌트가 다양한 개별 모듈 및 엔진의 관점에서 정의되었지만, 당업자는 많은 아이템이 다른 방식으로 결합되거나 구성될 수 있으며, 모든 모듈 또는 엔진이 예시적인 실시예에 따라 존재하거나 구현되어야 할 필요는 없다는 점을 이해할 것이다. 또한, 네트워크 기반 배포 시스템(142)의 모든 컴포넌트가 도 7에 포함된 것은 아니다. 일반적으로, 예시적인 실시예의 기능들과 직접적으로 관련되지 않은 컴포넌트들, 프로토콜들, 구조들 및 기술들(예를 들어, 분쟁 해결 엔진, 충성도 증진 엔진, 개인화 엔진들)은 도시되지 않았거나 상세하게 논의되지 않았다. 본 명세서에 주어진 설명은 단순히 본원에서 사용되는 시스템 및 방법의 이해를 돕기 위해 다양한 예시적인 실시예를 제공한다.
모듈, 컴포넌트 및 로직
특정 실시예는 본 명세서에서 로직 또는 다수의 컴포넌트, 모듈 또는 메커니즘을 포함하는 것으로서 설명된다. 모듈은 하드웨어-소프트웨어 모듈(예: 하드웨어 또는 머신 판독가능 매체에 구현된 코드로 특수 기능을 수행하도록 임시적 또는 영구적으로 구성된 하드웨어) 또는 하드웨어 모듈을 구성할 수 있다. "하드웨어 모듈"은 특정 동작을 수행할 수 있는 유형(tangible)의 유닛이며 소정의 물리적인 방식으로 구성 또는 배열될 수 있다. 다양한 예시적인 실시예에서, 하나 이상의 컴퓨터 시스템(예를 들면, 독립형 컴퓨터 시스템, 클라이언트 컴퓨터 시스템 또는 서버 컴퓨터 시스템) 또는 컴퓨터 시스템의 하나 이상의 하드웨어 모듈(예를 들어, 프로세서 또는 프로세서 그룹)이 소프트웨어(예를 들어, 애플리케이션 또는 애플리케이션 부분)에 의해 본 명세서에 설명된 소정의 동작을 수행하도록 동작하는 하드웨어-소프트웨어 모듈로서 구성될 수 있다.
일부 실시예에서, 하드웨어 모듈은 기계적으로, 전자적으로, 또는 이들의 임의의 적절한 조합으로 구현될 수 있다. 예를 들어, 하드웨어 모듈은 특정 동작을 수행하도록 영구적으로 구성된 전용 회로 또는 로직을 포함할 수 있다. 예를 들어, 하드웨어 모듈은 FPGA(field-programmable gate array) 또는 ASIC(application specific integrated circuit)과 같은 특수 목적 프로세서일 수 있다. 하드웨어 모듈은 또한 특정 동작을 수행하기 위해 소프트웨어에 의해 일시적으로 구성되는 프로그래밍 가능한 로직 또는 회로를 포함할 수 있다. 예를 들어, 하드웨어 모듈은 프로그램 가능 프로세서에 의해 실행되는 소프트웨어를 포함할 수 있다. 그러한 소프트웨어에 의해 일단 구성되면, 하드웨어 모듈은 구성된 기능을 수행하도록 고유 하게 맞춤화된 특정 머신(또는 머신의 특정 컴포넌트)가 되며 더 이상 범용 프로세서가 아니다. 기계적으로, 전용 및 영구적으로 구성된 회로 또는 일시적으로 구성된 회로(예를 들어, 소프트웨어에 의해 구성되는)에서 하드웨어 모듈을 구현하기 위한 결정은 비용 및 시간 고려 사항에 의해 결정될 수 있음을 이해할 것이다.
따라서, "하드웨어 모듈"이라는 문구는 물리적으로 구성되거나, 영구적으로 구성되거나(예를 들어, 하드 와이어드) 또는 소정의 방식으로 동작하거나 또는 본 명세서에 설명된 특정 동작을 수행하도록 임시로 구성(예를 들어, 프로그래밍)된 실체를 포함하는 것으로 이해되어야 한다. 본 명세서에 사용된 바와 같이, "하드웨어 구현 모듈"은 하드웨어 모듈을 지칭한다. 하드웨어 모듈이 일시적으로 구성되는(예를 들어, 프로그래밍 된) 실시예를 고려하면, 하드웨어 모듈들 각각은 어느 한 시점에서 구성되거나 인스턴스화될 필요가 없다. 예를 들어, 하드웨어 모듈이 특수 목적 프로세서가 되도록 소프트웨어에 의해 구성되는 범용 프로세서를 포함하는 경우, 범용 프로세서는 상이한 시점에 각각 상이한 특수 목적 프로세서(예를 들어, 서로 다른 하드웨어 모듈을 포함함)로서 구성될 수 있다. 따라서 소프트웨어는 예를 들어 특정 프로세서(들)를 구성하여, 예를 들면 한 시점의 인스턴스에서는 특정 하드웨어 모듈을 구성하고 다른 시점의 인스턴스에서는 다른 하드웨어 모듈을 구성한다.
하드웨어 모듈은 다른 하드웨어 모듈에 정보를 제공하고 다른 하드웨어 모듈로부터 정보를 수신할 수 있다. 따라서, 기술된 하드웨어 모듈은 통신 가능하게 결합된 것으로 간주될 수 있다. 동시에 다수의 하드웨어 모듈이 존재하는 경우, 통신은 2 개 이상의 하드웨어 모듈 사이에서의 신호 전송(예를 들어, 적절한 회로 및 버스를 통해)을 통해 이루어질 수 있다. 다수의 하드웨어 모듈이 상이한 시간에 구성되거나 인스턴스화되는 실시예에서, 그러한 하드웨어 모듈 간의 통신은, 예를 들어, 다수의 하드웨어 모듈이 액세스하는 메모리 구조 내의 정보의 저장 및 검색을 통해 이루어질 수 있다. 예를 들어, 하나의 하드웨어 모듈은 동작을 수행하고 그 동작의 출력을 통신 가능하게 연결된 메모리 장치에 저장할 수 있다. 이후, 추가 하드웨어 모듈이 저장된 출력을 검색하고 처리하기 위해 메모리 장치에 액세스할 수 있다. 또한 하드웨어 모듈은 입력 또는 출력 장치와의 통신을 시작할 수 있으며 자원(예: 정보 모음)에서 동작할 수 있다.
본 명세서에 설명된 예시적인 방법의 다양한 동작은 관련 동작을 수행하도록 (예를 들어, 소프트웨어에 의해) 일시적으로 구성되거나 영구적으로 구성된 하나 이상의 프로세서에 의해 적어도 부분적으로 수행될 수 있다. 일시적으로 또는 영구적으로 구성되더라도, 그러한 프로세서는 여기서 설명된 하나 이상의 동작 또는 기능을 수행하도록 동작하는 프로세서 구현 모듈을 구성할 수 있다. 본 명세서에 사용된 "프로세서 구현 모듈"은 하나 이상의 프로세서를 사용하여 구현된 하드웨어 모듈을 의미한다.
유사하게, 본 명세서에 설명된 방법들은 하드웨어의 일례인 특정 프로세서 또는 프로세서들로 적어도 부분적으로 프로세서-구현될 수 있다. 예를 들어, 방법의 동작 중 적어도 일부는 하나 이상의 프로세서 또는 프로세서 구현 모듈에 의해 수행될 수 있다. 또한, 하나 이상의 프로세서는 "클라우드 컴퓨팅" 환경에서 또는 "서비스로서의 소프트웨어"(SaaS)에서 관련 동작의 성능을 지원하도록 동작할 수 있다. 예를 들어, 적어도 일부 동작은 네트워크(104)(예를 들어, 인터넷) 및 하나 이상의 적절한 인터페이스(예를 들어, 응용 프로그램 인터페이스(API))를 통해 액세스 가능한 컴퓨터 그룹(프로세서를 포함하는 머신의 예로서)에 의해 수행될 수 있다.
특정 동작의 실행은 단일 머신 내에 상주할 뿐만 아니라 다수의 머신에 걸쳐 배치되는 프로세서들 간에 분산될 수 있다. 일부 예시적인 실시예에서, 프로세서 또는 프로세서 구현 모듈은 단일한 지리적 위치(예를 들어, 가정환경, 사무실 환경 또는 서버 팜 내)에 위치할 수 있다. 다른 예시적인 실시예에서, 프로세서 또는 프로세서 구현 모듈은 다수의 지리적 위치에 걸쳐 분산될 수 있다.
머신 및 소프트웨어 아키텍처
도 1 내지 도 7과 관련하여 기술된 모듈, 방법, 어플리케이션 등은, 일부 실시예에서 머신 및 관련 소프트웨어 아키텍처의 맥락에서 구현된다. 이하의 섹션은 개시된 실시예와 함께 사용하기에 적합한 대표적인 소프트웨어 아키텍처(들) 및 머신(예를 들어, 하드웨어) 아키텍처(들)를 설명한다.
소프트웨어 아키텍처는 하드웨어 아키텍처와 관련하여 특정 목적에 맞게 조정된 장치 및 머신을 생성하기 위해 사용된다. 예를 들어 특정 소프트웨어 아키텍처와 결합된 특정 하드웨어 아키텍처는 휴대 전화, 태블릿 장치 등과 같은 모바일 장치를 생성한다. 약간 다른 하드웨어 및 소프트웨어 아키텍처는 "사물 인터넷(internet of things)"에서 사용하기 위해 스마트 장치를 산출할 수 있다. 반면에 또 다른 조합은 클라우드 컴퓨팅 아키텍처 내에서 사용하기 위한 서버 컴퓨터를 생산한다. 당업자는 본 명세서에 포함된 개시내용과 상이한 맥락에서 본 개시내용의 다양한 실시예를 구현하는 방법을 쉽게 이해할 수 있으므로, 그러한 소프트웨어 및 하드웨어 아키텍처의 모든 조합이 본 명세서에 제시되지는 않는다.
소프트웨어 아키텍처
도 8은 여기에 설명된 다양한 하드웨어 아키텍처와 함께 사용될 수 있는 대표적인 소프트웨어 아키텍처(802)를 나타내는 블록도(800)이다. 도 8은 소프트웨어 아키텍처의 비 제한적 예일 뿐이며, 본 명세서에 설명된 기능을 용이하게 하기 위해 많은 다른 아키텍처가 구현될 수 있다는 점을 이해할 것이다. 소프트웨어 아키텍처(802)는 도 10의 머신(1000)과 같은 하드웨어상에서 실행될 수 있으며, 머신은 무엇보다도 프로세서(1010), 메모리(1030), 및 I/O 컴포넌트(1050)를 포함한다. 대표적인 하드웨어 계층(804)이 설명되며, 예를 들어 도 10의 머신(1000)을 나타낼 수 있다. 대표적인 하드웨어 계층(804)은 연관된 실행 가능 명령어(808)를 갖는 하나 이상의 처리 유닛(806)을 포함한다. 실행 가능 명령어(808)는 도 1 내지 도 7의 방법, 모듈 등의 구현을 포함하는 소프트웨어 아키텍처(802)의 실행 가능 명령어를 나타낸다. 하드웨어 계층(804)은 또한 실행 가능 명령어(808)를 갖는 메모리 또는 저장 모듈(810)을 포함한다. 하드웨어 계층(804)은 또한 하드웨어 머신(1000)의 일부로서 예시된 다른 하드웨어와 같은 하드웨어 계층(804)의 임의의 다른 하드웨어를 나타내는 812로 표시된 다른 하드웨어 머신(1000)을 포함할 수 있다.
도 8의 예시적인 아키텍처에서, 소프트웨어 아키텍처(802)는 각 계층이 특정 기능을 제공하는 계층들의 스택으로서 개념화될 수 있다. 예를 들어, 소프트웨어(802)는 운영 체제(814), 라이브러리(816), 프레임워크/미들웨어(818), 애플리케이션(820) 및 프레젠테이션 계층(844)과 같은 계층을 포함할 수 있다. 동작면에서 애플리케이션(820) 및/또는 계층 내의 다른 컴포넌트는 소프트웨어 스택을 통해 애플리케이션 프로그래밍 인터페이스(API) 호(824)를 호출하고 API 호(824)에 응답하여 메시지(826)로서 설명된 응답, 리턴 값 등을 수신할 수 있다. 설명된 계층은 사실상 예시를 위한 것이며 모든 소프트웨어 아키텍처가 모든 계층을 갖는 것은 아니다. 예를 들어, 일부 모바일 또는 특별 운영 체제는 프레임워크/미들웨어 계층(818)을 제공하지 않을 수도 있고, 다른 것이 그러한 계층을 제공할 수도 있다. 다른 소프트웨어 아키텍처는 추가 또는 다른 계층을 포함할 수 있다.
다양한 실시예에서, 수신기 모듈(210), 액세스 모듈(230), 토큰 관리 모듈(240), 프레젠테이션 모듈(280), 및 통신 모듈(290) 중 하나 이상을 구현(예를 들어, 위에 특정된 기능을 수행하도록 하드웨어를 구성)하기 위한 명령어(808)가 프레임워크/미들웨어(818) 내에 구현된다. 이들 실시예에서, 위에 참조된 모듈의 명령어(808)는 애플리케이션 계층에서 구현되는 하나 이상의 모듈 및 하나 이상의 하드웨어 컴포넌트(예를 들어, 디스플레이, 포트 또는 통신 컴포넌트, 하나 이상의 메모리 또는 서버)와 상호작용할 수 있다. 일부 예에서, 검색 향상 시스템(150)의 모듈의 일부 또는 전부를 구현하는 명령어(808)가 프레임 워크/미들웨어 계층(818)에서 구현되고, 모듈 중 하나 이상의 부분에 대한 명령어(808)는 애플리케이션 계층(820)에서 구현된다. 예를 들어, 네이티브 결과 모듈(220) 및 확장 결과 모듈 (250)의 일부에 대한 명령어(808)는 프레임워크/미들웨어 (818) 및 애플리케이션 계층(820) 중 하나 이상에서 구현 될 수 있다.
운영 체제(814)는 하드웨어 자원을 관리하고 공통 서비스를 제공할 수 있다. 운영 체제(814)는 예를 들어, 커널(828), 서비스(830) 및 드라이버(832)를 포함할 수 있다. 커널(828)은 하드웨어와 다른 소프트웨어 계층 사이의 추상화 계층으로서 작용할 수 있다. 예를 들어, 커널(828)은 메모리 관리, 프로세서 관리(예: 스케줄링), 컴포넌트 관리, 네트워킹, 보안 설정 등을 담당할 수 있다. 서비스(830)는 다른 소프트웨어 계층에 대한 다른 공통 서비스를 제공할 수 있다. 드라이버(832)는 하부 하드웨어를 제어하거나 인터페이스하는 책임을 질 수 있다. 예를 들어, 드라이버(832)는 하드웨어 구성에 따라, 디스플레이 드라이버, 카메라 드라이버, Bluetooth® 드라이버, 플래시 메모리 드라이버, 직렬 통신 드라이버들(예를 들어, 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)는 다양한 그래픽 사용자 인터페이스(GUI) 기능, 고수준 자원 관리, 고 레벨 로케이션 서비스 등을 제공할 수 있다. 프레임워크(818)는 애플리케이션(820) 또는 다른 소프트웨어 컴포넌트/모듈(일부는 특정 운영 시스템(814) 또는 플랫폼에 특정할 수 있음)에 의해 이용될 수 있는 광범위한 다른 스펙트럼의 API를 제공할 수 있다.
애플리케이션(820)은 빌트인 애플리케이션(840) 또는 제 3 자 애플리케이션(842)을 포함한다. 대표적인 빌트인 애플리케이션(840)의 예는 콘택트 애플리케이션, 브라우저 애플리케이션, 북 리더 애플리케이션, 위치 애플리케이션, 미디어 애플리케이션, 메시징 애플리케이션 또는 게임 애플리케이션일 수 있다. 제 3 자 애플리케이션들(842)은 광범위한 분류의 다른 애플리케이션들뿐만 아니라 내장된 애플리케이션들 중 임의의 것을 포함할 수 있다. 특정 예에서, 제 3 자 애플리케이션(842)(예를 들어, 특정 플랫폼 벤더 이외의 엔티티에 의해 Android™ 또는 iOS ™ 소프트웨어 개발 키트(SDK)를 사용하여 개발된 애플리케이션)은 모바일 운영 시스템(예: iOS™, Android™, Windows® Phone 또는 기타 모바일 운영 체제)에서 실행되는 모바일 소프트웨어일 수 있다. 이 예에서, 제 3 자 애플리케이션(842)은 여기에 설명된 기능을 용이하게 하기 위해 운영 체제(814)와 같은 모바일 운영 체제에 의해 제공되는 API 호(824)를 호출할 수 있다.
애플리케이션(820)은 운영 체제 기능(예를 들어, 커널(828), 서비스(830) 또는 드라이버(832)), 라이브러리(예를 들어, 시스템(834), API(836) 및 다른 라이브러리(838)), 및/또는 프레임워크/미들웨어(818)를 사용하여 시스템의 사용자(106)와 상호 작용하는 사용자 인터페이스를 생성한다. 대안으로 또는 부가적으로, 일부 시스템에서, 사용자(106)와의 상호 작용은 프레젠테이션 계층(844)과 같은 프레젠테이션 계층을 통해 이루어질 수 있다. 이들 시스템에서, 애플리케이션/모듈 "로직"은 사용자(106)와 상호 작용하는 애플리케이션/모듈의 특징과 분리될 수 있다.
일부 소프트웨어 아키텍처는 가상 머신을 이용한다. 도 8의 예에서, 이것은 가상 머신(848)에 의해 도시된다. 가상 머신(848)은 애플리케이션/모듈이 (예를 들어, 도 10의 머신(1000)과 같은) 하드웨어 머신에서 실행중인 것처럼 실행할 수 있는 소프트웨어 환경을 생성한다. 가상 머신(848)은 호스트 운영 시스템(도 10의 운영 시스템(814))에 의해 호스팅되고 통상적으로 항상은 아니지만 가상 머신(848)의 동작뿐만 아니라 호스트 운영 체제(예: 운영 체제(814))와의 인터페이스를 관리하는 가상 머신 모니터(846)를 구비할 수 있다. 소프트웨어 아키텍처는 운영 체제(850), 라이브러리(852), 프레임워크/미들웨어(854), 애플리케이션(856) 또는 프레젠테이션 계층(858)과 같은 가상 머신(848) 내에서 실행된다. 가상 머신(848) 내에서 실행되는 소프트웨어 아키텍처의 이러한 계층은 전술한 대응 계층과 동일하거나 다를 수 있다.
데이터 구조
도 9는 다양한 테이블(950)을 예시하는 하이 레벨 개체-관계 다이어그램이며, 이는 도 1의 데이터베이스(126) 내에 유지될 수 있고, 도 1의 네트워크 기반 배포 시스템(142) 및 지불 시스템(144) 모두에 의해 이용되고 이들을 지원한다. 사용자 테이블(952)은 도 1의 네트워크 아키텍처(100)(예를 들어, 네트워크 기반 배포 시스템)의 등록된 사용자(106) 각각에 대한 레코드를 포함할 수 있다. 사용자(106)는 네트워크 기반 배포 시스템 내의 시장 내에서 판매자, 구매자 또는 둘 모두로서 동작할 수 있다. 일 실시예에서, 구매자는 축적된 가치(예를 들어, 상업적 또는 독점적 통화)를 갖는 사용자(106)일 수 있고, 따라서 네트워크 기반 배포 시스템에 의해 판매를 위해 제공되는 아이템에 대한 누적 값을 교환할 수 있다.
또한, 테이블(950)은 네트워크 기반 배포물을 통해 거래되거나 거래될 수 있는 상품 및 서비스(예를 들어, 아이템)에 대해 항목 레코드(예: 리스트)가 유지되는 품목 테이블(954)을 포함할 수 있다. 아이템 테이블(954) 내의 아이템 레코드(예를 들어, 리스트들)는 또한 판매자 및 하나 이상의 실제 또는 잠재 구매자를 아이템 레코드(예를 들어, 리스트)와 연관시키도록 사용자 테이블(952) 내의 하나 이상의 사용자 레코드에 링크될 수 있다.
거래 테이블(956)은 아이템 테이블(954) 내에 레코드가 존재하는 아이템에 관한 각 거래(예를 들어, 구매 또는 판매 거래 또는 경매)에 대한 레코드를 포함할 수 있다.
주문 테이블(958)은 주문 레코드로 채워질 수 있으며, 각각의 주문 레코드는 주문과 관련된다. 각각의 주문은 차례로 거래 테이블(956) 내에 레코드가 존재하는 하나 이상의 거래와 연관될 수 있다.
입찰 테이블(960) 내의 입찰 레코드는 도 7의 경매 엔진(들)(704)에 의해 지원되는 경매 포맷 리스트와 관련하여 네트워크 기반 배포 시스템에서 수신된 입찰과 관련될 수 있다. 피드백 테이블(962)은 도 7의 하나 이상의 평판 엔진(710)에 의해 일 예시적인 실시예에서, 피드백 스코어의 형태로 사용자(106)에 관한 평판 정보를 구성하고 유지하는 데에 이용될 수 있다. 히스토리 테이블(964)은 사용자(106)가 당사자인 거래의 히스토리를 유지할 수 있다. 하나 이상의 속성 테이블(966)은 아이템 테이블(954) 내에 레코드가 존재하는 아이템에 관한 속성 정보를 기록할 수 있다. 이러한 속성의 단일 예만을 고려하면, 속성 테이블(966)은 특정 아이템과 연관된 통화 속성을 나타낼 수 있으며, 통화 속성은 판매자가 지정한 관련 품목의 가격 통화를 식별한다. 검색 테이블(968)은 특정 유형의 리스트를 찾고있는 사용자(106)(예를 들어, 구매자)에 의해 입력된 검색 정보를 저장할 수 있다. 검색 테이블(968)은 글로벌 토큰 풀 테이블(970) 및 클라이언트 토큰 풀 테이블(972)의 형태로 하나 이상의 데이터 테이블을 포함하거나 통신할 수 있다. 글로벌 토큰 풀 테이블(970)은 전술한 글로벌 토큰 풀을 나타내는 정보를 저장하는 데이터 테이블 또는 다른 데이터 구조일 수 있다. 클라이언트 토큰 풀 테이블(972)은 전술한 사용자(106)의 토큰 풀을 나타내는 정보를 저장하는 데이터 테이블 또는 다른 데이터 구조일 수 있다.
예시적인 머신 아키텍처 및 판독가능한 매체
도 10은 머신 판독가능 매체(예를 들어, 머신 판독가능 저장 매체)로부터 명령어(1016)을 판독할 수 있고 본 명세서에서 논의된 임의의 하나 이상의 방법을 수행할 수 있는 일부 실시예에 따라 머신(1000)의 컴포넌트를 나타내는 블록도이다. 구체적으로, 도 10은 컴퓨터 시스템의 예시적인 형태의 머신(1000)을 도식적으로 나타낸 도면으로서, 컴퓨터 시스템 내에서 머신(1000)으로 하여금 본 명세서에서 논의된 방법론 중 임의의 하나 이상의 방법을 수행하게 하는 명령어(1016)(예를 들어, 소프트웨어, 프로그램, 애플리케이션, 애플릿, 엡 또는 다른 실행가능 코드)가 실행될 수 있다. 예를 들어, 명령어(1016)는 머신(1000)으로 하여금 도 3 내지 6의 흐름도를 실행하게 할 수 있다. 추가적으로 또는 대안으로, 명령어(1016)는 도 1 내지 6의 수신기 모듈(210), 네이티브 결과 모듈(220), 액세스 모듈(230), 토큰 관리 모듈(240), 확장 결과 모듈(250), 선택 모듈(260), 추천 모듈(270), 프레젠테이션 모듈(280) 및 통신 모듈(290) 등을 구현할 수 있다. 명령어(1016)는 일반적인 비 프로그램 머신(1000)을 설명된 방식으로 설명되고 도시된 기능을 수행하도록 프로그램된 특정 머신으로 변환한다. 다른 실시예에서, 머신(1000)은 독립형 디바이스로서 동작하거나 다른 머신에 결합(예를 들어, 네트워크화)될 수 있다. 네트워크화된 배치에서, 머신(1000)은 서버-클라이언트 네트워크 환경에서 서버 머신 또는 클라이언트 머신의 기능으로 동작할 수 있거나 피어-투-피어(또는 분산) 네트워크 환경에서 피어 머신으로서 동작할 수 있다. 다양한 실시예에서, 머신(1000)은 서버 컴퓨터, 클라이언트 컴퓨터, 퍼스널 컴퓨터(PC), 태블릿 컴퓨터, 랩톱 컴퓨터, 넷북, 셋톱 박스(STB), 개인용 디지털 보조기(PDA), 엔터테인먼트 미디어 시스템, 셀룰러 폰, 스마트 폰, 모바일 장치, 착용형 장치(예: 스마트 시계), 기타 스마트 장치, 웹 어플라이언스, 네트워크 라우터, 네트워크 스위치, 네트워크 브리지, 또는 머신(1000)에 의해 취해질 동작을 지정하는 명령어(1016)을 순차적으로 또는 다른 방식으로 실행할 수 있는 임의의 머신을 포함할 수 있으나 이에 한정되는 것은 아니다. 또한, 단일 머신(1000)만 도시되어 있지만, 또한 용어 "머신"은 본 명세서에서 논의된 방법론 임의의 하나 이상의 방법론을 수행하기 위해 개별적으로 또는 공동으로 명령어(1016)를 실행하는 머신(1000)의 잊합을 포함하는 것으로 간주될 수 있다.
머신(1000)은 버스(1002)를 통해 서로 통신하도록 구성될 수 있는 프로세서(1010), 메모리(1030) 및 I/O 컴포넌트(1050)를 포함할 수 있다. 예시적인 실시예에서, 프로세서(1010)(예를 들면, 중앙 처리 장치(CPU), 축소 명령 집합 연산 (RISC) 프로세서, 복잡한 명령 집합 연산(CISC) 프로세서, 그래픽 처리 장치(GPU), 디지털 신호 프로세서(DSP), 애플리케이션 특정 집적 회로(ASIC), 무선 주파수 집적 회로(RFIC), 다른 프로세서, 또는 이들의 임의의 적절한 조합)는 예를 들어, 명령어(1016)를 실행할 수 있는 프로세서(1012) 및 프로세서(1014)를 포함할 수 있다. "프로세서"라는 용어는 동시에 명령어(1016)를 실행할 수 있는 둘 이상의 독립 프로세서(1012, 1014)(때로는 "코어")를 포함할 수 있는 멀티 코어 프로세서(1010)를 포함하는 것으로 여겨진다. 도 10은 다수의 프로세서(1012, 1014)를 도시하지만, 머신(1000)은 단일 코어를 갖는 단일 프로세서(1010), 다중 코어를 갖는 단일 프로세서(1010)(예를 들어, 멀티 코어 프로세스), 단일 코어를 갖는 다중 프로세서(1010), 다중 코어를 갖는 다중 프로세서(1010), 또는 이들의 임의의 조합을 포함할 수 있다.
메모리/저장 장치(1030)는 예를 들면 버스(1002)를 통해 프로세서(1010)에 모두 액세스 가능한 주 메모리 또는 다른 메모리 저장 장치와 같은 메모리(1032) 및 저장 유닛(1036)을 포함할 수 있다. 저장 유닛(1036) 및 메모리(1032)는 여기서 설명된 임의의 하나 이상의 방법론 또는 기능을 구현하는 명령어(1016)를 저장한다. 명령어(1016)는 또한 머신(1000)이 이들을 실행하는 동안 메모리(1032) 내, 저장 유닛(1036) 내, 프로세서(1010) 중 적어도 하나 내(예를 들어, 프로세서(1010)의 캐시 메모리 내)에 완전히 또는 부분적으로 상주한다. 따라서, 메모리(1032), 저장 유닛(1036) 및 프로세서들의 메모리(1010)는 머신 판독가능 매체의 예이다.
본 명세서에 사용된 바와 같이, "머신 판독가능 매체"는 명령어(1016) 및 데이터를 일시적으로 또는 영구적으로 저장할 수 있는 장치를 의미하며, 랜덤 액세스 메모리(RAM), 판독 전용 메모리(ROM), 버퍼 메모리, 플래시 메모리, 광학 매체, 자기 매체, 캐시 메모리, 다른 유형의 저장 장치(예를 들어, 소거 가능 프로그램 가능 판독 전용 메모리(EEPROM)) 및/또는 이들의 임의의 적절한 조합일 수 있다. "머신 판독가능 매체"라는 용어는 명령어(1016)를 저장할 수 있는 단일 매체 또는 다중 매체(예: 중앙 집중식 또는 분산 데이터베이스, 또는 연관된 캐시 및 서버)를 포함하는 것으로 간주된다. "머신 판독가능 매체"라는 용어는 머신(예, 머신(1000))이 실행하기 위한 명령어를 저장할 수 있는 임의의 매체 또는 다중 매체의 조합을 포함하도록 간주될 수 있어 명령어(1016)는 머신(1000)(예를 들어, 프로세서들(1010))의 프로세서 중 하나 이상에 의해 실행될 때 머신(1000)으로 하여금 여기에 설명된 방법론 중 임의의 하나 이상의 방법론을 수행하게 한다. 따라서, "머신 판독가능 매체"는 다수의 저장 장치 또는 디바이스를 포함하는 "클라우드 기반" 저장 시스템 또는 저장 네트워크뿐만 아니라 단일 저장 장치 또는 디바이스를 지칭한다.
I/O 컴포넌트(1050)는 입력을 수신하고, 출력을 제공하고, 출력을 생성하고, 정보를 송신하고, 정보를 교환하고, 측정값을 캡처하는 등을 위한 다양한 컴포넌트를 포함할 수 있다. 특정 머신에 포함되는 특정 I/O 컴포넌트(1050)는 머신의 타입에 의존할 것이다. 예를 들어, 휴대 전화와 같은 휴대용 머신에는 터치 입력 장치 또는 기타 입력 메커니즘이 포함될 수 있지만 헤드리스 서버 컴퓨터에는 그러한 터치 입력 장치가 포함되지 않을 것이다. I/O 컴포넌트(1050)는 도 10에 도시되지 않은 많은 다른 컴포넌트를 포함할 수 있다는 점을 이해할 것이다. I/O 컴포넌트(1050)는 단지 다음의 설명을 단순화하기 위한 기능에 따라 그룹화되며, 그룹화는 결코 제한적인 것이 아니다. 다양한 실시예에서, I/O 컴포넌트(1050)는 출력 컴포넌트(1052) 및 입력 컴포넌트(1054)를 포함할 수 있다. 출력 컴포넌트(1052)는 비주얼 컴포넌트(예를 들어, 플라즈마 디스플레이 패널(PDP)과 같은 디스플레이, 발광 다이오드(CRT) 디스플레이, 액정 디스플레이(LCD), 프로젝터, 음극선 관 (CRT), 음향 컴포넌트(예: 스피커), 햅틱 컴포넌트(예: 진동 모터, 저항 메커니즘), 기타 신호 발생기 등을 포함할 수 있다. 입력 컴포넌트(1054)는 영숫자 입력 컴포넌트(예를 들어, 키보드, 영숫자 입력을 수신하도록 구성된 터치 스크린, 광 광학 키보드 또는 다른 영숫자 입력 컴포넌트), 포인트 기반 입력 컴포넌트(예를 들어, 마우스, 트랙볼, 조이스틱, 동작 센서 또는 다른 포인팅 도구), 촉각 입력 컴포넌트(예: 물리적 단추, 터치 또는 터치 제스처의 위치 및/또는 포스(force)를 제공하는 터치 스크린, 또는 다른 촉각 입력 컴포넌트), 오디오 컴포넌트(예, 마이크로폰) 등을 포함할 수 있다.
또 다른 예시적인 실시예에서, I/O 컴포넌트(1050)는 광범위한 다른 컴포넌트 중에서 생체 인식 컴포넌트(1056), 모션 컴포넌트(1058), 환경 컴포넌트(1060) 또는 위치 컴포넌트(1062)를 포함할 수 있다. 예를 들어, 생체 인식 컴포넌트(1056)는 표현(예를 들어, 손 표현, 표정, 보컬 표현, 몸짓 또는 눈 추적)을 검출하고, 생체 신호(예를 들어, 혈압, 심박수, 체온, 땀 또는 뇌파)를 측정하며, 사람 식별(예: 음성 식별, 망막 식별, 안면 식별, 지문 식별 또는 뇌파 기반 식별) 등을 위한 컴포넌트를 포함할 수 있다. 동작 컴포넌트(1058)는 가속도 센서 컴포넌트(예: 가속도계), 중력 센서 컴포넌트, 회전 센서 컴포넌트(예: 자이로스코프) 등을 포함할 수 있다. 환경 컴포넌트(1060)는 예를 들어 조명 센서 컴포넌트(예: 광도계), 온도 센서 컴포넌트(예를 들어, 주위 온도를 검출하는 하나 이상의 온도계), 습도 센서 컴포넌트, 압력 센서 컴포넌트(예: 기압계), 음향 센서 컴포넌트(예: 배경 잡음을 탐지하는 하나 이상의 마이크), 근접 센서 컴포넌트(예: 근처의 물체를 탐지하는 적외선 센서), 가스 센서(예: 안전을 위해 위험한 가스의 농도를 탐지하거나 대기 오염을 측정하는 가스 검출 센서), 또는 주변 물리적 환경에 대응하는 표시, 측정 또는 신호를 제공할 수 있는 다른 컴포넌트를 포함할 수 있다. 위치 컴포넌트(1062)는 위치 센서 컴포넌트(예를 들어, 글로벌 위치 시스템 (GPS) 수신기 컴포넌트), 고도 센서 컴포넌트(예를 들어 고도가 유도될 수 있는 공기압을 검출하는 고도계 또는 기압계), 방향 센서 컴포넌트(예를 들어, 자력계) 등을 포함할 수 있다.
통신은 다양한 기술을 사용하여 구현될 수 있다. I/O 컴포넌트(1050)는 각각 커플링(1082) 및 커플링(1072)을 통해 머신(1000)을 네트워크(1080) 또는 디바이스(1070)에 결합하도록 동작 가능한 통신 컴포넌트(1064)를 포함할 수 있다. 예를 들어, 통신 컴포넌트(1064)는 네트워크 인터페이스 컴포넌트 또는 네트워크(1080)와 인터페이스하기에 적합한 다른 장치를 포함할 수 있다. 추가적인 예에서, 콩신 컴포넌트(1064)는 유선 통신 컴포넌트, 무선 통신 컴포넌트, 셀룰러 통신 컴포넌트, 근거리 통신(NFC) 컴포넌트, Bluetooth® 컴포넌트(예: Bluetooth® 저 에너지), Wi-Fi® 컴포넌트 및 다른 방식으로 통신할 수 있는 기타 통신 컴포넌트를 포함할 수 있다. 장치(1070)는 다른 머신 또는 임의의 다양한 주변 장치(예를 들어, 범용 직렬 버스(USB)를 통해 결합된 주변 장치)일 수 있다.
더욱이, 통신 컴포넌트(1064)는 식별자를 검출하거나 식별자를 검출하도록 동작 가능한 컴포넌트를 포함할 수 있다. 예를 들어, 통신 컴포넌트(1064)는 무선 주파수 식별(RFID) 태그 판독기 컴포넌트, NFC 스마트 태그 검출 컴포넌트, 광학 판독기 컴포넌트(예를 들어, 유니버설 제품 코드(UPC) 바코드, QR(Quick Response) 코드, 아즈텍 코드, 데이터 매트릭스, 데이터 글리프(Dataglyph), 맥시코드(MaxiCode), PDF417, 울트라 코드(Ultra Code), UCC RSS-2D 바코드 및 기타 광학 코드와 같은 일차원 바코드를 검출하기 위한 광학 센서) 또는 음향 탐지 컴포넌트(예: 태그 오디오 신호를 식별하는 마이크)를 포함할 수 있다. 또한, 인터넷 프로토콜(IP) 지리적 위치를 통한 위치, Wi-Fi® 신호 삼각 측량을 통한 위치, 특정 위치를 나타낼 수 있는 NFC 비콘 신호 감지를 통한 위치 등과 같은 다양한 정보가 통신 컴포넌트(1064)를 통해 도출될 수 있다.
전송 매체
다양한 예시적인 실시예에서, 네트워크(1080)의 하나 이상의 부분은 애드혹 네트워크, 인트라넷, 엑스트라 넷, 가상 사설망(VPN), 근거리 통신망(LAN), 무선 LAN(WLAN), 광역 통신망(WAN:Wide Area Network), 무선 WAN(WWAN), 도시 지역 통신망(MAN:Metropolitan Area Network), 인터넷, 인터넷의 일부, 공중 교환 전화망(PSTN: Phublic Switched Telephone Network)의 일부, 기존 전화 서비스(POTS:plain old telephone service) 네트워크, 셀룰러 전화 네트워크, 무선 네트워크, Wi-Fi® 네트워크, 다른 유형의 네트워크, 또는 둘 이상의 그러한 네트워크의 조합 일 수 있다. 예를 들어, 네트워크(1080) 또는 네트워크(1080)의 일부는 무선 또는 셀룰러 네트워크를 포함할 수 있고, 커플링(1082)은 CDMA(Code Division Multiple Access) 연결, GSM(Global System for Mobile communications) 또는 다른 유형의 셀룰러 또는 무선 커플링을 포함할 수 있다. 이 예에서, 커플링(1082)은 단일 반송파 무선 전송 기술(1xRTT), 진화 데이터 최적화(EVDO) 기술, 일반 패킷 무선 서비스(GPRS) 기술, GSM 진화(EDGE)를 위한 향상된 데이터 속도 기술, 3G를 포함하는 3 세대 파트너쉽 프로젝트(3GPP), 4 세대 무선(4G) 네트워크, UMTS(Universal Mobile Telecommunications System), 고속 패킷 액세스(HSPA), 마이크로 웨이브 액세스를 위한 전세계 상호 운용성(WiMAX), LTE(Long Term Evolution) 표준, 다양한 표준 설정 기관, 기타 장거리 프로토콜 또는 기타 데이터 전송 기술로 정의된 표준 등 중 어느 하나를 구현할 수 있다.
명령어(1016)는 네트워크 인터페이스 장치(예를 들어, 통신 컴포넌트들(1064)에 포함된 네트워크 인터페이스 컴포넌트)를 통해 전송 매체를 사용하고 다수의 잘 알려진 전송 프로토콜(예: 하이퍼 텍스트 전송 프로토콜(HTTP)) 중 임의의 하나를 이용하여 네트워크(1080)를 통해 전송되거나 수신될 수 있다. 유사하게, 명령어(1016)는 장치(1070)에 대한 커플링(1072)(예를 들어, 피어 투 피어 커플 링)을 통해 전송 매체를 사용하여 전송 또는 수신될 수 있다. "전송 매체"라는 용어는 머신(1000)에 의한 실행을 위한 명령어(1016)를 저장, 인코딩 또는 운반할 수 있는 임의 유형의 매체를 포함하고, 그러한 소프트웨어의 통신을 용이하게 하기 위해 디지털 또는 아날로그 통신 신호들 또는 다른 무형 매체를 포함하는 것을 간주될 수 있다. 캐리어 매체라는 용어는 프로세서에 의해 실행 가능한 명령 세트를 운반 할 수 있는 임의의 매체를 포함하며, 기계 판독가능 매체 및 전송 매체를 포함한다.
언어
본 명세서에서, 복수의 인스턴스는 단일 인스턴스로 기술된 컴포넌트, 동작 또는 구조를 구현할 수 있다. 하나 이상의 방법의 개개의 동작이 개별적인 동작으로 도시되고 기술되었지만, 개개의 동작 중 하나 이상은 동시에 수행될 수 있으며, 동작이 도시된 순서대로 수행되어야 하는 것은 아니다. 예제 구성에서 별도의 컴포넌트로 제공되는 구조 및 기능은 결합된 구조 또는 컴포넌트로 구현될 수 있다. 유사하게, 단일 구성 요소로서 제공되는 구조 및 기능은 개별 구성 요소로서 구현될 수 있다. 이들 및 다른 변형, 수정, 추가 및 개선은 본 명세서의 발명의 대상의 범주에 속한다.
비록 본 발명의 대상에 대한 개요가 특정 예시적인 실시예를 참조하여 설명되었으나 본 개시내용의 범위를 벗어나지 않는 한 이들 실시예에 대한 다양한 수정 및 변경이 이루어질 수 있다. 본 발명의 대상의 이러한 실시예는 단지 편의상 "발명"이라는 용어로 개별적 또는 집합적으로 본 명세서에 언급될 수 있으나, 실제로 하나 이상의 발명이 개시되는 경우에 임의의 단일한 개시내용 또는 발명의 개념으로 스스로 본 응용예의 범주를 제한하려는 것은 아니다.
여기에 예시된 실시예는 당업자가 개시된 암시내용을 실시할 수 있도록 충분히 상세하게 설명된다. 본 개시내용의 범위를 벗어나지 않는 한 구조적 및 논리적 대체 및 변경이 이루어질 수 있도록 다른 실시예가 사용될 수 있고 그로부터 도출될 수 있다. 따라서, 상세한 설명은 제한적인 의미로 받아들여서는 안 되며, 다양한 실시예의 범위는 청구 범위에 의해 정해지는 균등물의 전체 범위와 함께 첨부된 청구 범위에 의해서만 정의된다.
본원에 사용된 용어 "또는"은 포괄적이거나 배타적인 의미로 해석될 수 있다. 또한, 본 명세서에서 단일 인스턴스로서 기술된 자원, 동작 또는 구조에 대해 복수의 인스턴스가 제공될 수 있다. 또한, 다양한 자원, 동작, 모듈, 엔진 및 데이터 저장소 사이의 경계는 다소 임의적이며, 특정 동작은 특정 예시적인 구성과 관련하여 설명된다. 기능에 대한 다른 할당들이 계획될 수 있고 본 개시의 다양한 실시예의 범위 내에 있을 수 있다. 일반적으로, 예시 구성들에서 별개의 자원으로서 제공되는 구조 및 기능성은 결합된 구조 또는 자원으로서 구현될 수 있다. 유사하게, 단일 자원으로서 제공된 구조 및 기능은 별도의 자원으로 구현될 수 있다. 이들 및 다른 변형, 수정, 추가 및 개선은 첨부된 청구 범위에 의해 대표되는 본 개시의 실시예의 범위 내에 있다. 따라서, 명세서 및 도면은 제한적인 의미라기보다는 예시적인 것으로 간주되어야 한다.
달리 구체적으로 언급되지 않는 한, "프로세싱", "컴퓨팅", "계산", "결정", "프레젠테이션", "디스플레이" 등과 같은 단어를 사용하는 본 명세서의 논의는 하나 이상의 메모리(예를 들어, 휘발성 메모리, 비휘발성 메모리, 또는 이들의 임의의 적절한 조합), 레지스터 또는 정보를 수신, 저장, 전송 또는 표시하는 기타 머신 컴포넌트 내의 물리적(예를 들어, 전자, 자기 또는 광학) 양으로 표현된 데이터를 조작하거나 변환하는 머신(예를 들어, 컴퓨터)(1000)의 액션 또는 프로세스를 나타낼 수 있다. 또한, 달리 구체적으로 언급되지 않는 한, "하나("a" 또는 "an")"라는 용어는 하나 이상의 인스턴스를 포함하도록 특허 문서에서 일반적으로 사용된다. 마지막으로, 본 명세서에서 사용된 바와 같이, "또는(or)"이라는 접속사는 달리 구체적으로 언급되지 않는 한 배타적이지 않은 "또는"을 나타낸다.
Claims (21)
- 컴퓨터 구현 방법으로서,
적어도 토큰 부분(token portion)을 포함하는 질의어 부분(query portion)을 클라이언트 장치로부터 수신하는 단계와,
상기 토큰 부분에 기초하여, 제 1 검색 질의어 제안 세트(first search query suggestion set)를 생성하는 단계 - 상기 제 1 검색 질의어 제안 세트는 제 1 제안 토큰 세트를 포함하고 제 1 순서를 가짐 - 와,
상기 클라이언트 장치와 연관된 토큰 풀에 액세스하는 단계와,
머신의 적어도 하나의 프로세서에 의해, 상기 토큰 부분 및 상기 토큰 풀에 기초하여 제 2 검색 질의어 제안 세트를 생성하는 단계 - 상기 제 2 검색 질의어 제안 세트는 제 2 제안 토큰 세트를 포함하고 제 2 순서를 가짐 - 와,
상기 머신의 적어도 하나의 프로세서에 의해, 검색 질의어 제안의 제 1 서브세트 및 검색 질의어 제안의 제 2 서브세트를 선택하는 단계 - 상기 검색 질의어 제안의 제 1 서브세트는 상기 제 1 검색 질의어 제안 세트로부터 선택되고, 상기 검색 질의어 제안의 제 2 서브세트는 상기 제 2 검색 질의어 제안 세트로부터 선택됨 - 와,
상기 검색 질의어 제안의 제 1 서브세트 및 상기 검색 질의어 제안의 제 2 서브세트를 병합하여 제 3 검색 질의어 제안 세트를 형성하는 단계와,
상기 제 1 순서 및 상기 제 2 순서와 구별되는 제 3 순서로 상기 제 3 검색 질의어 제안 세트를 구성(organizing)하는 단계와,
상기 제 3 순서의 상기 제 3 검색 질의어 제안 세트를 상기 클라이언트 장치 상에 프레젠테이션하게 하는 단계
를 포함하는 방법.
- 제 1 항에 있어서,
상기 제 1 검색 질의어 제안 세트를 생성하는 단계는,
상기 클라이언트 장치를 포함하는 클라이언트 장치 세트와 연관된 글로벌 토큰 풀(global token pool)에 액세스하는 단계와,
상기 토큰 부분 및 상기 글로벌 토큰 풀에 기초하여 상기 제 1 검색 질의어 제안 세트를 생성하는 단계
를 더 포함하는 방법.
- 제 1 항에 있어서,
상기 클라이언트 장치로부터 히스토리 질의어 세트를 나타내는 질의어 세트를 수신하는 단계 - 상기 질의어 세트의 각 질의어는 히스토리 토큰 세트를 포함함 - 를 더 포함하는
방법.
- 제 3 항에 있어서,
상기 히스토리 질의어 세트의 각각의 질의어의 상기 히스토리 토큰 세트는 상기 토큰 풀을 형성하는
방법.
- 제 4 항에 있어서,
상기 각각의 히스토리 토큰은 하나 이상의 특징(features)을 포함하고,
상기 방법은,
상기 토큰 풀의 각각의 히스토리 토큰에 대한 토큰 품질을 결정하는 단계와,
상기 토큰 품질을 상기 토큰 풀의 각각의 히스토리 토큰과 연관시키는 단계
를 더 포함하는 방법.
- 제 1 항에 있어서,
상기 토큰 풀에 액세스하는 단계는,
검색 질의어를 형성하는 토큰 세트를 수신하는 단계와,
상기 토큰 세트를 저장하여 상기 토큰 풀을 형성하는 단계와,
상기 토큰 풀을 사용자와 연관시키는 단계
를 더 포함하는 방법.
- 제 1 항에 있어서,
상기 제 1 검색 질의어 제안 세트를 생성하는 단계는,
글로벌 스코어의 제 1 세트를 생성하는 단계 - 상기 글로벌 스코어의 제 1 세트의 각각의 글로벌 스코어는 상기 제 1 검색 질의어 제안 세트의 검색 질의어 제안과 연관됨 - 와,
상기 글로벌 스코어의 제 1 세트에 기초하여 상기 제 1 순서로 상기 제 1 검색 질의어 제안 세트를 구성하는 단계
를 더 포함하는 방법.
- 제 7 항에 있어서,
상기 제 2 검색 질의어 제안 세트를 생성하는 단계는,
글로벌 스코어의 제 2 세트를 생성하는 단계 - 상기 글로벌 스코어의 제 2 세트의 각각의 글로벌 스코어는 상기 제 2 검색 질의어 제안 세트의 검색 질의어 제안과 연관됨 - 와,
상기 글로벌 스코어의 제 2 세트에 기초하여 상기 제 2 순서로 상기 제 2 검색 질의어 제안 세트를 구성하는 단계
를 더 포함하는 방법.
- 제 8 항에 있어서,
상기 제 3 순서로 상기 제 3 검색 질의어 제안 세트를 구성하는 단계는,
상기 제 3 검색 질의어 제안 세트에 포함된 상기 검색 질의어 제안의 제 2 서브세트 내에서 각 검색 질의어 제안에 대한 부스팅 인자(boosting factor)를 계산하는 단계와,
상기 검색 질의어 제안의 제 2 서브세트의 각 검색 질의어 제안의 상기 부스팅 인자, 상기 글로벌 스코어의 제 1 세트 및 상기 글로벌 스코어의 제 2 세트에 기초하여 상기 제 3 순서를 결정하는 단계
를 더 포함하는 방법.
- 제 8 항에 있어서,
상기 검색 질의어 제안의 제 1 서브세트 및 상기 검색 질의어 제안의 제 2 서브세트를 선택하는 단계는,
상기 제 1 검색 질의어 제안 세트에 대한 글로벌 스코어 임계값을 생성하는 단계와,
상기 검색 질의어 제안의 제 1 서브세트에 포함시키기 위해 상기 글로벌 스코어 임계값을 초과하는 상기 제 1 검색 질의어 제안 세트의 하나 이상의 검색 질의어 제안을 결정하는 단계와,
상기 검색 질의어 제안의 제 2 서브세트에 포함시키기 위해 상기 글로벌 스코어 임계값을 초과하는 상기 제 2 검색 질의어 제안 세트의 하나 이상의 검색 질의어 제안을 결정하는 단계
를 더 포함하는 방법.
- 시스템으로서,
클라이언트 장치로부터 적어도 토큰 부분을 포함하는 질의어 부분을 수신하도록 구성된 수신 모듈과,
상기 클라이언트 장치와 연관된 토큰 풀에 액세스하도록 구성된 토큰 액세스 모듈과,
상기 토큰 부분에 기초하여 제 1 검색 질의어 제안 세트를 생성하도록 구성된 머신의 적어도 하나의 프로세서를 포함하는 제안 생성 모듈 - 상기 제 1 검색 질의어 제안 세트는 제 1 제안 토큰 세트를 포함하고, 상기 제 1 검색 질의어 제안 세트는 제 1 순서를 가지며 상기 토큰 부분 및 상기 토큰 풀에 기초하여 제 2 검색 질의어 제안 세트를 생성하도록 구성되고, 상기 제 2 검색 질의어 제안 세트는 제 2 제안 토큰 세트를 포함하고 제 2 순서를 가짐 - 과,
검색 질의어 제안의 제 1 서브세트 및 검색 질의어 제안의 제 2 서브세트를 선택하도록 구성된 상기 머신의 적어도 하나의 프로세서를 포함하는 선택 모듈 - 상기 검색 질의어 제안의 제 1 서브세트는 상기 제 1 검색 질의어 제안 세트로부터 선택되고 상기 검색 질의어 제안의 제 2 서브세트는 상기 검색 질의어 제안의 제 2 서브세트로부터 선택됨 - 과,
상기 검색 질의어 제안의 제 1 서브세트 및 상기 검색 질의어 제안의 제 2 서브세트를 병합하여 제 3 검색 질의어 제안 세트를 형성하도록 구성된 병합 모듈과,
상기 제 1 순서 및 상기 제 2 순서와 구별되는 제 3 순서로 상기 제 3 검색 질의어 제안 세트를 구성하도록 구성된 구성 모듈(organization module)과,
상기 제 3 순서의 상기 제 3 검색 질의어 제안 세트를 상기 클라이언트 장치상에 프레젠테이션하게 하도록 구성되는 프레젠테이션 모듈
을 포함하는 시스템.
- 제 11 항에 있어서,
상기 수신기 모듈은 히스토리 질의어 세트를 나타내는 질의어 세트를 상기 클라이언트 장치로부터 수신하고, 상기 질의어 세트의 각각의 질의어는 히스토리 토큰 세트를 포함하며, 상기 히스토리 질의어 세트의 각 질의어의 히스토리 토큰 세트는 토큰 풀을 형성하고,
상기 시스템은 상기 토큰 풀의 각각의 히스토리 토큰에 대한 토큰 품질을 결정하고 상기 토큰 품질을 상기 토큰 풀의 각각의 히스토리 토큰과 연관시키도록 구성된 토큰 관리 모듈을 더 포함하는
시스템.
- 프로세서 실행가능 명령어를 포함하는 머신 판독가능 저장 매체로서,
상기 명령어는 머신의 프로세서에 의해 실행될 때, 상기 머신으로 하여금 동작을 수행하게 하고,
상기 동작은
적어도 토큰 부분을 포함하는 질의어 부분을 클라이언트 장치로부터 수신하는 단계와,
상기 토큰 부분에 기초하여, 제 1 검색 질의어 제안 세트를 생성하는 단계 - 상기 제 1 검색 질의어 제안 세트는 제 1 제안 토큰 세트를 포함하고 제 1 순서를 가짐 - 와,
상기 클라이언트 장치와 연관된 토큰 풀에 액세스하는 단계와,
상기 토큰 부분 및 상기 토큰 풀에 기초하여 제 2 검색 질의어 제안 세트를 생성하는 단계 - 상기 제 2 검색 질의어 제안 세트는 제 2 제안 토큰 세트를 포함하고 제 2 순서를 가짐 - 와,
검색 질의어 제안의 제 1 서브세트 및 검색 질의어 제안의 제 2 서브세트를 선택하는 단계 - 상기 검색 질의어 제안의 제 1 서브세트는 상기 제 1 검색 질의어 제안 세트로부터 선택되고, 상기 검색 질의어 제안의 제 2 서브세트는 상기 제 2 검색 질의어 제안 세트로부터 선택됨 - 와,
상기 검색 질의어 제안의 제 1 서브세트 및 상기 검색 질의어 제안의 제 2 서브세트를 병합하여 제 3 검색 질의어 제안 세트를 형성하는 단계와,
상기 제 1 순서 및 상기 제 2 순서와 구별되는 제 3 순서로 제 3 검색 질의어 제안 세트를 구성하는 단계와,
상기 제 3 순서의 상기 제 3 검색 질의어 제안 세트를 상기 클라이언트 장치 상에 프레젠테이션하게 하는 단계
를 포함하는 머신 판독가능 저장 매체.
- 제 13 항에 있어서,
상기 동작은,
클라이언트 장치의 세트와 연관된 글로벌 토큰 풀(global token pool)에 액세스하는 단계와,
상기 토큰 부분 및 상기 글로벌 토큰 풀에 기초하여 상기 제 1 검색 질의어 제안 세트를 생성하는 단계
를 더 포함하는 머신 판독가능 저장 매체.
- 제 13 항에 있어서,
상기 동작은 상기 클라이언트 장치로부터 히스토리 질의어 세트를 나타내는 질의어 세트를 수신하는 단계 - 상기 질의어 세트의 각 질의어는 히스토리 토큰 세트를 포함함 - 를 더 포함하는
머신 판독가능 저장 매체.
- 제 15 항에 있어서,
상기 히스토리 질의어 세트의 각 질의어의 상기 히스토리 토큰 세트는 토큰 풀을 형성하고,
상기 동작은,
상기 토큰 풀의 각각의 히스토리 토큰에 대한 토큰 품질을 결정하는 단계와,
상기 토큰 품질을 상기 토큰 풀의 각각의 히스토리 토큰과 연관시키는 단계
를 더 포함하는
머신 판독가능 저장 매체.
- 제 13 항에 있어서,
상기 동작은,
검색 질의어를 형성하는 토큰 세트를 수신하는 단계와,
상기 토큰 세트를 저장하여 토큰 풀을 형성하는 단계와,
상기 토큰 풀을 사용자와 연관시키는 단계
를 더 포함하는
머신 판독가능 저장 매체.
- 제 13 항에 있어서,
상기 동작은,
글로벌 스코어의 제 1 세트를 생성하는 단계 - 상기 글로벌 스코어의 제 1 세트의 각각의 글로벌 스코어는 상기 제 1 검색 질의어 제안 세트의 검색 질의어 제안과 연관됨 - 와,
상기 글로벌 스코어의 제 1 세트에 기초하여 상기 제 1 순서로 상기 제 1 검색 질의어 제안 세트를 구성하는 단계
를 더 포함하는
머신 판독가능 저장 매체.
- 제 18 항에 있어서,
상기 제 2 검색 질의어 제안 세트를 생성하는 단계는,
글로벌 스코어의 제 2 세트를 생성하는 단계 - 상기 글로벌 스코어의 제 2 세트의 각각의 글로벌 스코어는 상기 제 2 검색 질의어 제안 세트의 검색 질의어 제안과 연관됨 - 와,
상기 글로벌 스코어의 제 2 세트에 기초하여 상기 제 2 순서로 상기 제 2 검색 질의어 제안 세트를 구성하는 단계
를 더 포함하는 머신 판독가능 저장 매체.
- 제 19 항에 있어서,
상기 제 3 순서로 상기 제 3 검색 질의어 제안 세트를 구성하는 단계는,
상기 제 3 검색 질의어 제안 세트에 포함된 상기 검색 질의어 제안의 제 2 서브세트 내에서 각 검색 질의어 제안에 대한 부스팅 인자를 계산하는 단계와,
상기 검색 질의어 제안의 제 2 서브세트의 각 검색 질의어 제안의 부스팅 인자, 상기 글로벌 스코어의 제 1 세트 및 상기 글로벌 스코어의 제 2 세트에 기초하여 상기 제 3 순서를 결정하는 단계
를 더 포함하는 머신 판독가능 저장 매체.
- 프로세서에 의해 실행될 때, 머신으로 하여금 제 1 항 내지 제 10 항 중 어느 한 항의 방법을 수행하게 하는 명령어를 운반하는 반송파 매체.
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201462049271P | 2014-09-11 | 2014-09-11 | |
US62/049,271 | 2014-09-11 | ||
US14/818,034 | 2015-08-04 | ||
US14/818,034 US10936632B2 (en) | 2014-09-11 | 2015-08-04 | Enhanced search query suggestions |
PCT/US2015/047460 WO2016040013A1 (en) | 2014-09-11 | 2015-08-28 | Enhanced search query suggestions |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20170052667A true KR20170052667A (ko) | 2017-05-12 |
Family
ID=55454956
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020177009679A KR20170052667A (ko) | 2014-09-11 | 2015-08-28 | 향상된 검색 질의어 제안 |
Country Status (7)
Country | Link |
---|---|
US (1) | US10936632B2 (ko) |
EP (1) | EP3191976A4 (ko) |
KR (1) | KR20170052667A (ko) |
CN (1) | CN107003987A (ko) |
AU (1) | AU2015315634A1 (ko) |
CA (1) | CA2960714C (ko) |
WO (1) | WO2016040013A1 (ko) |
Families Citing this family (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10936632B2 (en) | 2014-09-11 | 2021-03-02 | Ebay Inc. | Enhanced search query suggestions |
US10503764B2 (en) * | 2015-06-01 | 2019-12-10 | Oath Inc. | Location-awareness search assistance system and method |
US10268366B2 (en) | 2015-06-05 | 2019-04-23 | Apple Inc. | Touch-based interactive learning environment |
US9928313B2 (en) * | 2015-06-15 | 2018-03-27 | Oath Inc. | Seasonal query suggestion system and method |
US10740368B2 (en) * | 2015-12-29 | 2020-08-11 | Facebook, Inc. | Query-composition platforms on online social networks |
AU2017264388B2 (en) | 2016-05-13 | 2022-04-21 | Equals 3 LLC | Searching structured and unstructured data sets |
US10824677B2 (en) * | 2016-08-29 | 2020-11-03 | Oath Inc. | Method and system for providing query suggestions |
KR101916798B1 (ko) * | 2016-10-21 | 2018-11-09 | 네이버 주식회사 | 검색 컨텍스트를 이용한 질의 추천 방법 및 시스템 |
US10713269B2 (en) | 2017-07-29 | 2020-07-14 | Splunk Inc. | Determining a presentation format for search results based on a presentation recommendation machine learning model |
US10565196B2 (en) | 2017-07-29 | 2020-02-18 | Splunk Inc. | Determining a user-specific approach for disambiguation based on an interaction recommendation machine learning model |
US11120344B2 (en) | 2017-07-29 | 2021-09-14 | Splunk Inc. | Suggesting follow-up queries based on a follow-up recommendation machine learning model |
US11170016B2 (en) * | 2017-07-29 | 2021-11-09 | Splunk Inc. | Navigating hierarchical components based on an expansion recommendation machine learning model |
US10885026B2 (en) | 2017-07-29 | 2021-01-05 | Splunk Inc. | Translating a natural language request to a domain-specific language request using templates |
US10885077B2 (en) * | 2017-09-28 | 2021-01-05 | Google Llc | Subquery generation from a query |
RU2711103C2 (ru) | 2017-12-27 | 2020-01-15 | Общество С Ограниченной Ответственностью "Яндекс" | Способ и сервер для прогнозирования предлагаемого варианта расширения частично введенного пользователем запроса |
CN108399260B (zh) * | 2018-03-12 | 2021-03-12 | 上海哔哩哔哩科技有限公司 | 商品信息管理方法、服务器及商品信息管理系统 |
US11010376B2 (en) * | 2018-10-20 | 2021-05-18 | Verizon Patent And Licensing Inc. | Methods and systems for determining search parameters from a search query |
US11790170B2 (en) * | 2019-01-10 | 2023-10-17 | Chevron U.S.A. Inc. | Converting unstructured technical reports to structured technical reports using machine learning |
CN113190739A (zh) * | 2021-02-02 | 2021-07-30 | 北京比特易湃信息技术有限公司 | 一种自定义商业因素的适用于用户搜索查询建议和拼写检查的系统 |
US20240104091A1 (en) * | 2022-09-23 | 2024-03-28 | Optum, Inc. | Machine learning techniques for generating personalized autocomplete prediction |
US20240289365A1 (en) * | 2023-02-28 | 2024-08-29 | Shopify Inc. | Systems and methods for performing vector search |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8200687B2 (en) | 2005-06-20 | 2012-06-12 | Ebay Inc. | System to generate related search queries |
US8429184B2 (en) | 2005-12-05 | 2013-04-23 | Collarity Inc. | Generation of refinement terms for search queries |
US8010523B2 (en) | 2005-12-30 | 2011-08-30 | Google Inc. | Dynamic search box for web browser |
US20090327224A1 (en) | 2008-06-26 | 2009-12-31 | Microsoft Corporation | Automatic Classification of Search Engine Quality |
US8601015B1 (en) * | 2009-05-15 | 2013-12-03 | Wolfram Alpha Llc | Dynamic example generation for queries |
WO2010141429A1 (en) * | 2009-06-01 | 2010-12-09 | Sean Christopher Timm | Providing suggested web search queries based on click data of stored search queries |
US8819052B2 (en) | 2010-03-29 | 2014-08-26 | Ebay Inc. | Traffic driver for suggesting stores |
US20120084291A1 (en) | 2010-09-30 | 2012-04-05 | Microsoft Corporation | Applying search queries to content sets |
US8473507B2 (en) * | 2011-01-14 | 2013-06-25 | Apple Inc. | Tokenized search suggestions |
US8645825B1 (en) | 2011-08-31 | 2014-02-04 | Google Inc. | Providing autocomplete suggestions |
CN102982023A (zh) | 2011-09-02 | 2013-03-20 | 北京百度网讯科技有限公司 | 一种提供搜索建议的方法及装置 |
CN103064853B (zh) | 2011-10-20 | 2017-02-08 | 北京百度网讯科技有限公司 | 一种搜索建议生成方法、装置及系统 |
CN103729351B (zh) | 2012-10-10 | 2017-10-03 | 阿里巴巴集团控股有限公司 | 查询词推荐方法及装置 |
US20140156620A1 (en) | 2012-12-05 | 2014-06-05 | Ebay Inc. | Enhanced online search |
US9116952B1 (en) * | 2013-05-31 | 2015-08-25 | Google Inc. | Query refinements using search data |
US10936632B2 (en) | 2014-09-11 | 2021-03-02 | Ebay Inc. | Enhanced search query suggestions |
-
2015
- 2015-08-04 US US14/818,034 patent/US10936632B2/en active Active
- 2015-08-28 EP EP15839776.0A patent/EP3191976A4/en not_active Withdrawn
- 2015-08-28 CN CN201580061405.9A patent/CN107003987A/zh active Pending
- 2015-08-28 AU AU2015315634A patent/AU2015315634A1/en not_active Abandoned
- 2015-08-28 WO PCT/US2015/047460 patent/WO2016040013A1/en active Application Filing
- 2015-08-28 CA CA2960714A patent/CA2960714C/en active Active
- 2015-08-28 KR KR1020177009679A patent/KR20170052667A/ko not_active Application Discontinuation
Also Published As
Publication number | Publication date |
---|---|
EP3191976A1 (en) | 2017-07-19 |
CA2960714C (en) | 2020-07-07 |
CA2960714A1 (en) | 2016-03-17 |
AU2015315634A1 (en) | 2017-04-06 |
US20160078101A1 (en) | 2016-03-17 |
WO2016040013A1 (en) | 2016-03-17 |
EP3191976A4 (en) | 2018-04-18 |
US10936632B2 (en) | 2021-03-02 |
CN107003987A (zh) | 2017-08-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CA2960714C (en) | Enhanced search query suggestions | |
US11132405B2 (en) | Method of identifying temporal demand of queries and metadata to give better autocomplete queries and improved search results | |
US20200020000A1 (en) | Generating product descriptions from user reviews | |
US20160342288A1 (en) | Intelligent highlighting of item listing features | |
JP2019533246A (ja) | 製品タイトルの選択 | |
KR102219831B1 (ko) | 맞춤형 작업가능 통지를 위한 시스템 및 방법 | |
KR102246823B1 (ko) | 상이한 사이트들에 걸쳐 데이터를 채택하는 방법 | |
US11847128B2 (en) | Flexibly managing records in a database to match searches | |
CN110785755B (zh) | 用于内容生成的上下文识别 | |
CN109076097B (zh) | 用于委托内容处理的系统和方法 | |
US20170193579A1 (en) | System and method to calculate session-based price demand on e-commerce site | |
US20160292773A1 (en) | System and method for automatically purchasing multiple items based on a budget | |
US20160034543A1 (en) | Generating item listings according to mapped sensor data | |
US20210142376A1 (en) | Compatible model determination for efficient listing creation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E601 | Decision to refuse application |