KR101842632B1 - 온라인 소셜 네트워크에서 질의를 위한 인버스 연산자의 사용 - Google Patents

온라인 소셜 네트워크에서 질의를 위한 인버스 연산자의 사용 Download PDF

Info

Publication number
KR101842632B1
KR101842632B1 KR1020167029274A KR20167029274A KR101842632B1 KR 101842632 B1 KR101842632 B1 KR 101842632B1 KR 1020167029274 A KR1020167029274 A KR 1020167029274A KR 20167029274 A KR20167029274 A KR 20167029274A KR 101842632 B1 KR101842632 B1 KR 101842632B1
Authority
KR
South Korea
Prior art keywords
query
user
constraint
search
social networking
Prior art date
Application number
KR1020167029274A
Other languages
English (en)
Other versions
KR20160124924A (ko
Inventor
라자트 레이나
홍기혁
스리람 산카
키티팻 바이로크시리
마이클 커티스
차이타냐 미슈라
Original Assignee
페이스북, 인크.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 페이스북, 인크. filed Critical 페이스북, 인크.
Publication of KR20160124924A publication Critical patent/KR20160124924A/ko
Application granted granted Critical
Publication of KR101842632B1 publication Critical patent/KR101842632B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • 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
    • G06Q50/00Information and communication technology [ICT] specially adapted for implementation of business processes of specific business sectors, e.g. utilities or tourism
    • G06Q50/01Social networking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24534Query rewriting; Transformation
    • G06F16/24537Query rewriting; Transformation of operators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24564Applying rules; Deductive queries
    • G06F16/24565Triggers; Constraints
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/33Querying
    • G06F16/338Presentation of query results
    • 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/36Creation of semantic tools, e.g. ontology or thesauri
    • G06F16/367Ontology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/80Information retrieval; Database structures therefor; File system structures therefor of semi-structured data, e.g. markup language structured data such as SGML, XML or HTML
    • G06F16/84Mapping; Conversion
    • G06F16/86Mapping to a database
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/903Querying
    • G06F16/9032Query formulation
    • G06F16/90332Natural language query formulation or dialogue systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/951Indexing; Web crawling techniques
    • G06F17/2705
    • G06F17/271
    • G06F17/277
    • G06F17/30976
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/205Parsing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/205Parsing
    • G06F40/211Syntactic parsing, e.g. based on context-free grammar [CFG] or unification grammars
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/279Recognition of textual entities
    • G06F40/284Lexical analysis, e.g. tokenisation or collocates

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Business, Economics & Management (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Mathematical Physics (AREA)
  • General Business, Economics & Management (AREA)
  • Economics (AREA)
  • Marketing (AREA)
  • Primary Health Care (AREA)
  • Strategic Management (AREA)
  • Tourism & Hospitality (AREA)
  • Human Resources & Organizations (AREA)
  • Computing Systems (AREA)
  • Animal Behavior & Ethology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Between Computers (AREA)
  • User Interface Of Digital Computer (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

일실시예로, 방법은 온라인 소셜 네트워크의 제1 사용자의 클라이언트 장치로부터, 온라인 소셜 네트워크와 연관된 하나 이상의 선택된 객체에 대한 레퍼런스를 포함하는 구조화 질의를 수신하는 단계, 제1 질의 제약 및 하나 이상의 제2 질의 제약들을 식별하기 위해 구조화 질의를 파싱하는 단계, 제1 질의 제약과 연관된 인버스 제약을 식별하는 단계, 및 구조화 질의에 기반하여 질의 명령을 생성하는 단계를 포함하고, 상기 제1 질의 제약은 임계 개수의 객체보다 많은 객체를 식별하는 것으로 사전에 플래그되고, 상기 질의 명령은 인버스 제약 및 하나 이상의 제2 질의 제약들을 포함한다.

Description

온라인 소셜 네트워크에서 질의를 위한 인버스 연산자의 사용{Using Inverse Operators for Queries on Online Social Networks}
본 명세서는 일반적으로 소셜 그래프 및 소셜 네트워킹 환경 내 객체에 대한 검색 수행에 관한 것이다.
소셜 네트워킹 웹사이트를 포함할 수 있는 소셜 네트워킹 시스템은 그 사용자들(가령, 사람들 또는 단체)이 소셜 네트워킹 시스템과 상호작용하고 소셜 네트워킹 시스템을 통해 서로 상호작용할 수 있게 해줄 수 있다. 소셜 네트워킹 시스템은 사용자로부터의 입력으로 사용자와 관련된 사용자 프로필을 생성하고 소셜 네트워킹 시스템에 저장할 수 있다. 사용자 프로필은 신상 정보, 통신-채널 정보 및 사용자의 개인 관심사에 대한 정보를 포함할 수 있다. 또한, 소셜 네트워킹 시스템은 사용자로부터의 입력으로 소셜 네트워킹 시스템의 다른 사용자들과의 사용자의 관계의 레코드를 생성하고 저장할 수 있을 뿐만 아니라, 서비스(예컨대, 담벼락-게시물, 사진 공유, 이벤트 조직, 메시징, 게임 또는 광고)를 제공하여 사용자들 사이의 소셜 상호작용을 용이하게 할 수 있다.
소셜 네트워킹 시스템은 하나 이상의 네트워크를 통해 서비스에 관한 컨텐츠 또는 메시지를 사용자의 모바일이나 다른 컴퓨팅 장치로 송신할 수 있다. 또한, 사용자는 소셜 네트워킹 시스템 내 사용자의 사용자 프로필과 다른 데이터에 접근하기 위해 소프트웨어 애플리케이션을 사용자의 모바일이나 다른 컴퓨팅 장치에 설치할 수 있다. 소셜 네트워킹 시스템은 사용자에게 디스플레이하기 위해 가령 사용자와 연결된 다른 사용자들의 집계된 소식의 뉴스피드와 같이 개인화된 세트의 컨텐츠 객체를 생성할 수 있다.
소셜 그래프 분석은 노드와 에지로 구성되는 네트워크 이론의 관점에서 소셜 관계를 보여줄 수 있다. 노드는 네트워크 내의 개인 행위자를 나타낼 수 있고, 에지는 개인 행위자들 사이의 관계를 나타낼 수 있다. 그 결과, 그래프-기반 구조는 종종 매우 복잡할 수 있다. 많은 타입의 노드 및 노드를 연결하는 많은 타입의 에지가 있을 수 있다. 가장 간단한 형태로, 소셜 그래프는 검토되는 모든 노드 사이의 모든 관련 에지의 지도이다.
관련 배경기술의 예시는, 2014년 1월 30일에 공개되고 발명의 명칭이 "Indexing Based on Object Type"인 미국 특허출원공개공보 US2014/0032563A1, 2014년 1월 30일에 공개되고 발명의 명칭이 "Generating Logical Expressions for Search Queries"인 미국 특허출원공개공보 US2014/0032587A1, 2014년 6월 26일에 공개되고 발명의 명칭이 "Extract Operator"인 미국 특허출원공개공보 US2014/0181091A1, 2013년 7월 25일에 공개되고 발명의 명칭이 "Detecting Social Graph Elements for Structured Search Queries"인 미국 특허출원공개공보 US2013/0191416A1, 2014년 5월 15일에 공개되고 발명의 명칭이 "Grammar Model for Structured Search Queries"인 미국 특허출원공개공보 US2014/0136564A1, 및 2014년 7월 3일에 공개되고 발명의 명칭이 "Natural-Language Rendering of Structured Search Queries"인 미국 특허출원공개공보 US2014/0188935A1에서 찾을 수 있다.
특정 실시예로, 소셜 네트워킹 시스템의 사용자는 특정한 소셜 그래프 요소에 대한 레퍼런스를 포함하는 구조화된 질의를 사용하여 소셜 네트워킹 시스템과 관련된 객체들을 검색할 수 있다. 구조화된 질의는 소셜 그래프 속성 및 다양한 소셜 그래프 요소에 대한 관계에 기반하여 소셜 그래프로 표현된 객체들을 검색하도록 온라인 소셜 네트워크의 사용자들에 대한 강력한 방식을 제공할 수 있다.
특정 실시예로, 가령 중첩형 검색 질의(nested search query)와 같이 내부 제약(inner constraint)과 외부 제약(outer constraint) 모두를 구비하는 구조화된 질의에 응답하여, 소셜 네트워킹 시스템은 내부 제약과 외부 제약 모두를 만족하는 온라인 소셜 네트워크와 관련된 객체들을 식별할 수 있다. 소셜 네트워킹 시스템과 관련된 객체들의 버티컬을 검색하는 프로세스는 질의 힌트(query hinting)를 사용하여 향상될 수 있고, 이때 외부 질의 제약은 내부 질의 제약에 매치하는 객체들을 식별할 때 사용된다. 예컨대, 가령 "Palo Alto에서 찍은 여성들의 사진들(Photos of females taken in Palo Alto)"과 같이 상대적으로 복잡한 구조화된 질의는 사용자 버티컬이 여성인 사용자들을 식별하고, 가령 "weak and" (WAND) 연산자와 같이 몇몇의 결과로부터 항들을 없애게 하는 연산자를 사용하여 Palo Alto의 사진에서 또한 태그되는 적어도 몇몇의 여성 사용자를 식별하도록 검색되기 위해 파싱(parsed)될 수 있었다. 다음으로, 사진 버티컬은 임의의 식별된 여성 사용자가 태그되는 Palo Alto에서 찍은 사진들을 식별하도록 검색될 수 있었다. 특정 실시예로, 제1 버티컬로부터의 결과는 점수화되고 순위화될 수 있고, 이런 점수는 제2 버티컬의 결과를 점수화할 때 사용될 수 있다. 이 방식으로, 외부 제약으로 요청되는 객체들에 대응하는 버티컬의 검색은 검색 질의를 만족하는 결과들을 생성할 가능성이 더 높다. 또한, 이를 통해 소셜 네트워킹 시스템은 더 나은 검색 결과를 생성할 수 있고 이런 결과를 생성하기 위한 처리 효율을 개선시킬 수 있다.
특정 실시예로, 소셜 네트워킹 시스템은 구조화된 검색 질의를 파싱하고 역 연산자(inverse operators)를 포함하는 질의 명령을 생성할 수 있다. 소셜 네트워킹 시스템과 관련된 객체들의 버티컬을 검색하는 프로세스는 역 연산자를 사용하여 개선될 수 있는데, 이때 질의 제약 중 하나는 그 역 제약(inverse constraint)을 포함하도록 수정될 수 있다. 가령 중첩형 검색 질의와 같이 내부 질의 제약과 외부 질의 제약 모두를 가지는 구조화된 질의를 파싱할 때, 일반적인 질의의 처리는 불충분한 수의 검색 결과를 생성할 수 있다. 이는 예컨대 내부 질의 제약이 너무 많은 결과를 생성하여 이들 중 몇몇이 외부 질의과 교차할 가능성이 감소하기 때문에 발생할 수 있다. 소셜 네트워킹 시스템과 관련된 객체들의 버티컬을 검색하는 프로세스는 역 연산자를 사용하여 개선될 수 있는, 이때 역 제약은 매치하는 객체를 버티컬에서 검색할 때 본래의 질의 제약을 대신하여 사용된다. 예컨대, 가령 "중국에서 사람들이 좋아한 나의 사진들(Photos of me liked by people in China)"과 같은 상대적으로 복잡한 구조화된 질의는 중국에서 사용자들이 좋아한 사진들을 검색하는 "liked_by" 연산자를 사용하는 대신에 질의중인 사용자의 사진들의 사용자들을 검색하는 "likers_of" 연산자를 사용하도록 파싱될 수 있다. 이 방식으로, 역 연산자는 특정 버티컬의 검색이 더 나은 검색 결과를 생성할 수 있도록 사용될 수 있고, 이런 결과를 생성하기 위한 처리 효율을 향상시킬 수 있다.
특정 실시예로, 소셜 네트워킹 시스템은 질의중인 사용자의 검색 의도에 기반하여 검색 결과를 순위화할 수 있다. 사용자는 각기 다른 검색 질의를 실행할 때 각기 다른 의도를 가질 수 있다. 검색 결과를 생성하는데 사용되는 검색 알고리즘은 이런 검색 의도에 기반하여 수정될 수 있으므로, 하나의 질의에 응답하여 검색 결과가 순위화되는 방식은 또 다른 질의에 응답하여 검색 결과가 순위화되는 방식과 다를 수 있다. 소셜 네트워킹 시스템은 검색 질의에 대한 하나 이상의 검색 의도를 식별할 수 있고, 이후 검색 의도에 기반하여 검색 질의에 매치하는 검색 결과를 순위화할 수 있다. 검색 의도는 예컨대 검색 질의에서 참조되는 소셜 그래프 요소, 검색 질의 내 용어, 질의중인 사용자와 관련된 사용자 정보, 질의중인 사용자의 검색 이력, 패턴 검출, 질의나 사용자에 관한 다른 적절한 정보 또는 이들의 임의의 조합에 기반하여 다양한 방식으로 결정될 수 있다. 예컨대, 검색 질의에서 참조되는 특정한 소셜 그래프 요소는 특정한 검색 의도에 대응할 수 있다. 검색 결과를 순위화할 때 검색 의도를 사용함으로써, 소셜 네트워킹 시스템은 질의중인 사용자와 더 많이 관련되거나 질의중인 사용자가 더 많이 관심을 가지는 검색 결과를 더 효과적으로 제시할 수 있다.
본 발명의 내용 중에 포함되어 있다.
도 1은 소셜 네트워킹 시스템과 관련된 예시적인 네트워크 환경을 도시한다.
도 2는 예시적인 소셜 그래프를 도시한다.
도 3은 소셜 네트워킹 시스템의 객체를 저장하기 위한 예시적인 파티셔닝을 도시한다.
도 4는 온라인 소셜 네트워크의 예시적인 웹페이지를 도시한다.
도 5a-5d는 소셜 네트워크의 예시적인 질의를 도시한다.
도 6은 내부 제약 및 외부 제약을 가진 검색 질의에 응답하여 검색 결과를 생성하는 예시적인 방법을 도시한다.
도 7은 역 연산자를 사용하여 검색 질의를 파싱하는 예시적인 방법을 도시한다.
도 8은 검색 의도에 기반하여 검색 결과를 생성하는 예시적인 방법을 도시한다.
도 9는 예시적인 컴퓨터 시스템을 도시한다.
시스템 개요
도 1은 소셜 네트워킹 시스템과 관련된 예시적인 네트워크 환경(100)을 도시한다. 네트워크 환경(100)은 네트워크(110)에 의해 서로 연결되는 클라이언트 시스템(130), 소셜 네트워킹 시스템(160) 및 제3자 시스템(170)을 포함한다. 도 1은 클라이언트 시스템(130), 소셜 네트워킹 시스템(160), 제3자 시스템(170) 및 네트워크(110)의 특정한 구성을 도시하지만, 본 명세서는 클라이언트 시스템(130), 소셜 네트워킹 시스템(160), 제3자 시스템(170) 및 네트워크(110)의 임의의 적절한 구성을 고려한다. 예로서 제한 없이, 2 이상의 클라이언트 시스템(130), 소셜 네트워킹 시스템(160) 및 제3자 시스템(170)은 네트워크(110)를 우회하여 서로 직접적으로 연결될 수 있다. 또 다른 예로서, 2 이상의 클라이언트 시스템(130), 소셜 네트워킹 시스템(160) 및 제3자 시스템(170)은 전체적으로 또는 부분적으로 서로 물리적으로 또는 논리적으로 같은 장소에 배치될 수 있다. 게다가, 도 1은 특정한 수의 클라이언트 시스템(130), 소셜 네트워킹 시스템(160), 제3자 시스템(170) 및 네트워크(110)를 도시하지만, 본 명세서는 임의의 적절한 수의 클라이언트 장치(130), 소셜 네트워킹 시스템(160), 제3자 시스템(170) 및 네트워크(110)를 고려한다. 예로서 제한 없이, 네트워크 환경(100)은 다수의 클라이언트 시스템(130), 소셜 네트워킹 시스템(160), 제3자 시스템(170) 및 네트워크(110)를 포함할 수 있다.
본 명세서는 임의의 적절한 네트워크(110)를 고려한다. 예로서 제한 없이, 네트워크(110)의 하나 이상의 부분은 애드 혹 네트워크, 인트라넷, 엑스트라넷, 가상 사설 네트워크(VPN), 근거리 네트워크(LAN), 무선 LAN(WLAN), 광역 네트워크(WAN), 무선 WAN(WWAN), 대도시 네트워크(MAN), 인터넷의 일부, 공중 전화망(PSTN)의 일부, 셀룰러 전화 네트워크 또는 2 이상의 이들의 조합을 포함할 수 있다. 네트워크(110)는 하나 이상의 네트워크(110)를 포함할 수 있다.
링크(150)는 클라이언트 시스템(130), 소셜 네트워킹 시스템(160) 및 제3자 시스템(170)을 통신 네트워크(110)와 연결하거나 서로 연결할 수 있다. 본 명세서는 임의의 적절한 링크(150)를 고려한다. 특정 실시예로, 하나 이상의 링크(150)는 하나 이상의 유선라인(가령, 예컨대, 디지털 가입자 라인(DSL) 또는 DOCSIS(Data Over Cable Service Interface Specification)), 무선(가령, 예컨대, Wi-Fi 또는 WiMAX(Worldwide Interoperability for Microwave Access)) 또는 광학(가령, 예컨대, 동기식 광학 네트워크(Synchronous Optical Network, SONET) 또는 동기식 디지털 계층(Synchronous Digital Hierarchy, SDH)) 링크를 포함한다. 특정 실시예로, 하나 이상의 링크(150)는 애드 혹 네트워크, 인트라넷, 엑스트라넷, VPN, LAN, WLAN, WAN, WWAN, MAN, 인터넷의 일부, PSTN의 일부, 셀룰러 기술-기반 네트워크, 위성 통신 기술-기반 네트워크, 또 다른 링크(150) 또는 2 이상의 이런 링크(150)의 조합을 각각 포함한다. 링크(150)는 네트워크 환경(100)을 통해 반드시 동일할 필요는 없다. 하나 이상의 제1 링크(150)는 하나 이상의 측면에서 하나 이상의 제2 링크(150)와 다를 수 있다.
특정 실시예로, 클라이언트 시스템(130)은 하드웨어, 소프트웨어 또는 임베디드 로직 컴포넌트나 이들의 2 이상의 컴포넌트의 조합을 포함하고 클라이언트 시스템(130)에 의해 구현되거나 지원되는 적절한 기능을 수행할 수 있는 전자식 장치일 수 있다. 예로서 제한 없이, 클라이언트 시스템(130)은 가령 데스크톱 컴퓨터, 노트북이나 랩톱 컴퓨터, 넷북, 태블릿 컴퓨터, e-북 리더, GPS 장치, 카메라, 개인용 정보 단말기(PDA), 휴대용 전자 장치, 셀룰러 전화, 스마트폰, 다른 적절한 전자 장치 또는 이들의 임의의 적절한 조합과 같은 컴퓨터 시스템을 포함할 수 있다. 본 명세서는 임의의 적절한 클라이언트 시스템(130)을 고려한다. 클라이언트 시스템(130)은 클라이언트 시스템(130)에서 네트워크 사용자가 네트워크(110)에 접근할 수 있게 할 수 있다. 클라이언트 시스템(130)은 그 사용자가 다른 클라이언트 시스템(130)의 다른 사용자들과 통신할 수 있게 할 수 있다.
특정 실시예로, 클라이언트 시스템(130)은, 가령 MICROSOFT INTERNET EXPLORER, GOOGLE CHROME 또는 MOZILLA FIREFOX와 같은 웹 브라우저(132)를 포함할 수 있고, 가령 TOOLBAR 또는 YAHOO TOOLBAR와 같은 하나 이상의 애드-온(add-ons), 플러그-인(plug-ins) 또는 다른 확장형(extensions)을 가질 수 있다. 클라이언트 시스템(130)에서의 사용자는 URL(Uniform Resource Locator) 또는 웹 브라우저(132)를 특정 서버(가령, 서버(162) 또는 제3자 시스템(170)과 관련된 서버)로 인도하는 다른 주소를 입력할 수 있고, 웹 브라우저(132)는 하이퍼텍스트 전송 프로토콜(HTTP) 요청을 생성하고 HTTP 요청을 서버로 통신할 수 있다. 서버는 HTTP 요청을 수락하고, HTTP 요청에 응답하여 하나 이상의 하이퍼텍스트 마크업 언어(HTML) 파일을 클라이언트 시스템(130)으로 통신할 수 있다. 클라이언트 시스템(130)은 사용자에게 표시하기 위해 서버로부터 HTML 파일에 기초한 웹페이지를 렌더링할 수 있다. 본 명세서는 임의의 적절한 웹페이지 파일을 고려한다. 예로서 제한 없이, 웹페이지는 특정한 필요에 따라 HTML 파일, 확장형 하이퍼텍스트 마크업 언어(XHTML) 파일 또는 확장형 마크업 언어(XML) 파일로부터 렌더링할 수 있다. 또한, 이런 페이지는, 예로서 제한 없이 JAVASCRIPT, JAVA, MICROSOFT SILVERLIGHT, 가령 AJAX(비동기식 JAVASCRIPT 및 XML)와 같은 마크업 언어와 스크립트의 조합 등과 같은 스크립트를 실행할 수 있다. 본 명세서에서, 웹페이지에 대한 레퍼런스는 (브라우저가 웹페이지를 렌더링하는데 사용할 수 있는) 하나 이상의 해당 웹페이지 파일을 포함하며, 적절한 경우, 그 역도 또한 같다.
특정 실시예로, 소셜 네트워킹 시스템(160)은 온라인 소셜 네트워크를 호스팅할 수 있는 네트워크-주소화 컴퓨팅 시스템일 수 있다. 소셜 네트워킹 시스템(160)은 예컨대 사용자-프로필 데이터, 컨셉-프로필 데이터, 소셜-그래프 정보 또는 온라인 소셜 네트워크에 관한 다른 적절한 데이터와 같은 소셜 네트워킹 데이터를 생성, 저장, 수신 및 송신할 수 있다. 소셜 네트워킹 시스템(160)은 직접적으로 또는 네트워크(110)를 통해 네트워크 환경(100)의 다른 컴포넌트들에 의해 접근될 수 있다. 특정 실시예로, 소셜 네트워킹 시스템(160)은 하나 이상의 서버(162)를 포함할 수 있다. 각 서버(162)는 일체형 서버(unitary server)일 수 있거나, 다수의 컴퓨터 또는 다수의 데이터센터에 걸쳐 있는 분산형 서버일 수 있다. 서버(162)는 예로서 제한 없이, 웹 서버, 뉴스 서버, 메일 서버, 메시지 서버, 광고 서버, 파일 서버, 애플리케이션 서버, 교환 서버, 데이터베이스 서버, 프록시 서버, 본 명세서에 기술된 기능이나 프로세스를 수행하는데 적절한 또 다른 서버 또는 이들의 임의의 조합과 같이, 다양한 타입일 수 있다. 특정 실시예로, 각 서버(162)는 서버(162)에 의해 구현되거나 지원되는 적절한 기능을 수행하기 위한 하드웨어, 소프트웨어 또는 임베디드 논리 소자 또는 2 이상의 이런 소자들의 조합을 포함할 수 있다. 특정 실시예로, 소셜 네트워킹 시스템(164)은 하나 이상의 데이터 스토어(164)를 포함할 수 있다. 데이터 스토어(164)는 다양한 타입의 정보를 저장하는데 사용될 수 있다. 특정 실시예로, 데이터 스토어(164)에 저장된 정보는 특정한 데이터 구조에 따라 구조화될 수 있다. 특정 실시예로, 각 데이터 스토어(164)는 관계형, 컬럼형, 상관형 또는 다른 적절한 데이터베이스일 수 있다. 비록 본 명세서는 특정 타입의 데이터베이스를 기술하거나 도시하지만, 본 명세서는 임의의 적절한 타입의 데이터베이스를 고려한다. 특정 실시예는 클라이언트 시스템(130), 소셜 네트워킹 시스템(160) 또는 제3자 시스템(170)이 데이터 스토어(164)에 저장된 정보를 관리, 검색, 변경, 추가 또는 삭제할 수 있게 하는 인터페이스를 제공할 수 있다.
특정 실시예로, 소셜 네트워킹 시스템(160)은 하나 이상의 데이터 스토어(164)에 하나 이상의 소셜 그래프를 저장할 수 있다. 특정 실시예로, 소셜 그래프는 (특정 사용자에 각각 해당하는) 다수의 사용자 노드 또는 (특정 컨셉에 각각 해당하는) 다수의 컨셉 노드를 포함할 수 있는 다수의 노드 및 노드를 연결하는 다수의 에지를 포함할 수 있다. 소셜 네트워킹 시스템(160)은 다른 사용자와 통신하고 상호작용하는 능력을 온라인 소셜 네트워크의 사용자에게 제공할 수 있다. 특정 실시예로, 사용자는 소셜 네트워킹 시스템(160)을 통해 온라인 소셜 네트워크에 가입한 후 연결들(즉, 관계들)을 그들이 연결되고자 하는 소셜 네트워킹 시스템(160)의 다수의 다른 사용자에 추가할 수 있다. 본 명세서에서, "친구"란 용어는 사용자가 소셜 네트워킹 시스템(160)을 통해 연결, 유대 또는 관계를 형성했던 소셜 네트워킹 시스템(160)의 임의의 다른 사용자를 가리킬 수 있다.
특정 실시예로, 소셜 네트워킹 시스템(160)은 소셜 네트워킹 시스템(160)에 의해 지원되는 다양한 유형의 아이템이나 객체에 대한 행위를 취할 수 있는 능력을 사용자에게 제공할 수 있다. 예로서 제한 없이, 아이템 및 객체는 소셜 네트워킹 시스템(160)의 사용자들이 속할 수 있는 그룹이나 소셜 네트워크, 사용자가 관심을 가질지도 모르는 이벤트 또는 캘린더 엔트리, 사용자가 사용할 수 있는 컴퓨터-기반 애플리케이션, 사용자가 서비스를 통해 아이템을 팔거나 구매할 수 있게 하는 거래, 사용자가 수행할 수 있는 광고와의 상호작용 또는 다른 적절한 아이템이나 객체를 포함할 수 있다. 사용자는 소셜 네트워킹 시스템(160) 또는 소셜 네트워킹 시스템(160)과 별개이거나 네트워크(110)를 통해 소셜 네트워킹 시스템(160)에 결합되는 제3자 시스템(170)의 외부 시스템에서 표현될 수 있는 모든 것과 상호작용할 수 있다.
특정 실시예로, 소셜 네트워킹 시스템(160)은 다양한 엔티티를 링크할 수 있다. 예로서 제한 없이, 소셜 네트워킹 시스템(160)은 사용자가 서로 상호작용할 뿐 아니라 제3자 시스템(170)이나 다른 엔티티로부터 컨텐츠를 수신할 수 있게 하거나, 사용자가 응용 프로그래밍 인터페이스(API)나 다른 통신 채널을 통해 이런 엔티티와 상호작용할 수 있게 해줄 수 있다.
특정 실시예로, 제3자 시스템(170)은 하나 이상의 타입의 서버, 하나 이상의 데이터 스토어, API들을 포함하나 이에 국한되지 않는 하나 이상의 인터페이스, 하나 이상의 웹 서비스, 하나 이상의 컨텐츠 소스, 하나 이상의 네트워크 또는 예컨대 서버가 통신할 수 있는 임의의 다른 적절한 컴포넌트를 포함할 수 있다. 제3자 시스템(170)은 소셜 네트워킹 시스템(160)을 운영하는 엔티티와는 다른 엔티티에 의해 운영될 수 있다. 그러나, 특정 실시예로, 소셜 네트워킹 시스템(160) 및 제3자 시스템(170)은 소셜 네트워킹 서비스를 소셜 네트워킹 시스템(160)이나 제3자 시스템(170)의 사용자에게 제공하도록 서로 함께 동작할 수 있다. 이런 의미에서, 소셜 네트워킹 시스템(160)은 가령 제3자 시스템(170)과 같은 다른 시스템들이 인터넷상의 사용자들에게 소셜 네트워킹 서비스와 기능을 제공하도록 사용할 수 있는 플랫폼 또는 백본(backbone)을 제공할 수 있다.
특정 실시예로, 제3자 시스템(170)은 제3자 컨텐츠 객체 제공자를 포함할 수 있다. 제3자 컨텐츠 객체 제공자는 클라이언트 시스템(130)과 통신될 수 있는 하나 이상의 소스의 컨텐츠 객체를 포함할 수 있다. 예로서 제한 없이, 컨텐츠 객체는 가령 영화 쇼타임, 영화 리뷰, 레스토랑 리뷰, 레스토랑 메뉴, 제품 정보와 리뷰 또는 다른 적절한 정보와 같이 사용자가 관심 있는 사물이나 활동에 관한 정보를 포함할 수 있다. 또 다른 예로서 제한 없이, 컨텐츠 객체는 가령 쿠폰, 할인 티켓, 상품권 또는 다른 적절한 인센티브 객체와 같은 인센티브 컨텐츠 객체를 포함할 수 있다.
특정 실시예로, 소셜 네트워킹 시스템(160)은 또한 소셜 네트워킹 시스템(160)과 사용자의 상호작용을 향상시킬 수 있는 사용자-생성된 컨텐츠 객체를 포함한다. 사용자-생성된 컨텐츠는 사용자가 소셜 네트워킹 시스템(160)에 추가, 업로드, 송신 또는 "게시"할 수 있는 어떤 것을 포함할 수 있다. 예로서 제한 없이, 사용자는 클라이언트 시스템(130)으로부터 소셜 네트워킹 시스템(160)으로 게시물을 통신할 수 있다. 게시물은 가령 상태 업데이트나 다른 텍스트형 데이터와 같은 데이터, 위치 정보, 사진, 비디오, 링크, 음악 또는 다른 유사한 데이터나 매체를 포함할 수 있다. 또한, 컨텐츠는 가령 뉴스피드 또는 스트림과 같이 "통신 채널"을 통해 제3자에 의해 소셜 네트워킹 시스템(160)에 추가될 수 있다.
특정 실시예로, 소셜 네트워킹 시스템(160)은 다양한 서버, 서브-시스템, 프로그램, 모듈, 로그 및 데이터 스토어를 포함할 수 있다. 특정 실시예로, 소셜 네트워킹 시스템(160)은 다음의 하나 이상의: 웹 서버, 행위 로거, API 요청 서버, 관련성 및 순위화 엔진, 컨텐츠 객체 분류기, 알림 제어기, 행위 로그, 제3자 컨텐츠 객체 노출 로그, 추론 모듈, 인증/개인정보 서버, 검색 모듈, 광고 타겟팅 모듈, 사용자 인터페이스 모듈, 사용자 프로필 스토어, 연결 스토어, 제3자 컨텐츠 스토어 또는 위치 스토어를 포함할 수 있다. 또한, 소셜 네트워킹 시스템(160)은 가령 네트워크 인터페이스, 보안 메커니즘, 부하 균형기, 장애 서버, 관리 및 네트워크 운영 콘솔, 다른 적절한 컴포넌트 또는 이들의 임의의 적절한 조합과 같이 적절한 컴포넌트들을 포함할 수 있다. 특정 실시예로, 소셜 네트워킹 시스템(160)은 사용자 프로필을 저장하기 위한 하나 이상의 사용자 프로필 스토어를 포함할 수 있다. 사용자 프로필은 예컨대 인명정보, 인구학적 정보, 행동 정보, 소셜 정보 또는 가령 경력, 학력, 취미나 기호, 관심사, 친밀감, 위치와 같은 다른 유형의 설명적 정보를 포함할 수 있다. 관심사 정보는 하나 이상의 카테고리에 관한 관심사를 포함할 수 있다. 카테고리는 일반적이거나 구체적일 수 있다. 예로서 제한 없이, 사용자가 신발 브랜드에 관한 기사에 "좋아한다"면, 카테고리는 그 브랜드일 수 있거나 "신발" 또는 "옷"의 일반 카테고리일 수 있다. 연결 스토어는 사용자에 대한 연결 정보를 저장하는데 사용될 수 있다. 연결 정보는 유사하거나 공통의 경력, 그룹 맴버쉽, 취미, 학력을 가지거나 임의의 방식으로 관련되거나 공통 속성을 공유하는 사용자들을 표시할 수 있다. 또한, 연결 정보는 (내부와 외부 모두의) 다른 사용자들과 컨텐츠 사이의 사용자-정의된 연결들을 포함할 수 있다. 웹 서버는 네트워크(110)를 통해 하나 이상의 클라이언트 시스템(130)이나 하나 이상의 제3자 시스템(170)과 소셜 네트워킹 시스템(160)을 링크하는데 사용될 수 있다. 웹 서버는 소셜 네트워킹 시스템(160)과 하나 이상의 클라이언트 시스템(130) 사이에서 메시지를 수신하고 라우팅하기 위한 메일 서버나 다른 메시징 기능을 포함할 수 있다. API 요청 서버는 제3자 시스템(170)이 하나 이상의 API를 호출하여 소셜 네트워킹 시스템(160)으로부터의 정보에 접근할 수 있게 해줄 수 있다. 행위 로거는 소셜 네트워킹 시스템(160) 내부나 외부에서의 사용자의 행위에 대한 웹 서버로부터의 통신을 수신하는데 사용될 수 있다. 행위 로그와 함께, 제3자 컨텐츠 객체 로그에서는 제3자 컨텐츠 객체에 대한 사용자 노출이 관리될 수 있다. 알림 제어기는 컨텐츠 객체에 관한 정보를 클라이언트 시스템(130)에 제공할 수 있다. 정보는 알림으로서 클라이언트 시스템(130)으로 푸싱(pushed)될 수 있거나, 정보는 클라이언트 시스템(130)으로부터 수신된 요청에 응답하여 클라이언트 시스템(130)으로부터 풀링(pulled)될 수 있다. 인증 서버는 소셜 네트워킹 시스템(160)의 사용자의 하나 이상의 개인정보 설정을 강제하는데 사용될 수 있다. 사용자의 개인정보 설정은 사용자와 관련된 특정 정보가 어떻게 공유될 수 있는지를 결정한다. 인증 서버는 예컨대 적절한 개인정보 설정을 설정함으로써, 사용자의 행위를 소셜 네트워킹 시스템(160)에 의해 로그되게 하거나 다른 시스템(예컨대, 제3자 시스템(170))과 공유되게 하도록 사용자가 참여하거나 탈퇴할 수 있게 해줄 수 있다. 제3자 컨텐츠 객체 스토어는 가령 제3자 시스템(170)과 같은 제3자로부터 수신된 컨텐츠 객체를 저장하는데 사용될 수 있다. 위치 스토어는 사용자와 관련된 클라이언트 시스템(130)으로부터 수신된 위치 정보를 저장하는데 사용될 수 있다. 광고 가격결정 모듈은 소셜 정보, 현재시간, 위치 정보 또는 다른 적절한 정보를 결합하여 알림의 형태로 사용자에게 관련 광고를 제공할 수 있다.
소셜 그래프
도 2는 예시적인 소셜 그래프(200)를 도시한다. 특정 실시예로, 소셜 네트워킹 시스템(160)은 하나 이상의 데이터 스토어에 하나 이상의 소셜 그래프(200)를 저장할 수 있다. 특정 실시예로, 소셜 그래프(200)는 다수의 사용자 노드(202)나 다수의 컨셉 노드(204)를 포함할 수 있는 다수의 노드 및 노드를 연결하는 다수의 에지(206)를 포함할 수 있다. 도 2에 도시된 예시적인 소셜 그래프(200)는 훈시적 목적상 2차원 시각적 지도 표현으로 도시된다. 특정 실시예로, 소셜 네트워킹 시스템(160), 클라이언트 시스템(130) 또는 제3자 시스템(170)은 소셜 그래프(200) 및 적절한 애플리케이션에 대한 관련 소셜-그래프 정보에 접근할 수 있다. 소셜 그래프(200)의 노드 및 에지는 예컨대 데이터 스토어(가령, 소셜-그래프 데이터베이스)에 데이터 객체로서 저장될 수 있다. 이런 데이터 스토어는 소셜 그래프(200)의 노드 또는 에지의 하나 이상의 검색가능하거나 질의가능한 인덱스를 포함할 수 있다.
특정 실시예로, 사용자 노드(202)는 소셜 네트워킹 시스템(160)의 사용자에 해당할 수 있다. 예로서 제한 없이, 사용자는 개인(사람인 사용자), 엔티티(예컨대, 기업, 사업체 또는 제3자 애플리케이션) 또는 소셜 네트워킹 시스템(160)과 상호작용하거나 소셜 네트워킹 시스템에서 통신하는 (예컨대, 개인 또는 엔티티의) 그룹일 수 있다. 특정 실시예로, 사용자가 소셜 네트워킹 시스템(160)에서 계정을 등록하면, 소셜 네트워킹 시스템(160)은 사용자에 해당하는 사용자 노드(202)를 생성할 수 있고, 하나 이상의 데이터 스토어에 사용자 노드(202)를 저장할 수 있다. 적절한 경우, 본 명세서에 기술되는 사용자들 및 사용자 노드들(202)은 등록 사용자들 및 등록 사용자들과 관련된 사용자 노드들(202)을 말할 수 있다. 추가로 또는 대안으로, 본 명세서에 기술되는 사용자들 및 사용자 노드들(202)은 적절한 경우 소셜 네트워킹 시스템(160)에 등록되지 않은 사용자들을 말할 수 있다. 특정 실시예로, 사용자 노드(202)는 사용자가 제공한 정보 및 소셜 네트워킹 시스템(160)을 포함하는 다양한 시스템이 수집한 정보와 관련될 수 있다. 예로서 제한 없이, 사용자는 그들의 이름, 프로필 사진, 연락 정보, 생일, 성별, 혼인 여부, 가족 관계, 직장, 학력, 기호, 관심사 또는 다른 신상 정보를 제공할 수 있다. 특정 실시예로, 사용자 노드(202)는 사용자와 관련된 정보에 해당하는 하나 이상의 데이터 객체와 관련될 수 있다. 특정 실시예로, 사용자 노드(202)는 하나 이상의 웹페이지에 해당할 수 있다.
특정 실시예로, 컨셉 노드(204)는 컨셉에 해당할 수 있다. 예로서 제한 없이, 컨셉은 장소(가령, 예컨대, 영화관, 레스토랑, 명소 또는 도시); 웹사이트(가령, 예컨대, 소셜 네트워크 시스템(160)과 관련된 웹사이트 또는 웹-애플리케이션 서버와 관련된 제3자 웹사이트); 엔티티(가령, 예컨대, 사람, 사업체, 그룹, 스포츠 팀 또는 유명인사); 소셜 네트워킹 시스템(160) 또는 가령 웹-애플리케이션 서버와 같은 외부 서버에 위치할 수 있는 자원(가령, 예컨대, 오디오 파일, 비디오 파일, 디지털 사진, 텍스트 파일, 구조화된 문서 또는 애플리케이션); 물적 재산권 또는 지적 재산권(가령, 예컨대, 조각품, 미술품, 영화, 게임, 노래, 아이디어, 사진 또는 저서); 게임; 활동; 아이디어나 이론; 또 다른 적절한 컨셉; 또는 2 이상의 이런 컨셉들에 해당할 수 있다. 컨셉 노드(204)는 사용자에 의해 제공된 컨셉의 정보 또는 소셜 네트워킹 시스템(160)을 포함하는 다양한 시스템에 의해 수집된 정보와 관련될 수 있다. 예로서 제한 없이, 컨셉의 정보는 이름이나 제목; 하나 이상의 이미지(예컨대, 책의 커버 페이지의 이미지); 위치(예컨대, 주소 또는 지리적 위치); (URL과 관련될 수 있는) 웹사이트; 연락 정보(예컨대, 전화번호 또는 이메일 주소); 다른 적절한 컨셉 정보; 또는 이런 정보의 임의의 적절한 조합을 포함할 수 있다. 특정 실시예로, 각각의 컨셉 노드(204)는 컨셉 노드(204)와 관련된 정보에 해당하는 하나 이상의 데이터 객체와 관련될 수 있다. 특정 실시예로, 각각의 컨셉 노드(204)는 웹페이지에 해당할 수 있다.
특정 실시예로, 소셜 그래프(200)에서 노드는 ("프로필 페이지"라고 할 수 있는) 웹페이지를 표현하거나, 그 웹페이지로 표현될 수 있다. 프로필 페이지는 소셜 네트워킹 시스템(160)에 의해 호스트될 수 있거나, 접근될 수 있다. 또한, 프로필 페이지는 제3자 서버(170)와 관련된 제3자 웹사이트에 호스트될 수 있다. 예로서 제한 없이, 특정한 외부 웹페이지에 해당하는 프로필 페이지는 특정한 외부 웹페이지일 수 있고, 이런 프로필 페이지는 특정 컨셉 노드(204)에 해당할 수 있다. 프로필 페이지는 모든 또는 선택된 서브세트의 다른 사용자들에 의해 열람될 수 있다. 예로서 제한 없이, 사용자 노드(202)는 해당 사용자가 컨텐츠를 추가할 수 있고, 선언을 할 수 있으며, 그렇지 않으면 그들 자신을 표현할 수 있는 해당 사용자 프로필-페이지를 가질 수 있다. 또 다른 예로서 제한 없이, 컨셉 노드(204)는 특히 컨셉 노드(204)에 해당하는 컨셉과 관련하여 하나 이상의 사용자들이 컨텐츠를 추가할 수 있거나, 선언을 할 수 있거나, 그들 자신을 표현할 수 있는 해당 컨셉-프로필 페이지를 가질 수 있다.
특정 실시예로, 컨셉 노드(204)는 제3자 시스템(170)에 의해 호스팅된 제3자 웹페이지 또는 자원을 표현할 수 있다. 제3자 웹페이지 또는 자원은 다른 요소들 중에서 행위 또는 활동을 표현하는 (예컨대, JavaScript, AJAX 또는 PHP 코드로 구현될 수 있는) 컨텐츠, 선택가능하거나 다른 아이콘 또는 다른 상호작용가능한 객체를 포함할 수 있다. 예로서 제한 없이, 제3자 웹페이지는 가령 "좋아요", "체크인", "식사하기(eat)", "추천하기" 또는 다른 적절한 행위나 활동과 같은 선택가능한 아이콘을 포함할 수 있다. 제3자 웹페이지를 열람하는 사용자는 아이콘들 중 하나(예컨대, "식사하기")를 선택하여 행위를 수행할 수 있고, 클라이언트 시스템(130)이 사용자의 행위를 표시하는 메시지를 소셜 네트워킹 시스템(160)으로 송신하게 할 수 있다. 그 메시지에 응답하여, 소셜 네트워킹 시스템(160)은 사용자에 해당하는 사용자 노드(202)와 제3자 웹페이지 또는 자원에 해당하는 컨셉 노드(204) 사이의 에지(예컨대, "식사하기" 에지)를 생성할 수 있고, 하나 이상의 데이터 스토어에 에지(206)를 저장할 수 있다.
특정 실시예로, 소셜 그래프(200)에서 노드 쌍은 하나 이상의 에지(206)에 의해 서로 연결될 수 있다. 노드 쌍을 연결하는 에지(206)는 노드 쌍 사이의 관계를 표현할 수 있다. 특정 실시예로, 에지(206)는 노드 쌍 사이의 관계에 해당하는 하나 이상의 데이터 객체나 속성을 포함하거나 표현할 수 있다. 예로서 제한 없이, 제1 사용자는 제2 사용자가 제1 사용자의 "친구"라고 표시할 수 있다. 이런 표시에 응답하여, 소셜 네트워킹 시스템(160)은 "친구 요청"을 제2 사용자에게 송신할 수 있다. 제2 사용자가 "친구 요청"을 확인하면, 소셜 네트워킹 시스템(160)은 소셜 그래프(200)에서 제1 사용자의 사용자 노드(202)와 제2 사용자의 사용자 노드(202)를 연결하는 에지(206)를 생성할 수 있고, 하나 이상의 데이터 스토어(24)에 소셜-그래프 정보로서 에지(206)를 저장할 수 있다. 도 2의 예에서, 소셜 그래프(200)는 사용자 "A"와 사용자 "B"의 사용자 노드(202)들 사이의 친구 관계를 표시하는 에지(206)를 그리고 사용자 "C"와 사용자 "B"의 사용자 노드(202) 사이의 친구 관계를 표시하는 에지를 포함한다. 본 명세서가 특정 사용자 노드(202)를 연결하는 특정 속성을 가진 특정 에지(206)를 기술하거나 도시하지만, 본 명세서는 사용자 노드(202)를 연결하는 임의의 적절한 속성을 가진 임의의 적절한 에지(206)를 고려한다. 예로서 제한 없이, 에지(206)는 친구관계, 가족관계, 사업이나 고용 관계, 팬 관계, 팔로어 관계, 방문자 관계, 구독자 관계, 상위/하위 관계, 호혜 관계, 비-상호 관계, 또 다른 적절한 타입의 관계 또는 2 이상의 이런 관계들을 표현할 수 있다. 게다가, 본 명세서는 일반적으로 노드들이 연결되는 것을 기술하지만, 본 명세서는 또한 사용자 또는 컨셉이 연결되는 것을 기술한다. 본 명세서에서, 사용자 또는 컨셉이 연결되는 것에 대한 언급은 적절한 경우 이들 사용자 또는 컨셉에 해당하는 노드가 하나 이상의 에지(206)에 의해 소셜 그래프(200)에서 연결되는 것을 말할 수 있다.
특정 실시예로, 사용자 노드(202)와 컨셉 노드(204) 사이의 에지(206)는 컨셉 노드(204)와 관련된 컨셉에 대해 사용자 노드(202)의 사용자가 수행한 특정 행위 또는 활동을 표현할 수 있다. 예로서 제한 없이, 도 2에 도시된 바와 같이, 사용자는 컨셉을 "좋아요(like)", "참여했음(attended)", "실행했음(played)", "청취했음(listened)", "요리했음(cooked)", "근무했음(worked at)", 또는 "시청했음(watched)"을 할 수 있고, 이들 각각은 에지 타입이나 서브타입에 해당할 수 있다. 컨셉 노드(204)에 해당하는 컨셉-프로필 페이지는 예컨대 선택가능한 "체크인" 아이콘(가령, 예컨대, 클릭가능한 "체크인" 아이콘) 또는 선택가능한 "즐겨찾기에 추가(add to favorites)" 아이콘을 포함할 수 있다. 마찬가지로, 사용자가 이런 아이콘을 클릭한 후, 소셜 네트워킹 시스템(160)은 각각의 행위에 해당하는 사용자의 행위에 응답하여 "즐겨찾기" 에지 또는 "체크인" 에지를 생성할 수 있다. 또 다른 예로서 제한 없이, 사용자(사용자 "C")는 특정 애플리케이션(온라인 음악 애플리케이션인 SPOTIFY)을 사용하여 특정 노래("Imagine")를 들을 수 있다. 이 경우, 소셜 네트워킹 시스템(160)은 사용자에 해당하는 사용자 노드(202)와 노래 및 애플리케이션에 해당하는 컨셉 노드(204) 사이에 "청취했음(listened)" 에지(206) 및 "사용했음(used)" 에지(도 2에 도시)를 생성하여, 사용자가 그 노래를 들었고 그 애플리케이션을 사용했음을 표시할 수 있다. 게다가, 소셜 네트워킹 시스템(160)은 노래와 애플리케이션에 해당하는 컨셉 노드(204) 사이에서 "실행했음(played)" 에지(206)(도 2에 도시)를 생성하여 특정 노래가 특정 애플리케이션에 의해 실행되었음을 표시할 수 있다. 이 경우, "실행했음(played)" 에지(206)는 외부 오디오 파일(노래 "Imagine")에 대해 외부 애플리케이션(SPOTIFY)이 수행한 행위에 해당한다. 본 명세서는 사용자 노드(202)와 컨셉 노드(204)를 연결하는 특정 속성을 가진 에지(206)를 기술하지만, 본 명세서는 사용자 노드(202)와 컨셉 노드(204)를 연결하는 임의의 적절한 속성을 가진 임의의 적절한 에지(206)를 고려한다. 게다가, 본 명세서는 단일의 관계를 표현하는 사용자 노드(202)와 컨셉 노드(204) 사이의 에지를 기술하지만, 본 명세서는 하나 이상의 관계를 표현하는 사용자 노드(202)와 컨셉 노드(204) 사이의 에지를 고려한다. 예로서 제한 없이, 에지(206)는 사용자가 특정 컨셉에서 좋아요 하고 사용했음을 모두 표현할 수 있다. 대안으로, 또 다른 에지(206)는 사용자 노드(202)와 컨셉 노드(204) 사이(도 2에 도시된 바와 같이, 사용자 "E"에 대한 사용자 노드(202)와 "SPOTIFY"에 대한 컨셉 노드(204) 사이)의 각 타입의 관계(또는 다수의 단일 관계)를 표현할 수 있다.
특정 실시예로, 소셜 네트워킹 시스템(160)은 소셜 그래프(200)에서 사용자 노드(202)와 컨셉 노드(204) 사이의 에지(206)를 생성할 수 있다. 예로서 제한 없이, (가령, 예컨대, 사용자의 클라이언트 시스템(130)에 의해 호스팅되는 웹 브라우저 또는 특수목적 애플리케이션을 사용하여) 사용자가 컨셉-프로필 페이지를 열람하는 것은 사용자가 "좋아요" 아이콘을 클릭하거나 선택하여 컨셉 노드(204)가 표현한 컨셉을 좋아함을 나타낼 수 있는데, "좋아요" 아이콘은 사용자의 클라이언트 시스템(130)이 컨셉-프로필 페이지와 관련된 컨셉을 사용자가 좋아요 했다고 표시한 메시지를 소셜 네트워킹 시스템(160)으로 송신하게 할 수 있다. 그 메시지에 응답하여, 소셜 네트워킹 시스템(160)은 사용자와 컨셉 노드(204) 사이의 "좋아요" 에지(206)로 도시된 바와 같이 사용자와 관련된 사용자 노드(202)와 컨셉 노드(204) 사이의 에지(206)를 생성할 수 있다. 특정 실시예로, 소셜 네트워킹 시스템(160)은 하나 이상의 데이터 스토어에 에지(206)를 저장할 수 있다. 특정 실시예로, 에지(206)는 특정 사용자 행위에 응답하여 소셜 네트워킹 시스템(160)에 의해 자동 형성될 수 있다. 예로서 제한 없이, 제1 사용자가 사진을 업로드하거나, 영화를 시청하거나, 노래를 듣는다면, 에지(206)는 제1 사용자에 해당하는 사용자 노드(202)와 이런 컨셉에 해당하는 컨셉 노드(204) 사이에 형성될 수 있다. 본 명세서는 특정 방식으로 특정 에지(206)를 형성하는 것을 기술하지만, 본 명세서는 임의의 적절한 방식으로 임의의 적절한 에지(206)를 형성하는 것을 고려한다.
객체-타입 기반 인덱싱(Indexing Based on Object-type)
도 3은 소셜 네트워킹 시스템(160)의 객체를 저장하는 예시적인 파티셔닝을 도시한다. 복수의 데이터 스토어(164)(또한, "버티컬(verticals)"이라고도 할 수 있음)는 소셜 네트워킹 시스템(160)의 객체를 저장할 수 있다. 데이터 스토어에 저장되는 데이터(예컨대, 소셜 그래프(200)용 데이터)의 양은 대용량일 수 있다. 예로서 제한 없이, California Menlo Park의 Facebook, Inc.에 의해 사용되는 소셜 그래프는 대략 108 개의 노드 및 대략 1010 개의 에지를 가질 수 있다. 통상, 가령 대용량 데이터베이스와 같은 대용량의 데이터 집합은 다수의 파티션으로 분할될 수 있다. 데이터베이스의 각 파티션에 대한 인덱스는 총 데이터베이스에 대한 인덱스보다 더 작기 때문에, 파티셔닝(partitioning)은 데이터베이스의 액세스의 성능을 향상시킬 수 있다. 파티션은 다수의 서버에 분산될 수 있기 때문에, 파티셔닝은 또한 데이터베이스의 액세스의 성능 및 신뢰성을 향상시킬 수 있다. 흔히, 데이터베이스는 데이터베이스의 행(또는 열)을 별도로 저장함으로써 파티셔닝될 수 있다. 특정 실시예로, 데이터베이스는 객체-타입에 기반하여 파티셔닝될 수 있다. 데이터 객체는 하나의 객체-타입의 데이터 객체를 각각 보유하는 복수의 파티션에 저장될 수 있다. 특정 실시예로, 소셜 네트워킹 시스템(160)은 검색 질의의 예상 결과와 동일한 객체-타입의 객체들을 저장하는 특정 파티션으로 검색 질의를 제출함으로써 검색 질의에 응답하여 검색 결과를 검색할 수 있다. 비록 본 명세서는 특정 방식으로 객체를 저장하는 것을 기술하지만, 본 명세서는 임의의 적절한 방식으로 객체를 저장하는 것을 고려한다.
특정 실시예로, 각 객체는 소셜 그래프(200)의 특정 노드에 해당할 수 있다. 특정 노드와 다른 노드를 연결하는 에지(206)는 이들 노드에 해당하는 객체들 사이의 관계를 표시할 수 있다. 객체의 저장에 추가하여, 특정 데이터 스토어는 또한 객체에 관한 소셜 그래프 정보를 저장할 수 있다. 대안으로, 특정 객체에 대한 소셜 그래프 정보는 객체와 다른 데이터 스토어에 저장될 수 있다. 소셜 네트워킹 시스템(160)은 새롭게 수신된 객체에 기반한 데이터 스토어의 검색 인덱스 및 수신된 객체와 관련된 관계를 업데이트할 수 있다.
특정 실시예로, 각 데이터 스토어(164)는 각각의 데이터 저장장치(340)에서 복수의 객체-타입 중 특정한 하나의 객체를 저장하도록 구성될 수 있다. 객체 타입은 예컨대 사용자, 사진, 게시물, 코멘트, 메시지, 이벤트 목록, 웹페이지, 애플리케이션, 사용자-프로필 페이지, 컨셉-프로필 페이지, 사용자 그룹, 오디오 파일, 비디오, 오퍼/쿠폰 또는 다른 적절한 타입의 객체일 수 있다. 비록 본 명세서는 특정 타입의 객체를 기술하지만, 본 명세서는 임의의 적절한 타입의 객체를 고려한다. 예로서 제한 없이, 도 3에 도시된 사용자 버티컬(P1)은 사용자 객체를 저장할 수 있다. 사용자 버티컬(P1)에 저장된 각각의 사용자 객체는 온라인 소셜 네트워크의 식별자(예컨대, 문자열), 사용자 이름 및 프로필 사진을 포함할 수 있다. 또한, 소셜 네트워킹 시스템(160)은 가령 언어, 위치, 교육, 연락처, 관심사, 관계 상태, 친구/컨택 목록, 가족관계 목록, 개인정보 설정 등과 같이 사용자 객체와 관련된 정보를 사용자 버티컬(P1)에 저장할 수 있다. 예로서 제한 없이, 도 3에 도시된 게시물 버티컬(P2)은 게시물 객체를 저장할 수 있다. 게시물 버티컬(P2)에 저장된 각각의 게시물 객체는 소셜 네트워킹 시스템(160)에 게시된 게시물에 대한 식별자, 문자열을 포함할 수 있다. 또한, 소셜 네트워킹 시스템(160)은 가령 시간 스탬프, 작성자, 개인정보 설정, 게시물을 좋아하는 사용자, 좋아요의 총수, 코멘트, 코멘트의 총수, 위치 등과 같이 게시물 객체와 관련된 정보를 게시물 버티컬(P2)에 저장할 수 있다. 예로서 제한 없이, 사진 버티컬(P3)은 사진 객체(또는 비디오나 오디오와 같은 다른 미디어 타입의 객체)를 저장할 수 있다. 사진 버티컬(P3)에 저장된 각각의 사진 객체는 식별자 및 사진을 포함할 수 있다. 또한, 소셜 네트워킹 시스템(160)은 가령 시간 스탬프, 작성자, 개인정보 설정, 사진에 태그되는 사용자, 사진을 좋아하는 사용자, 코멘트 등과 같이 사진 객체와 관련된 정보를 사진 버티컬(P3)에 저장할 수 있다. 특정 실시예로, 각 데이터 스토어는 또한 데이터 저장장치(340)에 각각 저장된 객체와 관련된 정보를 저장하도록 구성될 수 있다.
특정 실시예로, 각 버티컬(164)에 저장되는 객체는 하나 이상의 검색 인덱스에 의해 인덱싱될 수 있다. 검색 인덱스는 하나 이상의 컴퓨팅 장치(예컨대, 서버)를 포함하는 각각의 인덱스 서버(330)에 의해 호스트될 수 있다. 인덱스 서버(330)는 사용자에 의해 소셜 네트워킹 시스템(160) 또는 소셜 네트워킹 시스템(160)(또는 제3자 시스템)의 다른 프로세스로 제출되는 데이터(예컨대, 사진 및 사진에 관한 정보)에 기초하여 검색 인덱스를 업데이트할 수 있다. 또한, 인덱스 서버(330)는 주기적으로(예컨대, 24시간마다) 검색 인덱스를 업데이트할 수 있다. 인덱스 서버(330)는 검색 용어를 포함하는 질의를 수신할 수 있고, 검색 용어에 해당하는 하나 이상의 검색 인덱스로부터 검색 결과에 액세스하고 검색할 수 있다. 일부의 실시예로, 특정 객체 타입에 해당하는 버티컬은 각각의 검색 인덱스를 각각 포함하는 복수의 물리적 또는 논리적 파티션을 포함할 수 있다.
특정 실시예로, 소셜 네트워킹 시스템(160)은 PHP(Hypertext Preprocessor) 프로세스(310)로부터 검색 질의를 수신할 수 있다. PHP 프로세스(310)는 소셜 네트워킹 시스템(160)의 하나 이상의 서버(162)에 의해 호스트되는 하나 이상의 컴퓨팅 프로세스를 포함할 수 있다. 검색 질의는 소셜 네트워킹 시스템(160)(또는 제3자 시스템(170))의 사용자 또는 다른 프로세스에 의해 PHP 프로세스로 제출되는 텍스트 열 또는 구조화된 질의일 수 있다.
인덱스 및 검색 질의에 대한 더 많은 정보는 참조로 각각 통합되는 2012년 7월 27일자로 출원된 미국특허출원 제13/560212호, 2012년 7월 27일자로 출원된 미국특허출원 제13/560901호 및 2012년 12월 21일자로 출원된 미국특허출원 제13/723861호에서 확인할 수 있다.
타이프어헤드 프로세스( Typeahead Processes)
특정 실시예로, 하나 이상의 클라이언트-측 및/또는 백엔드(서버-측) 프로세스는 가령 소셜 네트워킹 시스템(160)에 의해 호스팅되거나 접근가능할 수 있는 (예컨대, 사용자-프로필 페이지, 컨셉-프로필 페이지, 검색-결과 웹페이지 또는 온라인 소셜 네트워크의 다른 적절한 페이지와 같은) 요청된 웹페이지와 함께 렌더링되는 입력 서식에 사용자가 현재 입력한 정보에 소셜 그래프 요소(예컨대, 사용자 노드(202), 컨셉 노드(204) 또는 에지(206))를 자동으로 매치하고자 하는 "타이프어헤드(typeahead)" 기능을 구현하고 이용할 수 있다. 특정 실시예로, 사용자가 선언문을 만들도록 텍스트를 입력중일 때, 타이프어헤드 기능은 선언문에 입력되는 텍스트 문자열을 소셜 그래프(200) 내 사용자, 컨셉, 에지 및 그에 해당하는 요소들에 해당하는 문자열(예컨대, 이름, 설명)을 매치하고자 한다. 특정 실시예로, 매치가 발견되는 경우, 타이프어헤드 기능은 기존의 소셜 그래프 요소의 소셜 그래프 요소에 대한 레퍼런스(가령, 예컨대, 노드 명/타입, 노드 ID, 에지 명/타입, 에지 ID 또는 다른 적절한 레퍼런스나 식별자)로 서식을 자동으로 채울 수 있다.
특정 실시예로, 사용자가 사용자의 프로필 페이지, 홈페이지 또는 다른 페이지의 다양한 섹션에 컨텐츠를 추가하거나 선언을 하는데 사용되는 서식으로 텍스트를 타이핑하거나 입력할 때, 타이프어헤드 프로세서는 (예컨대, 서버(162) 내) 소셜 네트워킹 시스템(160)에서(또는 내에서) 실행하는 하나 이상의 프런트엔드(frontend)(클라이언트-측) 및/또는 백엔트(서버-측) 타이프어헤드 프로세스(이하, 간단히 "타이프어헤드 프로세스"라고 함)와 함께 작동하여, 사용자의 텍스트 문자 입력시 사용자가 입력한 텍스트 문자와 가장 관련되거나 최상으로 매치한다고 결정되는 기존 소셜-그래프 요소의 이름에 해당하는 용어나 용어들 또는 기존 소셜-그래프 요소와 관련된 용어들로 서식을 자동-채움(auto-populate)하려고 상호작용하여 거의 즉각적으로 (사용자에게 나타난 대로) 시도할 수 있다. 소셜-그래프 데이터베이스 내 소셜-그래프 정보 또는 노드 및 에지와 관련된 정보를 포함하는 소셜-그래프 데이터베이스로부터 추출되고 인덱싱된 정보를 이용하면, 소셜-그래프 데이터베이스로부터의 정보와 함께 그리고 잠재적으로 소셜 네트워킹 시스템(160)에 위치하거나 그 내에서 실행하는 다양한 다른 프로세스, 애플리케이션 또는 데이터베이스와 함께 타이프어헤드 프로세스는 높은 정확도로 사용자의 의도된 선언을 예측할 수 있다. 그러나, 소셜 네트워킹 시스템(160)은 또한 사용자들이 그들 자신을 자유롭게 표현할 수 있게 하기를 그들이 원하는 본래 임의의 선언을 입력하는 자유를 사용자에게 제공할 수 있다.
특정 실시예로, 사용자가 텍스트 문자를 서식 박스 또는 다른 필드로 입력할 때, 타이프어헤드 프로세스는 사용자의 문자의 입력시 사용자의 선언에 입력된 문자열에 매치하는 기존 소셜-그래프 요소들(예컨대, 사용자 노드(202), 컨셉 노드(204) 또는 에지(206))을 식별하고자 할 수 있다. 특정 실시예로, 사용자가 문자를 서식 박스로 입력할 때, 타이프어헤드 프로세스는 입력된 텍스트 문자열을 판독할 수 있다. 각각의 키 누름(keystroke)이 이루어질 때, 프런트엔트-타이프어헤드 프로세스는 요청(또는 호출)으로서 입력된 문자열을 소셜 네트워킹 시스템(160) 내에서 실행하는 백엔드-타이프어헤드 프로세스로 송신할 수 있다. 특정 실시예로, 타이프어헤드 프로세스는 AJAX(비동기식 JavaScript 및 XML) 또는 다른 적절한 기술 및 특히 비동기식 기술을 통해 통신할 수 있다. 특정 실시예로, 요청은 결과의 신속한 동적인 송신 및 페치(fetching)를 가능하게 하는 XMLHTTPRequest (XHR)이거나 이를 포함할 수 있다. 특정 실시예로, 타이프어헤드 프로세스는 또한 사용자가 선언을 작성하고 있는 특정 페이지의 특정 섹션을 식별하는 섹션 식별자(section ID)를 그 요청 전에, 그 요청 후에 또는 그 요청과 함께 송신한다. 특정 실시예로, 사용자 ID 파라미터가 또한 송신될 수 있거나, 일부의 실시예로 사용자가 소셜 네트워킹 시스템(160)으로 로그인했음(또는 인증되었음)을 기초로 이미 "공지"되어 있다면 불필요할 수 있다.
특정 실시예로, 타이프어헤드 프로세스는 하나 이상의 매칭 알고리즘을 사용하여 매칭 소셜-그래프 요소를 식별하고자 할 수 있다. 특정 실시예로, 매치이나 매치들이 발견되는 경우, 타이프어헤드 프로세스는 예컨대 매칭 소셜-그래프 요소의 이름(이름 문자열) 또는 설명뿐 아니라 잠재적으로 매칭 소셜-그래프 요소와 관련된 다른 메타데이터를 포함할 수 있는 (AJAX 또는 다른 적절한 기술을 이용할 수 있는) 응답을 사용자의 클라이언트 장치로 송신할 수 있다. 예로서 제한 없이, 사용자가 문자 "pok"를 질의 필드로 입력하면, 타이프어헤드 프로세스는 매치하는 기존 프로필 페이지 및 각각의 사용자 노드(202)나 컨셉 노드(204)(예컨대, "poker" 또는 "pokemon"으로 이름지어지거나 그 전용의 프로필 페이지)의 이름을 디스플레이하는 드롭-다운 메뉴를 디스플레이하며, 사용자가 이후 클릭하거나 선택함으로써 선택된 노드에 해당하는 매칭된 사용자나 컨셉 이름을 선언하는 요구를 확인할 수 있다. 또 다른 예로서 제한 없이, "poker"의 클릭시, 타이프어헤드 프로세스는 자동-채움하거나, 웹 브라우저(132)가 질의 필드를 선언 "poker"로 자동-채움할 수 있게 한다. 특정 실시예로, 타이프어헤드 프로세스는 드롭-다운 메뉴를 디스플레이하기보다는 상위-순위화된 매치의 이름이나 다른 식별자로 필드를 간단히 자동-채움할 수 있다. 이후, 사용자는 간단히 그들의 키보드에 "enter"를 키 입력하거나 자동-채움 선언을 클릭하여 자동-채움 선언을 확인할 수 있다.
타이프어헤드 프로세스에 대한 더 많은 정보는 참조로 각각 통합되는 2010년 4월 19일자로 출원된 미국특허출원 제12/763162호 및 2012년 7월 23일자로 출원된 미국특허출원 제13/556072호에서 확인할 수 있다.
구조화된 검색 질의
도 4는 온라인 소셜 네트워크의 예시적인 웹페이지를 도시한다. 특정 실시예로, 사용자는 텍스트를 질의 필드(450)로 입력하여 소셜 네트워킹 시스템(160)에 질의를 제출할 수 있다. 온라인 소셜 네트워크의 사용자는 흔히 "검색 질의(search query)"라고 일컬어지는 주제를 설명하는 짧은 문구를 검색 엔진에 제공함으로써 특정 주제에 관한 정보(예컨대, 사용자, 컨셉, 외부 컨텐츠 또는 리소스)를 검색할 수 있다. 질의는 비구조화된 텍스트 질의일 수 있고 (하나 이상의 n-그램을 포함할 수 있는) 하나 이상의 텍스트 열을 포함할 수 있다. 통상, 사용자는 텍스트 질의에 매치하는 소셜 네트워킹 시스템(160)의 컨텐츠를 검색하도록 임의의 문자열을 질의 필드(450)로 입력할 수 있다. 이후, 소셜 네트워킹 시스템(160)은 질의에 매치하는 컨텐츠를 식별하도록 데이터 스토어(164)(또는, 특히 소셜 그래프 데이터베이스)를 검색할 수 있다. 검색 엔진은 다양한 검색 알고리즘을 사용하여 질의 문구에 기반한 검색을 실행하고 검색 질의에 관련될 가능성이 가장 높은 리소스 또는 컨텐츠(예컨대, 사용자-프로필 페이지, 컨텐츠-프로필 페이지 또는 외부 리소스)을 식별하는 검색 결과를 생성할 수 있다. 검색을 실행하기 위해, 사용자는 검색 질의를 입력하거나 검색 질의으로 송신할 수 있다. 응답으로, 검색 엔진은 개별적으로 "검색 결과"라고 할 수 있거나 포괄적으로 검색 질의에 대응하는 "검색 결과들"이라고 할 수 있는 검색 질의와 관련될 가능성이 있는 하나 이상의 리소스를 식별할 수 있다. 식별된 컨텐츠는 예컨대 소셜 그래프 요소(즉, 사용자 노드(202), 컨셉 노드(204), 에지(206)), 프로필 페이지, 외부 웹페이지 또는 이들의 임의의 조합을 포함할 수 있다. 소셜 네트워킹 시스템(160)은 이후 식별된 컨텐츠에 대응하는 검색 결과를 가진 검색-결과 웹페이지를 생성할 수 있고 그 검색-결과 페이지를 사용자에게 송신할 수 있다. 특정 실시예로, 검색 엔진은 그 검색을 온라인 소셜 네트워크의 리소스 및 컨텐츠로 제한할 수 있다. 그러나, 특정 실시예로, 검색 엔진은 가령 제3자 시스템(170), 인터넷이나 월드 와이드 웹 또는 다른 적절한 소스와 같은 다른 소스들의 리소스 및 컨텐츠를 또한 검색할 수 있다. 비록 본 명세서는 특정 방식으로 소셜 네트워킹 시스템(160)에 질의하는 것을 기술하지만, 본 명세서는 임의의 적절한 방식으로 소셜 네트워킹 시스템(160)에 질의하는 것을 고려한다.
특정 실시예로, 본 명세서에 기술된 타이프어헤드 프로세스가 사용자에 의해 입력된 검색 질의에 적용될 수 있다. 예로서 제한 없이, 사용자가 텍스트 문자를 질의 필드(450)에 입력하면, 타이프어헤드 프로세스는 사용자의 문자 입력시 질의 필드(450)에 입력된 문자열에 매치하는 하나 이상의 사용자 노드(202), 컨셉 노드(204) 또는 에지(206)를 식별하고자 할 수 있다. 타이프어헤드 프로세스가 텍스트 질의로부터 문자열 또는 n-그램을 포함하는 요청 또는 호출을 수신하면, 타이프어헤드 프로세스는 입력된 텍스트에 매치하는 각각의 이름, 타입, 카테고리 또는 다른 식별자를 가진 기존의 소셜-그래프 요소(즉, 사용자 노드(202), 컨셉 노드(204), 에지(206))를 식별하는 검색을 수행하거나 수행되게 할 수 있다. 타이프어헤드 프로세스는 하나 이상의 매칭 알고리즘을 사용하여 매칭 노드 또는 에지를 식별하려고 시도할 수 있다. 매치 또는 매치들이 발견되는 경우, 타이프어헤드 프로세스는 예컨대 매칭 노드의 이름(이름 문자열)뿐 아니라 잠재적으로 매칭 노드와 관련된 다른 메타데이터를 포함할 수 있는 응답을 사용자의 클라이언트 시스템(130)으로 송신할 수 있다. 타이프어헤드 프로세스는 이후 각각의 사용자 노드(202)나 컨셉 노드(204)의 매칭하는 프로필 페이지(예컨대, 페이지와 관련된 이름 또는 사진)에 대한 레퍼런스를 디스플레이하고 매칭하는 사용자 노드(202) 또는 컨셉 노드(204)와 연결할 수 있는 매칭 에지(206)의 이름을 디스플레이하는 드롭-다운 메뉴(400)를 디스플레이할 수 있으며, 이후 사용자는 이를 클릭하거나 선택함으로써 선택된 노드에 해당하는 매칭된 사용자나 컨셉 이름을 검색하거나 매칭 에지로 매칭된 사용자나 컨셉과 연결되는 사용자나 컨셉을 검색하려는 요구를 확인할 수 있다. 대안으로, 타이프어헤드 프로세스는 드롭-다운 메뉴(400)를 디스플레이하는 대신에 간단히 최상위의 매치의 이름이나 다른 식별자로 서식을 자동으로 채울 수 있다. 이후, 사용자는 간단히 그들의 키보드에서 "enter"를 치거나 자동-채움 선언을 클릭함으로써 자동-채움 선언을 확인할 수 있다. 매칭 노드 및/또는 에지의 사용자 확인시, 타이프어헤드 프로세스는 매칭 소셜-그래프 요소를 포함하는 질의의 사용자 확인을 소셜 네트워킹 시스템(160)에 알리는 요청을 송신할 수 있다. 송신된 요청에 응답하여, 소셜 네트워킹 시스템(160)은 매칭 소셜-그래프 요소 또는 적절한 경우 매칭 소셜-그래프 요소에 연결된 소셜-그래프 요소를 소셜-그래프 데이터베이스에서 자동으로(또는 요청 내 지시를 기초로 교대로) 호출하거나 검색할 수 있다. 본 명세서는 특정한 방식으로 검색 질의에 타이프어헤드 프로세스를 적용하는 것을 기술하지만, 본 명세서는 임의의 적절한 방식으로 검색 질의에 타이프어헤드 프로세스를 적용하는 것을 고려한다.
검색 질의 및 검색 결과와 관련하여, 특정 실시예들은 참조로 각각 통합되는: 2006년 8월 11일자로 출원된 미국특허출원 제11/503093호, 2010년 12월 22일자로 출원된 미국특허출원 제12/977027호 및 2010년 12월 23일자로 출원된 미국특허출원 제12/978265호에 개시되는 하나 이상의 시스템, 컴포넌트, 구성요소, 기능, 방법, 동작 또는 단계를 이용할 수 있다.
요소 검출 및 검색 질의의 파싱
도 5a-5d는 온라인 소셜 네트워크의 예시적인 질의를 도시한다. 특정 실시예로, 소셜 네트워킹 시스템(160)은 제1 사용자(즉, 질의중인 사용자)로부터 수신된 텍스트 질의에 응답하여 텍스트 질의를 파싱할 수 있고 특정 소셜 그래프 요소에 대응하는 텍스트 질의의 일부를 식별할 수 있다. 소셜 네트워킹 시스템(160)은 한 세트의 구조화된 질의를 생성할 수 있고, 이때 각각의 구조화된 질의는 가능한 매치하는 소셜 그래프 요소 중 하나에 대응한다. 이런 구조화된 질의는 문법 모델에 의해 생성되는 문자열에 기반할 수 있으므로, 이들은 관련 소셜 그래프 요소에 대한 레퍼런스를 가진 자연어 구문법(natural-language syntax)으로 렌더링된다. 이런 구조화된 질의는 질의중인 사용자에게 제시될 수 있는데, 질의중인 사용자는 이후 선택된 구조화된 질의가 소셜 네트워킹 시스템(160)에 의해 실행되어야 함을 표시하도록 구조화된 질의 중에서 선택할 수 있다. 도 5a-5d는 (다른 적절한 그래픽 사용자 인터페이스가 가능하더라도) 질의 필드(450) 내 다양한 예시적인 텍스트 질의 및 드롭-다운 메뉴(400)에 응답하여 생성된 다양한 구조화된 질의를 도시한다. 사용자의 텍스트 질의에 응답하여 제안되는 구조화된 질의를 제공함으로써, 소셜 네트워킹 시스템(160)은 소셜-그래프 속성과 다양한 소셜-그래프 요소와의 관계를 기초로 소셜 그래프(200)에 표현되는 요소들을 검색하도록 온라인 소셜 네트워크의 사용자들에게 매우 효과적인 방법을 제공할 수 있다. 구조화된 질의는 질의중인 사용자가 특정 에지 타입으로 소셜 그래프(200)에서 특정 사용자나 컨셉과 연결되는 컨텐츠를 검색하게 해줄 수 있다. 구조화된 질의는 제1 사용자에게 송신될 수 있고 드롭-다운 메뉴(400)에 (예컨대, 클라이언트-측 타이프어헤드 프로세스를 통해) 디스플레이될 수 있는데, 여기서 제1 사용자는 이후 소정의 컨텐츠를 검색하도록 적절한 질의를 선택할 수 있다. 본 명세서에 기술되는 구조화된 질의를 사용하는 것의 이점들 중 일부는 제한된 정보를 기초로 온라인 소셜 네트워크의 사용자를 찾는 것, 다양한 소셜-그래프 요소와 컨텐츠의 관계를 기초로 온라인 소셜 네트워크로부터 그 컨텐츠의 가상 인덱스를 함께 가져오는 것 또는 당신 및/또는 당신의 친구에 관한 정보를 찾는 것을 포함한다. 본 명세서는 특정 방식으로 특정 구조화된 질의를 생성하는 것을 기술하고 도 5a-5d가 도시하지만, 본 명세서는 임의의 적절한 방식으로 임의의 적절한 구조화된 질의를 생성하는 것을 고려한다.
특정 실시예로, 소셜 네트워킹 시스템(160)은 (제1 사용자 노드(202)에 해당하는) 질의중인/제1 사용자로부터 비구조화된 텍스트 질의를 수신할 수 있다. 예로서 제한 없이, 제1 사용자는: (1) 제1 사용자의 1촌 친구(first-degree friends)이고; (2) Stanford University와 관련되는(즉, 사용자 노드(202)는 학교 "Stanford"에 해당하는 컨셉 노드(204)와 에지(206)에 의해 연결됨), 다른 사용자들을 검색하고자 할 수 있다. 이후, 제1 사용자는 도 5a-5d에 도시된 바와 같이 텍스트 질의 "friends stanford"를 질의 필드(450)에 입력할 수 있다. 질의중인 사용자가 이런 텍스트 질의를 질의 필드(450)에 입력하면, 소셜 네트워킹 시스템(160)은 드롭-다운 메뉴(400)에 도시된 바와 같이 제안되는 다양한 구조화된 질의를 제공할 수 있다. 본 명세서에서 사용되는 바와 같이, 비구조화된 텍스트 질의는 사용자가 입력한 단순 텍스트열이라고 한다. 물론, 텍스트 질의는 표준 언어/문법 규칙(예컨대, 영문법)에 대하여 구조화될 수 있다. 그러나, 텍스트 질의는 대체로 소셜-그래프 요소에 대하여 구조화되어 있지 않을 것이다. 즉, 단순 텍스트 질의는 대체로 특정 소셜-그래프 요소에 대한 임베디드 레퍼런스(embedded references)를 포함하지 않을 것이다. 따라서, 본 명세서에서 사용되는 바와 같이, 구조화된 질의는 특정 소셜-그래프 요소에 대한 레퍼런스를 포함하는 질의를 말하며, 검색 엔진이 식별된 요소를 기초로 검색할 수 있게 해준다. 게다가, 텍스트 질의는 형식 질의 구문법(formal query syntax)에 대하여 비구조화되어 있을 수 있다. 즉, 단순 텍스트 질의는 반드시 검색 엔진에 의해 바로 실행가능한 질의 명령의 포맷일 필요는 없다(예컨대, 텍스트 질의 "friends stanford"는 소셜 그래프 데이터베이스에서 질의로 실행될 수 있는 질의 명령 "intersect(school(Stanford University), friends(me)"를 형성하도록 파싱될 수 있다). 비록 본 명세서는 특정 방식으로 특정 질의를 수신하는 것을 기술하지만, 본 명세서는 임의의 적절한 방식으로 임의의 적절한 질의를 수신하는 것을 고려한다.
특정 실시예로, 소셜 네트워킹 시스템(160)은 하나 이상의 n-그램을 식별하도록 제1 사용자(즉, 질의중인 사용자)로부터 수신된 비구조화된 텍스트 질의(또한, 간단히 검색 질의라고도 함)를 파싱할 수 있다. 통상, n-그램은 소정의 시퀀스의 텍스트 또는 진술에서 인접 시퀀스의 n개 아이템들이다. 아이템은 텍스트 또는 진술의 시퀀스에서의 글자(characters), 음소(phonemes), 음절(syllables), 문자(letters), 단어(words), 기본 쌍(base pairs), 접두사(prefixes) 또는 다른 식별가능한 아이템일 수 있다. n-그램은 질의중인 사용자가 입력한 하나 이상의 텍스트 문자(글자, 숫자, 구두점 등)를 포함할 수 있다. 크기 1의 n-그램은 "유니그램(unigram)"이라 할 수 있고, 크기 2의 n-그램은 "바이그램(bigram)" 또는 "다이그램(digram)"이라 할 수 있으며, 크기 3의 n-그램은 "트라이그램(trigram)"이라 할 수 있는 등이다. 각각의 n-그램은 질의중인 사용자로부터 수신된 텍스트 질의로부터 하나 이상의 부분을 포함할 수 있다. 특정 실시예로, 각각의 n-그램은 제1 사용자가 입력한 문자열(예컨대, 하나 이상의 텍스트 문자)을 포함할 수 있다. 예로서 제한 없이, 소셜 네트워킹 시스템(160)은 다음의 n-그램을 식별하도록 텍스트 질의 "friends stanford"를 파싱할 수 있다: friends; stanford; friends stanford. 또 다른 예로서 제한 없이, 소셜 네트워킹 시스템(160)은 다음의 n-그램을 식별하도록 텍스트 질의 "friends in palo alto"를 파싱할 수 있다: friends; in; palo; alto; friends in; in palo; palo alto; friend in palo; in palo also; friends in palo alto. 특정 실시예로, 각각의 n-그램은 텍스트 질의로부터 인접 시퀀스의 n개 아이템을 포함할 수 있다. 비록 본 명세서는 특정 방식으로 특정 질의를 파싱하는 것을 기술하지만, 본 명세서는 임의의 적절한 방식으로 임의의 적절한 질의를 파싱하는 것을 고려한다.
요소 검출 및 검색 질의의 파싱과 관련하여, 특정 실시예들은 참조로 각각 통합되는: 2012년 7월 23일자로 출원된 미국특허출원 제13/556072호 및 2012년 12월 31일자로 출원된 미국특허출원 제13/732101호에 개시되는 하나 이상의 시스템, 컴포넌트, 구성요소, 기능, 방법, 동작 또는 단계를 이용할 수 있다.
구조화된 검색 질의의 생성
특정 실시예로, 소셜 네트워킹 시스템(160)은 복수의 문법을 포함하는 문맥-무관(context-free) 문법 모델에 접근할 수 있다. 문법 모델의 각각의 문법은 하나 이상의 비-종단 토큰(또는 "비-종단 기호") 및 하나 이상의 종단 토큰(또는 "종단 기호"/"질의 토큰")을 포함할 수 있는데, 이때 특정한 비-종단 토큰은 종단 토큰에 의해 대체될 수 있다. 문법 모델은 형식 언어(formal language)에서 문자열에 대한 한 세트의 형성 규칙(formation rules)이다. 비록 본 명세서는 특정 문법에 접근하는 것을 기술하지만, 본 명세서는 임의의 적절한 문법을 고려한다.
특정 실시예로, 소셜 네트워킹 시스템(160)은 하나 이상의 문법을 사용하여 하나 이상의 문자열을 생성할 수 있다. 언어로 문자열을 생성하기 위해, 사람은 단지 하나의 시작 기호로 구성되는 문자열로 시작한다. 이후, 시작 기호나 지정된 비-종단 기호를 포함하지 않는 문자열이 생성될 때까지 생성 규칙은 임의의 순서로 적용된다. 문맥-무관 문법에서, 문법의 각각의 비-종단 기호의 생성은 문법의 다른 비-종단 기호에 의해 생성되는 것과 무관하다. 비-종단 기호는 종단 기호(즉, 종단 토큰 또는 질의 토큰)로 대체될 수 있다. 질의 토큰의 일부는 상술한 바와 같이 식별된 노드 또는 식별된 에지에 해당할 수 있다. 이후, 문법에 의해 생성된 문자열은 식별된 노드 또는 식별된 에지에 대한 레퍼런스를 포함하는 구조화된 질의에 대한 기초로 사용될 수 있다. 문법에 의해 생성된 문자열은 자연어 구문법으로 렌더링될 수 있어서, 그 문자열에 기반한 구조화된 질의도 또한 자연어로 렌더링된다. 문맥-무관 문법은 각각의 생성 규칙의 좌측 편이 단지 하나의 비-종단 기호로 구성되는 문법이다. 확률적 문맥-무관 문법은 투플
Figure 112016101856710-pat00001
이며, 여기서 분리집합(disjoint sets)
Figure 112016101856710-pat00002
Figure 112016101856710-pat00003
Figure 112016101856710-pat00004
에서 시작 기호인 종단 기호 및 비-종단 기호를 각각 명시한다.
Figure 112016101856710-pat00005
Figure 112016101856710-pat00006
,
Figure 112016101856710-pat00007
가 문자열
Figure 112016101856710-pat00009
로 확장될 확률인
Figure 112016101856710-pat00010
에서
Figure 112016101856710-pat00011
의 형태를 취하는 생성 집합이다. 소정의 비-종단 E의 모든 확장에 대한 확률 p의 합은 1이어야 한다. 비록 본 명세서는 특정 방식으로 문자열을 생성하는 것을 기술하지만, 본 명세서는 임의의 방식으로 문자열을 생성하는 것을 고려한다.
특정 실시예로, 소셜 네트워킹 시스템(160)은 하나 이상의 구조화된 질의를 생성할 수 있다. 구조화된 질의는 상술한 바와 같이 하나 이상의 문법에 의해 생성된 자연어 문자열을 기초로 할 수 있다. 각각의 구조화된 질의는 하나 이상의 식별된 노드 또는 하나 이상의 식별된 에지(206)에 대한 레퍼런스를 포함할 수 있다. 이런 타입의 구조화된 질의는 소셜 네트워킹 시스템(160)이 식별된 사용자 노드(202) 및 식별된 에지(206)와 연결되거나 관련된 컨텐츠를 검색함으로써 온라인 소셜 네트워크(가령, 예컨대, 프로필 페이지)에 관한 리소스 및 컨텐츠를 더 효율적으로 검색할 수 있게 해줄 수 있다. 예로서 제한 없이, 텍스트 질의 "show me friends of my girlfriend"에 응답하여, 소셜 네트워킹 시스템(160)은 구조화된 질의 "Friends of Stephanie"를 생성할 수 있고, 여기서 구조화된 질의의 "Friends" 및 "Stephanie"는 특정 소셜-그래프 요소에 해당하는 레퍼런스이다. "Stephanie"에 대한 레퍼런스는 특정 사용자 노드(202)에 해당하는 한편(이때, 소셜 네트워킹 시스템(160)은 사용자 "Stephanie"에 대한 사용자 노드(202)에 대응하도록 n-그램 "my girlfriend"를 파싱했음), "Friends"에 대한 레퍼런스는 그 사용자 노드(202)를 다른 사용자 노드(202)와 연결하는 "친구"-타입 에지(206)(즉, "Stephanie"의 1촌 친구와 연결하는 에지(206))에 해당한다. 구조화된 질의를 실행할 때, 소셜 네트워킹 시스템(160)은 "Stephanie"에 해당하는 사용자 노드(202)와 "친구"-타입 에지(206)로 연결되는 하나 이상의 사용자 노드(202)를 식별할 수 있다. 또 다른 예로서 제한 없이, 텍스트 질의 "friends who like facebook"에 응답하여, 소셜 네트워킹 시스템(160)은 구조화된 질의 "Friends who like Facebook"를 생성할 수 있으며, 구조화된 질의 내 "Friends", "like" 및 "Facebook"은 상술한 바와 같이 특정 소셜-그래프 요소(즉, "friend"-타입 에지(206), "like"-타입 에지(206) 및 회사 "Facebook"에 해당하는 컨셉 노드(204))에 해당하는 레퍼런스들이다. 비록 본 명세서는 특정 방식으로 특정 구조화된 질의를 생성하는 것을 기술하지만, 본 명세서는 임의의 적절한 방식으로 임의의 적절한 구조화된 질의를 생성하는 것을 고려한다.
특정 실시예로, 소셜 네트워킹 시스템(160)은 생성되는 구조화된 질의를 순위화할 수 있다. 구조화된 질의는 예컨대 이런 구조화된 질의에서 참조되는 식별된 노드/에지가 소셜 네트워킹 시스템(160)에 의해 결정되는 바와 같이 질의중인 사용자의 검색 의도에 매치할 확률이나 가능성의 순서로 다양한 인자에 기반하여 순위화될 수 있다. 구조화된 질의를 순위화한 후, 소셜 네트워킹 시스템(160)은 임계 순위보다 더 큰 순위를 가진 구조화된 질의들만을 이후 송신할 수 있다(예컨대, 상위 7개 순위화된 질의가 질의중인 사용자에게 송신되고 드롭-다운 메뉴(300)에 디스플레이될 수 있다). 특정 실시예로, 구조화된 질의에 대한 순위는 질의중인 사용자의 사용자 노드(202)와 구조화된 질의에서 참조되는 특정한 소셜 그래프 요소 사이의 이격도에 기반할 수 있다. 소셜 그래프(200)에서 질의중인 사용자와 더 가까운 (즉, 소셜 그래프 요소와 질의중인 사용자의 사용자 노드(202) 사이의 더 적은 이격도의) 소셜 그래프 요소를 참조하는 구조화된 질의는 사용자와 더 멀리 있는 (즉, 더 많은 이격도의) 소셜 그래프 요소를 참조하는 구조화된 질의보다 더 높게 순위화될 수 있다. 특정 실시예로, 소셜 네트워킹 시스템(160)은 질의중인 사용자와 관련된 검색 이력에 기반하여 구조화된 질의를 순위화할 수 있다. 질의중인 사용자가 이전에 접근했던 소셜 그래프 요소를 참조하거나 질의중인 사용자가 이전애 접근했던 소셜 그래프 요소와 관련이 있는 구조화된 질의는 질의중인 사용자의 검색 질의의 타겟일 가능성이 더 높을 수 있다. 따라서, 이런 구조화된 질의는 더 높게 순위화될 수 있다. 예로서 제한 없이, 질의중인 사용자가 이전에 "Stanford University" 프로필 페이지에 방문했으나 "Stanford, California" 프로필 페이지에는 전혀 방문하지 않았다면, 이런 컨셉을 참조하는 구조화된 질의에 대한 순위를 결정할 때, 소셜 네트워킹 시스템(160)은 질의중인 사용자가 학교에 대한 컨셉 노드(204)에 이전에 접근했기 때문에 "Stanford University"에 대한 컨셉 노드(204)를 참조하는 구조화된 질의가 상대적으로 높은 순위를 가진다고 결정할 수 있다. 특정 실시예로, 구조화된 질의는 구조화된 질의에서 참조되는 하나 이상의 소셜 그래프 요소에 대한 문맥 정보의 스니펫(snippet)을 포함할 수 있다. 특정 실시예로, 소셜 네트워킹 시스템(160)은 광고 스폰서쉽(advertising sponsorship)에 기반하여 구조화된 질의를 순위화할 수 있다. 광고자(예컨대, 특정 노드에 해당하는 특정 프로필 페이지의 사용자 또는 관리자)는 특정 노드를 참조하는 구조화된 질의가 더 높게 순위화될 수 있도록 그 노드를 후원할 수 있다. 비록 본 명세서는 특정 방식으로 구조화된 질의를 순위화하는 것을 기술하지만, 본 명세서는 임의의 적절한 방식으로 구조화된 질의를 순위화하는 것을 고려한다.
특정 실시예로, 소셜 네트워킹 시스템(160)은 질의중인 사용자로부터 구조화된 질의 중 하나의 선택을 수신할 수 있다. 수신된 구조화된 질의에서 참조되는 노드 및 에지는 각각 선택된 노드 및 선택된 에지라고 일컬어질 수 있다. 예로서 제한 없이, 질의중인 사용자의 클라이언트 장치(130)에서 웹 브라우저(132)는 도 5a-5d에 도시된 바와 같이 드롭-다운 메뉴(300)에서 송신되는 구조화된 질의를 디스플레이할 수 있는데, 이후 사용자는 사용자가 소셜 네트워킹 시스템(160)이 실행하길 원하는 특정 구조화된 질의를 표시하도록 (예컨대, 단순히 키보드에서 "enter"를 키 입력하여) 클릭하거나 선택할 수 있다. 특정 구조화된 질의를 선택하면, 사용자의 클라이언트 장치(130)는 소셜 네트워킹 시스템(160)이 선택된 구조화된 질의를 실행하도록 호출하거나 지시할 수 있다. 본 명세서는 특정 방식으로 특정 구조화된 질의의 선택을 수신하는 것을 기술하지만, 본 명세서는 임의의 적절한 방식으로 임의의 적절한 구조화된 질의의 선택을 수신하는 것을 고려한다.
구조화된 검색 질의에 대한 더 많은 정보는 참조로 각각 통합되는 2012년 7월 23일자로 출원된 미국특허출원 제13/556072호, 2012년 11월 12일자로 출원된 미국특허출원 제13/674695호 및 2012년 12월 31일자로 출원된 미국특허출원 제13/731866호에서 확인할 수 있다.
검색 질의의 파싱 및 질의 명령의 생성
특정 실시예로, 소셜 네트워킹 시스템(160)은 질의중인 사용자로부터 수신된 구조화된 질의에 기반하여 질의 명령을 생성할 수 있다. 질의 명령은 이후 소셜 네트워킹 시스템(160)의 데이터 스토어(164) 내 객체들에 대한 검색에 사용될 수 있다. 특정 실시예로, 질의 명령은 소셜 네트워킹 시스템(160)의 하나 이상의 데이터 스토어 또는 버티컬에 대한 검색 인덱스를 사용한 검색을 위해 제공될 수 있다. 질의 명령은 하나 이상의 질의 제약을 포함할 수 있다. 각각의 질의 제약은 구조화된 질의의 파싱에 기반하여 소셜 네트워킹 시스템(160)에 의해 식별될 수 있다. 각각의 질의 제약은 특정 객체-타입에 대한 요청일 수 있다. 특정 실시예로, 질의 명령은 기호적 표현(symbolic expression) 또는 s-표현의 질의 제약을 포함할 수 있다. 소셜 네트워킹 시스템(160)은 구조화된 질의 "Photos I like"를 질의 명령 (photos_liked_by:<me>)로 파싱할 수 있다. 질의 명령 (photos_liked_by:<me>)은 사진의 하나의 결과-타입(result-type)을 가진 (즉, 질의중인 사용자에 해당하는 <me>인) 사용자가 좋아하는 사진에 대한 질의를 나타낸다. 질의 제약은 예컨대 소셜 그래프 제약(예컨대, 특정 노드나 노드-타입에 대한 요청 또는 특정 에지나 에지-타입과 연결된 노드에 대한 요청), 객체 제약(예컨대, 특정 객체 또는 객체-타입에 대한 요청), 위치 제약(예컨대, 특정 지리적 위치와 관련된 객체 또는 소셜 그래프 엔티티에 대한 요청), 다른 적절한 제약들 또는 이들의 임의의 조합을 포함할 수 있다. 특정 실시예로, 구조화된 질의의 파싱은 구조화된 질의를 생성하는데 사용되는 문법에 기반할 수 있다. 즉, 생성된 질의 명령 및 그의 질의 제약은 특정 문법(또는 문법 포레스트(grammar forest)로부터의 서브-트리)에 대응할 수 있다. 특정 실시예로, 질의 명령은 접두어 및 객체를 포함할 수 있다. 객체는 소셜 그래프(200) 내 특정 노드에 대응할 수 있는 한편, 접두어는 소셜 그래프(200)에서 특정 노드와 연결하는 특정 에지(206) 또는 (특정 타입의 관계를 표시하는) 에지-타입에 대응할 수 있다. 예로서 제한 없이, 질의 명령 (pages_liked_by:<user>)는 접두어 pages_liked_by 및 객체 <user>를 포함한다. 특정 실시예로, 소셜 네트워킹 시스템(160)은 하나 이상의 검색 결과를 식별하기 위해 특정 연결 에지(206)(또는 에지-타입)를 따라 특정 노드로부터 질의 명령에 의해 특정된 객체에 대응하는 노드들로 소셜 그래프(200)를 횡단함으로써 질의 명령을 실행할 수 있다. 예로서 제한 없이, 질의 명령 (pages_liked_by:<user>)는 좋아요-타입 에지(206)를 따라 <user>에 대응하는 사용자 노드(202)로부터 <user>가 좋아하는 페이지에 대응하는 컨셉 노드(204)로 소셜 그래프(200)를 횡단함으로써 소셜 네트워킹 시스템(160)에 의해 실행될 수 있다. 비록 본 명세서는 특정 방식으로 특정 질의 명령을 생성하는 것을 기술하지만, 본 명세서는 임의의 적절한 방식으로 임의의 적절한 질의 명령을 생성하는 것을 고려한다.
특정 실시예로, 소셜 네트워킹 시스템(160)은 가령 중첩형 검색 질의(nested search query)와 같이 내부 제약(inner constraint)과 외부 제약(outer constraint) 모두를 구비하는 복합형 구조화된 질의의 제약들을 만족하는 온라인 소셜 네트워크와 관련된 객체들을 식별할 수 있다. 소셜 네트워킹 시스템(160)과 관련된 객체들의 버티컬(164)을 검색하는 프로세스는 질의 힌트(query hinting)를 사용하여 향상될 수 있고, 이때 외부 질의 제약은 내부 질의 제약에 매치하는 객체들을 식별할 때 사용된다. 예로서 제한 없이, 도 5c에 도시된 바와 같이, 가령 "Palo Alto에서 찍은 여성들의 사진들(Photos of females taken in Palo Alto)"과 같이 상대적으로 복잡한 구조화된 질의는 사용자 버티컬(164)이 먼저 여성인 사용자들을 식별한 후, Palo Alto에서 찍은 사진들의 사진 버티컬(164)로부터의 결과들과 이런 결과들을 교차하도록 검색되기 위해 파싱(parsed)될 수 있었다. 사용자 버티컬은 수백 또는 심지어 수천의 여성 사용자들에 대응하는 결과들을 생성할 수 있고 이들 중 아무도 Palo Alto에서 찍은 사진에 태그되지 않을 수 있어서, 이런 결과들의 교차는 어떤 검색 결과도 생성하지 않는다. 대안으로, 이런 구조화된 질의는 질의 힌트를 사용하여 파싱될 수 있어서, 예컨대 사용자 버티컬이 여성인 사용자들을 식별하고, 가령 "weak and" (WAND) 연산자와 같이 몇몇의 결과로부터 항들을 없애게 하는 연산자를 사용하여 Palo Alto의 사진에서 또한 태그되는 적어도 몇몇의 여성 사용자를 식별하도록 검색되기 위해 파싱(parsed)될 수 있었다. 다음으로, 사진 버티컬(164)은 임의의 식별된 여성 사용자가 태그되는 Palo Alto에서 찍은 사진들을 식별하도록 검색될 수 있었다. 이 방식으로, 외부 제약에 의해 요청되는 객체들에 대응하는 버티컬의 검색은 검색 질의를 만족하는 결과를 생성할 가능성이 더 높다. 또한, 이를 통해 소셜 네트워킹 시스템(160)은 더 나은 검색 결과를 생성할 수 있고 이런 결과를 생성하기 위한 처리 효율을 개선시킬 수 있다. 특정 실시예로, 내부 질의 제약에 응답하여 검색된 버티컬로부터 결과는 점수화되고 순위화될 수 있고, 이런 점수는 외부 질의 제약에 응답하여 검색되는 버티컬로부터 식별된 객체를 순위화할 때 사용될 수 있다. 비록 본 명세서는 특정 방식으로 구조화될 질의에 매치하는 객체를 식별하는 것을 기술하지만, 본 명세서는 임의의 적절한 방식으로 구조화된 질의에 매치하는 객체를 식별하는 것을 고려한다.
특정 실시예로, 소셜 네트워킹 시스템(160)은 내부 질의 제약 및 외부 질의 제약을 포함하는 질의 명령을 생성할 수 있다. 내부 질의 제약은 제1 객체-타입의 하나 이상의 검색 결과에 대한 요청을 포함할 수 있고, 외부 질의 제약은 제2 객체 타입의 하나 이상의 검색 결과에 대한 요청을 포함할 수 있다. 각각의 질의 제약은 구조화된 질의에서 참조되는 하나 이상의 선택된 에지에 의해 구조화된 질의에서 참조되는 하나 이상의 선택된 노드와 연결되는 하나 이상의 노드에 대한 것일 수 있다. 하나 이상의 질의 제약을 가진 질의 명령은 s-표현의 중첩형 질의를 포함할 수 있다. 예로서 제한 없이, 소셜 네트워킹 시스템(160)은 구조화된 질의 "Pages liked by my friends"를 가령 (pages_liked_by: (friends_of: <me>))와 같은 중첩형 질의로 변환할 수 있다. 중첩형 검색 질의 (pages_liked_by: (friends_of: <me>))는 외부 질의 제약 (pages_liked_by: <user>) 내에 중첩되는 내부 질의 제약 (friends_of: <me>)을 포함한다. 내부 질의 제약 (friends_of: <me>)은 사용자의 하나의 결과-타입을 가진 사용자(즉, <me>)의 1촌 친구에 대한 질의를 나타낸다. 외부 질의 제약 (pages_liked_by: <user>)은 페이지의 하나의 결과-타입을 가진 사용자가 좋아하는 페이지에 대한 질의를 나타낸다. 또 다른 예로서 제한 없이, 소셜 네트워킹 시스템(160)은 구조화된 질의 "Photos of people named Tom"을 가령 (photos_of: (name: tom))과 같은 중첩형 질의로 변환할 수 있다. 중첩형 질의 (photos_of: (name: tom))는 외부 질의 제약 (photos_of: <user>) 내에 중첩되는 내부 질의 제약 (name: tom)을 포함한다. 내부 질의 제약은 사용자의 하나의 결과-타입을 가진 "Tom"에 매치하는 이름의 사용자들에 대한 질의를 나타낸다. 외부 질의 제약 (photos_of: <user>)은 사진의 하나의 결과-타입으로 사용자가 태그되는 사진들에 대한 질의를 나타낸다. 또 다른 예로서, 소셜 네트워킹 시스템(160)은 구조화된 질의 "People who wrote posted liked by Bill"을 가령 (extract author (term posts_liked_by: <Bill>))과 같은 중첩형 질의로 변환할 수 있다. 질의 명령은 사용자 "Bill"이 좋아하는 게시물에 대한 하나 이상의 작성자의 검색 결과를 (추출 연산자로) 요청할 수 있다. 중첩형 질의는 사용자 <Bill>이 좋아하는 게시물에서 검색 결과를 요청하는 검색 용어에 대응하는 내부 질의 (term posts_liked_by: <Bill>)을 포함할 수 있다. 즉, 외부 제약은 제1 객체-타입(사용자)의 제1 검색 결과를 요청하는 한편, 내부 제약은 제2 객체-타입(게시물)의 제2 검색 결과를 요청한다. 비록 본 명세서는 특정 방식으로 질의를 파싱하는 것을 기술하지만, 본 명세서는 임의의 적절한 방식으로 질의를 파싱하는 것을 고려한다.
특정 실시예로, 소셜 네트워킹 시스템(160)은 질의 명령의 하나 이상의 질의 제약에 매치하는 하나 이상의 노드를 식별할 수 있다. 소셜 네트워킹 시스템(160)은 질의 명령의 하나 이상의 제약을 만족하는 데이터 스토어에 저장된 하나 이상의 객체를 식별하도록 하나 이상의 데이터 스토어(164)를 검색할 수 있다. 예로서 제한 없이, 소셜 네트워킹 시스템(160)은 (사진 결과-타입으로) 질의 제약 (photos_liked_by: <me>)을 사진 버티컬(P3)로 제출할 수 있다. 소셜 네트워킹 시스템(160)은 사진 버티컬(164)의 인덱스 서버(330)에 액세스할 수 있고, 인덱스 서버(330)가 질의 제약 (photos_liked_by: <me>)에 대한 결과들을 반환하게 할 수 있다. 특정 실시예로, 소셜 네트워킹 시스템(160)은 질의 명령의 각각의 질의 제약에 대하여 데이터 스토어(164) 중 적어도 하나로부터 검색 결과를 액세스하고 검색할 수 있다. 엑세스된 데이터 스토어(164)는 특정 질의 제약에 의해 특정되는 객체 타입의 객체들을 저장하도록 구성될 수 있다. 이후, 소셜 네트워킹 시스템(160)은 각각의 질의 제약의 검색 결과를 종합할 수 있다. 예로서 제한 없이, 중첩형 질의 (photos_of:(name: tom))은 사용자의 하나의 결과-타입을 가진 내부 질의 제약 (name: tom) 및 사진의 하나의 결과-타입을 가진 외부 질의 제약 (photos_of:<user>)를 포함한다. 이후, 소셜 네트워킹 시스템(160)은 중첩형 질의를 재배열하고, 먼저 (사용자 결과-타입으로) 내부 질의 제약 (name: tom)을 사용자 버티컬(P1)로 제출할 수 있다. 소셜 네트워킹 시스템(160)은 사용자 버티컬(P1)의 인덱스 서버(330)에 액세스할 수 있고, 인덱스 서버(330)가 (사용자 식별자로 각각 표현되는) 사용자들 <17>, <31> 및 <59>의 검색 결과를 반환하게 할 수 있다. 즉, 각각의 사용자 <17>, <31> 및 <59>는 "tom"에 매치하는 이름을 가질 수 있다. 이후, 소셜 네트워킹 시스템(160)은 중첩형 질의를 사진의 각각의 결과-타입을 가진 질의들 (photos_of:<17>), (photos_of:<31>) 및 (photos_of:<59>)의 OR 조합으로 재-작성할 수 있다. 이후, 소셜 네트워킹 시스템(160)은 질의들 (photos_of:<17>), (photos_of:<31>) 및 (photos_of:<59>)을 사진 버티컬(P3)로 제출할 수 있다. 소셜 네트워킹 시스템(160)은 사진 버티컬(P3)의 인덱스 서버(330)에 액세스할 수 있고, 인덱스 서버(330)가 질의들 (photos_of:<17>), (photos_of:<31>) 및 (photos_of:<59>)에 대한 사진의 검색 결과를 반환하게 할 수 있다. 특정 실시예로, 소셜 네트워킹 시스템(160)은 검색 결과에 OR 연산을 수행함으로써 검색 결과를 종합할 수 있다. 예로서 제한 없이, 검색 질의 (photos_of: <17>)에 대한 검색 결과는 (사진 식별자로 각각 표현되는) <1001> 및 <1002>일 수 있다. 검색 질의 (photos_of:<31>)에 대한 검색 결과는 <1001>, <1326>, <9090> 및 <5200>일 수 있다. 검색 질의 (photos_of:<59>)에 대한 검색 결과는 <9090> 및 <7123>일 수 있다. 소셜 네트워킹 시스템(160)은 검색 결과에 OR 연산을 수행하여 최종 결과 <1001>, <1002>, <1326>, <9090>, <5200> 및 <7123>을 산출할 수 있다. 비록 본 명세서는 특정 방식으로 특정 검색 결과를 식별하는 것을 기술하지만, 본 명세서는 임의의 적절한 방식으로 임의의 적절한 검색 결과를 식별하는 것을 고려한다.
특정 실시예로, 질의 제약에 대해 매치하는 노드를 식별할 때, 소셜 네트워킹 시스템(160)은 특정 버티컬(164)에서 최대로 임계 수의 매치하는 노드만을 식별할 수 있다. 이런 임계 수의 매치하는 객체는 이후 검색 결과로서 검색될 수 있다. 임계 수는 검색 품질을 향상시키거나 검색 결과의 처리를 최적화하도록 선택될 수 있다. 예로서 제한 없이, 소셜 네트워킹 시스템(160)은 사진 객체를 요청하는 질의 명령에 응답하여 사진 버티컬(164)에서 상위 N개의 매치하는 객체들만을 식별할 수 있다. 상위 N개의 사진 객체는 사진 버티컬에 대응하는 검색 인덱스에서 사진 객체들의 정적 순위(static ranking)에 의해 결정될 수 있다. 특정 실시예로, 상위 N개의 식별된 결과는 검색 질의 그 자체에 기반하여 재-순위화될 수 있다. 예로서 제한 없이, N이 1000이라면, (정적 순위로 결정되는) 상위 1000개의 사진 객체가 식별될 수 있다. 이런 1000개의 사진 객체는 이후 하나 이상의 인자(예컨대, 검색 질의 또는 다른 질의 제약과의 매치, 소셜 그래프 친밀성, 검색 이력 등)에 기반하여 순위화될 수 있고, 상위 20개의 결과는 이후 질의중인 사용자에게 제시하기 위해 검색 결과로서 생성될 수 있었다. 특정 실시예로, 하나 이상의 라운드의 순위화 이후 상위 결과들은 최종 라운드의 순위화에 대한 집계기(320)로 송신될 수 있었고, 이때 결과는 재순서화될 수 있거나, 중복된 결과는 버려질 수 있거나, 임의의 다른 타입의 결과-처리는 질의중인 사용자에게 제시하기 전에 발생할 수 있다. 비록 본 명세서는 특정한 수의 검색 결과를 식별하는 것을 기술하지만, 본 명세서는 임의의 적절한 수의 검색 결과를 식별하는 것을 고려한다. 게다가, 비록 본 명세서는 특정 방식으로 검색 결과를 순위화하는 것을 기술하지만, 본 명세서는 임의의 적절한 방식으로 검색 결과를 순위화하는 것을 고려한다.
특정 실시예로, 소셜 네트워킹 시스템(160)은 "weak and" 연산자(WAND)를 포함하는 질의 명령을 생성할 수 있다. WAND 연산자를 통해 질의 명령 내의 하나 이상의 항들(예컨대, 키워드 또는 연산자와 키워드를 포함하는 논리적 표현)은 특정한 횟수 또는 시간 비율로 없어질 수 있다. 소셜 네트워킹 시스템(160)은 WAND 연산자로 질의 명령을 생성할 때 구조화된 질의에서 참조되는 소셜 그래프 요소를 참작하여 이런 소셜 그래프 요소를 참조하는 암시적인 질의 제약을 추가할 수 있다. 소셜 그래프(200)로부터의 이런 정보는 WAND 연산자를 사용하여 검색 결과를 다양화하는데 사용될 수 있다. 예로서 제한 없이, 사용자가 구조화된 질의 "Coffee shops in Palo Alto"를 입력하면, 소셜 네트워킹 시스템(160)은 가령 다음과 같은 질의 명령을 생성할 수 있다:
(WAND category:<coffee shop>
location:<Palo Alto>:optional-weight 0.3).
이 예에서, 검색 결과가 질의 명령의 (category:<coffee shop>) 및 (location:<Palo Alto>) 부분들 모두에 항상 매치해야 함을 요구하는 대신에, 질의의 Palo Alto 부분이 0.3의 가중치로 선택형이 된다. 이 경우에는 검색 결과의 30%가 (location: <Palo Alto>) 용어에 매치해야 하고(즉, 위치 "Palo Alto"에 대응하는 컨셉 노드(204)와 에지(206)로 연결되어야 하고) 검색 결과의 나머지 70%가 그 용어를 생략할 수 있음을 의미한다. 따라서, N이 100이라면, 30개의 커피숍(coffee shop) 결과는 "Palo Alto"의 위치를 가져야 하고, 70개의 커피숍 결과는 임의의 장소로부터(예컨대, 커피숍의 정적 순위로 결정되는 전체 상위 100개의 커피숍으로부터) 유래할 수 있다. 특정 실시예로, 용어 (category:<coffee shop>)도 또한 선택형 가중치를 할당받을 수 있어서, 검색 결과는 심지어 항상 "Coffee shop"에 대한 소셜 그래프 요소에 매치할 필요는 없고 몇몇의 결과는 임의의 객체(예컨대, 장소)이도록 소셜 네트워킹 시스템(160)에 의해 선택될 수 있다.
특정 실시예로, 소셜 네트워킹 시스템(160)은 "strong or" 연산자(SOR)를 포함하는 질의 명령을 생성할 수 있다. SOR 연산자는 질의 명령 내 하나 이상의 항들(예컨대, 키워드 또는 연산자와 키워드를 포함하는 논리 표현)이 특정한 횟수 또는 시간 비율로 존재하도록 요구할 수 있다. 소셜 네트워킹 시스템(160)은 WAND 연산자로 질의 명령을 생성할 때 구조화된 질의에서 참조되는 소셜 그래프 요소를 참작하여 이런 소셜 그래프 요소를 참조하는 암시적 질의 제약을 추가할 수 있다. 소셜 그래프(200)로부터의 이런 정보는 SOR 연산자를 사용하여 검색 결과를 다양화하는데 사용될 수 있다. 예로서 제한 없이, 사용자가 구조화된 질의 "Coffee shops in Palo Alto or Redwood City"를 입력하면, 소셜 네트워킹 시스템(160)은 가령 다음과 같은 질의 명령을 변환할 수 있다:
(AND category:<coffee shop>
(SOR location:<Palo Alto>:optional-weight 0.4
location:<Redwood City>:optional-weight 0.3)).
이 예에서, 질의 명령의 (location:<Palo Alto>) 또는 (location:<Redwood City>) 중 어느 하나에 매치하는 검색 결과를 허용하는 대신에, 질의의 Palo Alto 부분은 0.4의 가중치로 선택형이 되고, 질의의 Redwood City 부분은 0.3의 가중치로 선택형이 된다. 이 경우에는 검색 결과의 40%가 (location:<Palo Alto>) 용어에 매치해야 하고(즉, (location <Palo Alto>)에 대응하는 컨셉 노드(204)와 에지(206)로 각각 연결되는 "coffee shops"에 대응하는 컨셉 노드(204)이고), 검색 결과의 30%가 (location:<Redwood City>)에 매치해야 하며, 검색 결과는 나머지는 Palo Alto 또는 Redwood City 제약 중 어느 하나(또는 임의의 경우 적절하다면 둘 다)에 매치해야 함을 의미한다. 따라서, N이 100이라면, 40개의 커피숍 결과는 "Palo Alto"의 위치를 가져야 하고, 30개의 커피숍 결과는 "Redwood City"의 위치를 가져야 하며, 30개의 커피숍 결과는 양자택일의 위치로부터 유래할 수 있다.
특정 실시예로, 내부와 외부 질의 제약을 포함하는 질의 명령에 응답하여, 소셜 네트워킹 시스템(160)은 내부 질의 제약에 매치하고 적어도 부분적으로 외부 질의 제약에 매치하는 제1 노드 세트를 식별할 수 있다. 이런 방식으로, 소셜 네트워킹 시스템(160)과 관련된 객체들의 버티컬(164)을 검색하는 프로세스는 질의 힌트를 사용하여 질의 명령을 생성하여 개선될 수 있는데, 이때 외부 질의 제약은 내부 질의 제약에 매치하는 객체를 식별할 때 사용된다. 또한, 이를 통해 소셜 네트워킹 시스템(160)은 더 나은 검색 결과를 생성할 수 있고 이런 결과를 생성하기 위한 처리 효율을 개선시킬 수 있다. 질의 명령은 예컨대 WAND 또는 SOR 연산자를 사용하여 형성될 수 있어서, 질의 명령은 제1 식별된 노드 수가 내부 제약에 매치하거나 내부 또는 외부 제약에 매치하도록 요구하고 제2 식별된 노드 수가 내부와 외부 제약들 모두 또는 단지 외부 제약에만 매치하거나 이들의 임의의 조합이도록 요구한다. 제1 노드 수 및 제2 노드 수는 예컨대 실수, 퍼센트 또는 분수일 수 있다. 비록 본 명세서는 특정 방식으로 특정 질의 제약에 매치하는 것으로 특정 소셜 그래프 요소를 식별하는 것을 기술하지만, 본 명세서는 임의의 적절한 방식으로 임의의 적절한 질의 제약에 매치하는 것으로 임의의 적절한 소셜 그래프 요소를 식별하는 것을 고려한다.
특정 실시예로, 내부 질의 제약에 매치하고 적어도 부분적으로 외부 질의 제약에 매치하는 제1 노드 세트를 식별하는 것은 적어도 내부 질의 제약에 매치하는 제1 노드 수를 식별하고 내부 질의 제약과 외부 질의 제약 모두에 매치하는 제2 노드 수를 식별하는 것을 포함할 수 있다. 질의 명령은 질의 명령에 응답하여 반환되는 제1 검색 결과 수가 적어도 내부와 외부 질의 제약 모두에 매치해야 하는 동시에 (예컨대, WAND 연산자를 사용하는 경우로서) 제2 검색 결과 수가 단지 내부 제약에만 매치해야 하도록 형성될 수 있다. 예로서 제한 없이, 구조화된 질의 "Photos of females taken in Palo Alto"에 응답하여, 소셜 네트워킹 시스템(160)은 가령 다음과 같은 내부 질의 제약을 해결하도록 질의 명령을 생성할 수 있다:
(WAND
(term gender_to_user:<female>)
(term photo_place_tag_to_user:<Palo Alto>:optional-weight 0.9)).
이 경우, 내부 제약은 여성 사용자를 식별하는 것이고, 외부 제약은 Palo Alto의 도시에서 찍은 식별된 여성 사용자의 사진을 식별하는 것이다. 사용자 버티컬(164)을 검색하여 내부 제약에 대해 매치하는 사용자 노드(202)를 식별하는 경우, (Palo Alto에서의 임의의 사진에 태그되지 않은 많은 여성 사용자를 식별할 수 있게) 여성 사용자가 식별되어야 함을 단지 명시하는 대신에, 질의 명령은 적어도 90%의 사용자가 Palo Alto의 사진에도 또한 태그되는 여성들이어야 함을 명시한다. 이런 방식으로, 인덱스는 추가 제약 (term photos_place_tag_to_user:<Palo Alto>:optional-weight 0.9)을 추가함으로써 비정규화(denormalized)된다. 사용자 결과의 나머지 10%는 "여성" 제약에 대한 매치만을 필요로 한다. 따라서, 질의 힌트는 내부 질의 제약을 해결할 때 외부 질의 제약이 고려되도록 사용된다. 다음으로, 사진 버티컬(164)은 임의의 이전에 식별된 여성 사용자가 태그되는 Palo Alto에서 찍은 사진을 식별하도록 검색될 수 있다. 사용자 버티컬(164)의 검색에 의해 식별되는 노드의 90%는 이미 Palo Alto의 사진에 태그되었던 여성 사용자인 것으로 식별되기 때문에, 사진 버티컬(164)의 검색은 식별된 여성이 태그되는 상대적으로 다수의 사진을 생성할 수 있을 가능성이 더 높다. 비록 본 명세서는 특정 방식으로 특정 질의 제약에 매치하는 것으로서 특정 소셜 그래프 요소를 식별하는 것을 기술하지만, 본 명세서는 임의의 적절한 방식으로 임의의 적절한 질의 제약에 매치하는 것으로서 임의의 적절한 소셜 그래프 요소를 식별하는 것을 고려한다.
특정 실시예로, 내부 질의 제약에 매치하고 적어도 부분적으로 외부 질의 제약에 매치하는 제1 노드 세트는 각 노드가 내부 질의 제약 또는 외부 질의 제약 중 어느 하나에 매치하는 제1 노드 수를 식별하고 각 노드가 내부 질의 제약과 외부 질의 제약 모두에 매치하는 제2 노드 수를 식별하는 것을 포함할 수 있다. 질의 명령은 질의 명령에 응답하여 반환되는 제1 검색 결과 수가 내부 제약에 매치하고 적어도 하나의 제2 검색 결과 수가 외부 제약에 매치하며, (예컨대, SOR 연산자를 사용하는 경우로서) 그 나머지는 내부 제약 또는 외부 제약 중 어느 하나에 매치하도록 형성될 수 있다. 또 다른 예로서 제한 없이, 구조화된 질의 "Photos of Mark and women"에 응답하여, 소셜 네트워킹 시스템(160)은 가령 다음과 같이 내부 질의 제약을 해결하도록 질의 명령을 생성할 수 있다:
(WAND
(term gender_to_user:<female>)
(SOR:optional-weight 0.8
(term friend_of:<Mark>:optional-weight: 0.7)
(term non_friend_in_same_photo:<Mark>:optional-weight:0.1))).
이런 경우, 내부 제약은 여성 사용자를 식별하는 것이고, 외부 제약은 사용자 "Mark"와 함께 찍은 식별된 여성 사용자의 사진을 식별하는 것이다. 사용자 버티컬(164)을 검색하여 내부 제약에 대해 매치하는 사용자 노드(202)를 식별하는 경우, (사용자 "Mark"와 함께 임의의 사진에 태그되지 않은 많은 여성 사용자를 식별할 수 있게) 여성 사용자가 식별되어야 함을 단지 명시하는 대신에, 질의 명령은 적어도 80%의 사용자 결과가 SOR 제약의 제약들 중 하나도 또한 매치하는 여성들이어야 함을 명시하는데, 이때 SOR 제약은 사용자 결과의 70%가 (friend_of: <Mark>) 제약에 매치해야 하고 사용자 결과의 10%가 (non_friend_in_same_photo: <Mark>) 제약에 매치해야 하며 검색 결과의 나머지는 제약 중 하나(또는, 적절하다면 둘 다)에 매치해야 한다고 명시한다. 따라서, N가 100이라면, 20개의 사용자 결과는 간단히 여성이어야 하고, 56개의 사용자 결과는 사용자 "Mark"의 친구들인 여성들이어야 하며, 8개의 사용자 결과는 "Mark"가 있는 사진에 태그될 수 있는 "Mark"의 비-친구들인 여성들이어야 하고, 16개의 사용자 결과는 "Mark"와의 사진에 태그되는 "Mark"의 친구 또는 비-친구들 중 하나이고 여성이어야 한다. 이런 방식으로, 인덱스는 결과의 다양화를 생성하는데도 도움을 줄 수 있는 다양한 추가 제약을 추가함으로써 비정규화된다. 따라서, 질의 힌트는 (즉, 사용자 "Mark"와 사진에 있는) 외부 질의 제약이 내부 질의 제약을 해결할 때 고려되도록 사용된다. 다음으로, 사진 버티컬(164)은 임의의 이전의 식별된 여성 사용자가 태그되는 사용자 "Mark"와 함께 찍은 사진을 식별하도록 검색될 수 있다. 사용자 버티컬(164)의 검색에 의해 식별되는 노드 중 80%가 이미 사용자 "Mark"와 몇몇 타입의 관계를 가지는 여성 사용자인 것으로 식별되기 때문에, 사진 버티컬(164)의 검색은 검색 질의를 만족하는 사진들을 생성할 수 있을 가능성이 더 높다. 비록 본 명세서는 특정 방식으로 특정 질의 제약에 매치하는 것으로서 특정 소셜 그래프 요소를 식별하는 것을 기술하지만, 본 명세서는 임의의 적절한 방식으로 임의의 적절한 질의 제약에 매치하는 것으로서 임의의 적절한 소셜 그래프 요소를 식별하는 것을 고려한다.
특정 실시예로, 소셜 네트워킹 시스템(160)은 질의 제약에 매치하는 것으로 식별되는 하나 이상의 노드를 점수화할 수 있다. 식별된 노드는 임의의 적절한 방식으로 점수화될 수 있다. 질의 명령이 복수의 질의 제약을 포함할 때, 소셜 네트워킹 시스템(160)은 각각의 질의 제약에 별도로 또는 함께 매치하는 노드들을 점수화할 수 있다. 소셜 네트워킹 시스템(160)은 식별된 노드의 객체-타입에 대응하는 데이터 스토어(164)에 액세스함으로써 식별된 노드의 제1 세트를 점수화할 수 있다. 예로서 제한 없이, 질의 제약 (extract authors:(term posts_liked_by:<Mark>))에 매치하는 식별된 노드를 생성할 때, 소셜 네트워킹 시스템(160)은 사용자 버티컬(164)에서 사용자들의 세트(<Tom>, <Dick>, <Harry>)를 식별할 수 있다. 이후, 소셜 네트워킹 시스템(160)은 사용자 <Mark>에 대한 각각의 소셜-친밀성에 기반하여 사용자들 <Tom>, <Dick> 및 <Harry>을 점수화할 수 있다. 예컨대, 게시물 버티컬(164)의 소셜 네트워킹 시스템(160)은 이후 사용자 <Mark>가 좋아하는 게시물의 목록 내 다수의 게시물에 기반하여 사용자들 <Tom>, <Dick> 및 <Harry>의 식별된 노드를 점수화할 수 있다. 사용자들 <Tom>, <Dick> 및 <Harry>는 사용자 <Mark>가 좋아하는 다음의 게시물을 작성했을 수 있다: <게시물 1>, <게시물 2>, <게시물 3>, <게시물 4>, <게시물 5>, <게시물 6>. 사용자 <Dick>이 <게시물 1>, <게시물 2>, <게시물 3>을 작성했고 사용자 <Tom>이 <게시물 5>, <게시물 6>을 작성했으며 사용자 <Harry>가 <게시물 4>를 작성했다면, 소셜 네트워킹 시스템(160)은 사용자 <Dick>이 사용자 <Mark>가 좋아하는 게시물의 목록 내 게시물들의 대부분을 작성했기 때문에 그를 가장 높게 점수화하며 <Tom> 및 <Harry>가 차례로 더 낮은 점수를 가질 수 있다. 또 다른 예로서 제한 없이, 이전의 예를 사용하면, 소셜 네트워킹 시스템(160)은 게시물을 그 게시물의 좋아요의 카운트와 매치하는 포워드 인덱스(forward index)에 액세스할 수 있다. 인덱스 서버는 포워드 인덱스에 액세스하고 사용자 <Mark>가 좋아하는 게시물의 목록 중 각각의 게시물에 대한 좋아요의 카운트를 검색할 수 있다. 인덱스 서버는 각각의 좋아요의 카운트에 기반하여 게시물 목록의 게시물들(즉, <게시물 1>, <게시물 2>, <게시물 3>, <게시물 4>, <게시물 5>, <게시물 6>)을 점수화할 수 있고, 제1 식별된 노드로서 상위권으로 점수화된 게시물(예컨대, 상위 3개로 점수화되거나 가장 좋아하는 게시물)의 작성자를 소셜 네트워킹 시스템(160)으로 반환할 수 있다. 각각의 적절한 점수화 인자가 특정 식별된 노드에 대해 고려된 후, 식별된 노드에 대한 총 점수가 결정될 수 있다. 노드의 점수화에 기반하여, 소셜 네트워킹 시스템(160)은 이후 하나 이상의 세트의 식별된 노드를 생성할 수 있다. 예로서 제한 없이, 소셜 네트워킹 시스템(160)은 임계 점수보다 더 높은 점수를 가진 노드에 대응하는 식별된 노드의 세트만을 생성할 수 있다. 또 다른 예로서 제한 없이, 소셜 네트워킹 시스템(160)은 점수화된 노드를 순위화한 후 임계 순위(예컨대, 상위 10, 상위 20, 등)보다 더 높은 순위를 가진 노드에 대응하는 식별된 노드의 세트만을 생성할 수 있다. 비록 본 명세서는 특정 방식으로 매치하는 노드를 점수화하는 것을 기술하지만, 본 명세서는 임의의 적절한 방식으로 매치하는 노드를 점수화하는 것을 고려한다.
특정 실시예로, 소셜 네트워킹 시스템(160)은 제1 노드 세트의 점수에 적어도 부분적으로 기반하여 제2 노드 세트를 점수화할 수 있다. 검색 결과는 임의의 적절한 방식으로 점수화될 수 있다. 질의 명령이 복수의 질의 제약을 포함할 때, 소셜 네트워킹 시스템(160)은 각각의 질의 제약에 매치하는 노드를 별도로 점수화할 수 있다. 대안으로, 소셜 네트워킹 시스템(160)은 하나 이상의 다른 노드 세트를 점수화할 때 하나의 노드 세트로부터의 점수를 이용할 수 있다. 내부 제약과 외부 제약을 가진 질의 명령에 대하여, 소셜 네트워킹 시스템(160)은 내부 질의 제약에 매치하는 제1 노드 세트를 식별한 후 이런 노드들을 점수화할 수 있다. 이후, 소셜 네트워킹 시스템(160)은 외부 질의 제약에 매치하는 제2 노드 세트를 식별하고 제1 노드 세트의 점수에 적어도 부분적으로 기반하여 제2 노드 세트를 점수화할 수 있다. 예로서 제한 없이, 구조화된 질의 "Pages liked by my friends"에 응답하여, 소셜 네트워킹 시스템(160)은 가령 (pages_liked_by:(friends_of:<me>))와 같은 질의 명령을 생성할 수 있다. 소셜 네트워킹 시스템(160)은 사용자 버티컬(164)에 액세스하고 질의중인 사용자의 친구들인 사용자들을 요청하는 내부 질의 제약에 대응하는 제1 노드 세트를 식별함으로써 내부 질의 제약을 먼저 해결한다. 이런 사용자의 제1 세트는 질의중인 사용자의 사용자 노드(202)와 친구-타입 에지(206)로 연결되는 각각의 사용자 노드(202)에 각각 대응할 수 있는 (<Tom>, <Dick>, <Harry>)를 포함할 수 있다. 이후, 소셜 네트워킹 시스템(160)은 임의의 적절한 방식으로 이런 제1 노드 세트를 점수화할 수 있다. 예컨대, 사용자의 세트는 질의중인 사용자에 대한 각각의 소셜 그래프 친밀성에 기반하여 점수화될 수 있고, 이때 사용자 "Dick"는 세트 내 가장 많은 친밀성을 가질 수 있고, "Harry"는 두번째로 많은 친밀성을 가질 수 있으며, "Tom"은 세트 내 가장 적은 친밀성을 가질 수 있다. 다음으로, 소셜 네트워킹 시스템(160)은 페이지 버티컬(164)에 액세스함으로써 외부 질의 제약을 해결할 수 있고, 제1 세트 내 사용자가 좋아한 페이지(즉, 사용자 "Tom", "Dick" 및 "Harry"에 대응하는 적어도 하나의 사용자 노드(202)와 좋아요-타입 에지(206)로 연결되는 컨셉 노드(204)에 대응하는 페이지)를 요청하는 외부 질의 제약에 대응하는 제2 노드 세트를 식별할 수 있다. 사용자 "Tom", "Dick" 및 "Harry"는 다음의 페이지를 좋아했을 수 있다: (<페이지 1>, <페이지 2>, <페이지 3>, <페이지 4>, <페이지 5>). 이후, 소셜 네트워킹 시스템(160)은 임의의 적절한 방식으로 이런 제2 노드 세트를 점수화할 수 있다. 예컨대, 페이지의 세트는 온라인 소셜 네트워크에서의 총 인기도에 기반하여 점수화될 수 있는데, 이때 더 전반적으로 인기 있는 페이지는 덜 인기 있는 페이지보다 각각 더 높게 점수화된다. 또한, 페이지의 세트는 제1 노드 세트의 점수에 적어도 부분적으로 기반하여 점수화될 수 있다. 예컨대, <페이지 1>은 "Tom"이 좋아할 수 있고, <페이지 2>는 "Dick"이 좋아할 수 있으며, <페이지 3>은 "Harry"가 좋아할 수 있고, <페이지 4>는 "Tom"과 "Harry"가 좋아할 수 있으며, <페이지 5>는 "Tom", "Dick" 및 "Harry"가 좋아할 수 있다. 이 경우, 소셜 네트워킹 시스템(160)은 더 높은 친밀성을 가진 사용자가 좋아한 페이지의 점수를 상향시키고 더 낮은 친밀성을 가진 사용자가 좋아한 페이지의 점수를 하향(또는 적어도 덜 상향)시킴으로써 제1 노드 세트에 부분적으로 기반하여 제2 노드 세트를 점수화할 수 있다. 예컨대, 사용자 "Dick"은 질의중인 사용자에 대해 가장 높은 친밀성을 가지기 때문에, (<페이지 2> 및 <페이지 5>인) "Dick"이 좋아한 페이지는 모두 그 점수가 상향될 수 있다. 마찬가지로, 사용자 "Tom"은 질의중인 사용자에 대해 가장 낮은 친밀성을 가지기 때문에, (<페이지 1>, <페이지 4> 및 <페이지 5>인) "Tom"이 좋아한 페이지는 모두 그 점수가 하향될 수 있다(또는 적어도 가능한 상향되지 않을 수 있다). 각각의 적절한 점수 인자가 특정 식별된 노드에 대해 고려된 후, 식별된 노드에 대한 총 점수가 결정될 수 있다. 노드의 점수화에 기반하여, 소셜 네트워킹 시스템(160)은 이후 식별된 노드의 하나 이상의 세트를 생성할 수 있다. 예로서 제한 없이, 소셜 네트워킹 시스템(160)은 임계 점수보다 더 높은 점수를 가진 노드에 대응하는 식별된 노드의 세트만을 생성할 수 있다. 또 다른 예로서 제한 없이, 소셜 네트워킹 시스템(160)은 점수화된 노드를 순위화한 후, 임계 순위(예컨대, 상위 10, 상위 20, 등)보다 더 높은 순위를 가진 노드에 대응하는 식별된 노드의 세트만을 생성할 수 있다. 비록 본 명세서는 특정 방식으로 노드를 점수화하는 것을 기술하지만, 본 명세서는 임의의 적절한 방식으로 노드를 점수화하는 것을 고려한다.
특정 실시예로, 소셜 네트워킹 시스템(160)은 내부 질의 제약에 매치하고 외부 질의 제약에 적어도 부분적으로 매치하는 것으로 식별되는 제1 노드 세트에 기반하고 외부 질의 제약에 매치하는 것으로 식별되는 제2 노드 세트에 또한 기반하여 하나 이상의 검색 결과를 생성할 수 있다. 각각의 검색 결과는 복수의 노드 중 한 노드에 대응할 수 있다. 상술한 바와 같이, 외부 질의 제약으로부터 질의 힌트를 사용하여 식별될 수 있는 내부 질의 제약에 매치하는 것으로서 식별되는 노드는 이후 외부 질의 제약에 매치하는 노드를 식별하는 것에 기반하여 사용될 수 있다. 외부 질의 제약에 매치하는 것으로서 식별된 노드는 점수화(그리고 가능하게는 순위화)될 수 있고, 이후 하나 이상(예컨대, 임계 수)이 사용자에게 디스플레이하기 위해 검색 결과로서 생성될 수 있다. 검색 결과가 제시될 수 있고 생성된 검색 결과가 디스플레이되는 검색 결과 페이지로서 질의중인 사용자에게 송신될 수 있다. 예로서 제한 없이, 구조화된 질의 "Photos of females taken in Palo Alto"에 응답하여, 도 5c에 도시된 바와 같이, 소셜 네트워킹 시스템(160)은 질의 힌트를 사용하여 내부 질의 제약에 매치하는 제1 노드 세트를 식별할 수 있다. 이 예에서, 내부 제약은 여성인 사용자들을 요청하고, 질의 힌트는 제1 세트에서 식별되는 다수의 사용자가 Palo Alto의 도시의 사진에도 또한 태그되는 사용자들이도록 사용될 수 있다. 다음으로, 소셜 네트워킹 시스템(160)은 외부 질의 제약에 매치하는 제2 노드 세트를 식별할 수 있다. 이 예에서, 외부 제약은 Palo Alto에서 찍힌 제1 세트 내 사용자의 사진을 요청한다. 이후, 하나 이상의 검색 결과는 제2 노드 세트에서 식별되는 노드들에 기반하여 생성될 수 있다. 생성된 검색 결과가 이후 송신될 수 있고 구조화된 질의 "Photos of females taken in Palo Alto"에 대응하는 검색 결과 페이지의 일부로서 질의중인 사용자에게 디스플레이될 수 있다. 검색 결과 페이지는, 예컨대 제2 세트에서 식별되는 노드들에 대응하는 사진의 썸네일로서, 검색 결과를 디스플레이할 수 있다. 비록 본 명세서는 특정 방식으로 특정 검색 결과를 생성하는 것을 기술하지만, 본 명세서는 임의의 적절한 방식으로 임의의 적절한 검색 결과를 생성하는 것을 고려한다.
도 6은 내부 제약과 외부 제약을 가진 검색 질의에 응답하여 검색 결과를 생성하기 위한 예시적인 방법(600)을 도시한다. 이 방법은 단계 610에서 시작할 수 있고, 이때 소셜 네트워킹 시스템(160)은 복수의 노드(예컨대, 사용자 노드(202) 또는 컨셉 노드(204)) 및 노드들을 연결하는 복수의 에지(206)를 포함하는 소셜 그래프(200)에 액세스할 수 있다. 2개의 노드 사이의 각각의 에지는 노드들 사이의 이격도 1도를 나타낼 수 있다. 노드는 온라인 소셜 네트워크와 관련된 제1 사용자에 대응하는 제1 노드(예컨대, 제1 사용자 노드(202))를 포함할 수 있다. 또한, 노드는 온라인 소셜 네트워크와 관련된 제2 사용자 또는 컨셉에 각각 대응하는 복수의 제2 노드를 포함할 수 있다. 단계 620에서, 소셜 네트워킹 시스템(160)은 복수의 노드로부터의 하나 이상의 선택된 노드 및 복수의 에지로부터의 하나 이상의 선택된 에지에 대한 레퍼런스를 포함하는 구조화된 질의를 제1 사용자로부터 수신할 수 있다. 단계 630에서, 소셜 네트워킹 시스템(160)은 구조화된 질의에 기반하여 질의 명령을 생성할 수 있다. 질의 명령은 제1 질의 제약 및 제2 질의 제약(예컨대, 내부 제약 및 외부 제약)을 포함한다. 단계 640에서, 소셜 네트워킹 시스템(160)은 제1 질의 제약에 매치하고 제2 질의 제약에 적어도 부분적으로 매치하는 제1 노드 세트를 식별할 수 있다. 단계 650에서, 소셜 네트워킹 시스템(160)은 제2 질의 제약에 매치하는 제2 노드 세트를 식별할 수 있다. 단계 660에서, 소셜 네트워킹 시스템(160)은 제1 노드 세트와 제2 노드 세트에 기반하여 하나 이상의 검색 결과를 생성할 수 있다. 각각의 검색 결과는 복수의 노드 중 한 노드에 대응할 수 있다. 적절한 경우, 특정 실시예는 도 6의 방법의 하나 이상의 단계를 반복할 수 있다. 비록 본 명세서는 특정 순서로 발생하는 것으로서 도 6의 방법의 특정 단계들을 기술하고 도시하지만, 본 명세서는 임의의 적절한 순서로 발생하는 도 6의 방법의 임의의 적절한 단계들을 고려한다. 게다가, 비록 본 명세서는 도 6의 방법의 특정 단계를 수행하는 특정 컴포넌트, 장치 또는 시스템을 기술하고 도시하지만, 본 명세서는 도 6의 방법의 임의의 적절한 단계를 수행하는 임의의 적절한 컴포넌트, 장치 또는 시스템의 임의의 적절한 조합을 고려한다.
특정 실시예로, 소셜 네트워킹 시스템(160)은 구조화된 검색 질의를 파싱하고 역 연산자를 포함하는 질의 명령을 생성할 수 있다. 소셜 네트워킹 시스템(160)과 관련된 객체의 버티컬(164)을 검색하는 프로세스는 역 연산자를 사용하여 향상될 수 있는데, 이때 제약들 중 하나는 그 역 제약을 포함하도록 수정될 수 있다. 가령 중첩형 검색 질의와 같이 내부 질의 제약과 외부 질의 제약 모두를 가진 구조화된 질의를 파싱할 때, 일반적인 질의 처리는 불충분한 수의 검색 결과를 생성할 수 있다. 이는 예컨대 내부 질의 제약이 너무 많은 결과를 생성하기 때문에 발생할 수 있고 이들 중 몇몇이 외부 질의 제약을 만족할 가능성을 감소시킬 수 있다. 예로서 제한 없이, 도 5d에 도시된 바와 같이, 가령 "Photos of me liked by people in China"와 같은 상대적으로 복잡한 구조화된 질의는 (intersect(photos_of:<me>, photos_liked_by:(users_from):<China>)))로서 파싱될 수 있다. 이런 파싱이 실행될 때, 파싱은 먼저 중국(China)에 위치한 사용자들을 식별하도록 사용자 버티컬(164)을 검색한 후 중국에서 식별된 사용자 중 한 명이 좋아하는 질의중인 사용자의 사진을 식별하도록 이런 결과를 사진 버티컬(164)로부터의 결과와 교차시킨다. 그러나, 사용자 버티컬(164)의 제1 검색은 중국의 수백 또는 심지어 수천의 사용자에 대응하는 결과를 생성할 수 있고, 이들 중 아무도 질의중인 사용자의 임의의 사진을 좋아하지 않았을 수 있다. 대안으로, 이런 구조화된 질의는 역 연산자를 사용하여 파싱될 수 있다. 특정 실시예로, 임의의 연산자는 특정한 역 연산자에 대응할 수 있다. 예로서 제한 없이, "liked_by" 연산자를 사용하는 대신에, 구조화된 질의는 그 역 연산자, 즉 "likers_of" 연산자를 포함하도록 파싱될 수 있다. 즉, 중국의 사용자가 좋아한 사진을 검색하는 대신에, 질의중인 사용자의 사진들의 "likers_of"를 검색하도록 파싱될 수 있다. 예컨대, 구조화된 질의 "Photos of me liked by people in China"는 (intersect(photos_of: <me>, photos_liked_by:(intersect(likers_of(photos_of: <me>), users_from: <China>))))로 파싱될 수 있다. 이는 사진 버티컬(164)이 먼저 질의중인 사용자의 사진을 식별하도록 액세스되도록 질의의 처리 순서를 변경할 수 있고, 이후 이런 사진을 좋아하는 사람(likers)이 식별될 수 있다. 다음으로, 사용자 버티컬(164)은 필요하다면 어느 좋아하는 사람이 중국에 사는지를 식별하도록 검색될 수 있다. 이런 방식으로, 역 연산자는 제1 버티컬(164)의 검색이 더 나은 결과를 생성하도록 사용될 수 있다. 또한, 이를 통해 소셜 네트워킹 시스템(160)은 더 나은 검색 결과를 생성할 수 있고 이런 결과를 생성하기 위한 처리 효율을 향상시킬 수 있다. 비록 본 명세서는 특정 방식으로 구조화된 질의에 매치하는 객체를 식별하는 것을 기술하지만, 본 명세서는 임의의 적절한 방식으로 구조화된 질의에 매치하는 객체를 식별하는 것을 고려한다.
특정 실시예로, 객체-타입에 대응하는 버티컬(164)에 대한 검색 인덱스는 역 인덱스(inverted index)를 포함할 수 있다. 제1 객체-타입에 대한 역 인덱스는 제2 객체-타입과 관련된 질의 용어를 제1 객체-타입의 하나 이상의 객체와 매치할 수 있다. 예로서 제한 없이, 게시물 버티컬(164)에서 역 인덱스는 가령 (posts_liked_by:<user>)와 같이 <user>로부터의 사용자와 관련된 질의 용어를 <user>가 좋아하는 게시물의 목록과 매치할 수 있다. 마찬가지로, 역 인덱스는 가령 (posts_commented_by:<user>)와 같이 <user>로부터의 사용자와 관련된 질의 용어를 <user>가 코멘트한 게시물의 목록과 매치할 수 있다. 또 다른 예로서 제한 없이, 사진 버티컬(164)에서 역 인덱스는 가령 (photos_liked_by:<user>)와 같이 <user>로부터의 사용자와 관련된 질의 용어를 <user>가 좋아하는 사진의 목록과 매치할 수 있다. 마찬가지로, 역 인덱스는 <user>로부터의 사용자와 관련된 질의 용어(photos_of:<user>)를 <user>가 태그되는 사진의 목록과 매치할 수 있다. 특정 실시예로, 객체-타입에 대응하는 버티컬(164)에 대한 역 인덱스는 객체-타입과 관련된 질의 용어를 객체-타입의 하나 이상의 객체와 매치할 수 있다. 예로서 제한 없이, 사용자 버티컬(164)에서 역 인덱스는 가령 (friends:<user>)와 같이 <user>로부터의 사용자와 관련된 질의 용어를 <user>의 (즉, 사용자 객체-타입의) 친구의 목록과 매치할 수 있다. 특정 실시예로, 역 인덱스는 질의 용어에 대한 일대다(one to many)로 매치할 수 있다. 예로서 제한 없이, 사진 버티컬(164)의 역 인덱스는 사용자가 태그되는 많은 사진(예컨대, 100장 이상의 사진)과 사용자를 매치할 수 있다. 비록 본 명세서는 특정 방식으로 버티컬(164)을 검색하는 것을 기술하지만, 본 명세서는 임의의 적절한 방식으로 버티컬을 검색하는 것을 고려한다.
특정 실시예로, 객체-타입에 대응하는 버티컬(164)에 대한 검색 인덱스는 포워드 인덱스를 포함할 수 있다. 제1 객체-타입에 대한 포워드 인덱스는 제1 객체-타입과 관련된 질의 용어를 제2 객체-타입의 하나 이상의 객체와 매치할 수 있다. 예로서 제한 없이, 게시물 버티컬(164)에서 포워드 인덱스는 가령 (likers_of:<post>)와 같이 <post>로부터의 게시물과 관련된 질의 용어를 <post>를 좋아하는 사용자의 목록과 매치할 수 있다. 마찬가지로, 포워드 인덱스는 가령 (author_of:<post>)와 같이 <post>로부터의 게시물과 관련된 질의 용어를 <post>의 작성자인 사용자와 매치할 수 있다. 또 다른 예로서 제한 없이, 사진 버티컬(164)에서 포워드 인덱스는 가령 (tagged_in:<photo>)와 같이 <photo>로부터의 사진과 관련된 질의 용어를 <photo>에 태그되는 사용자의 목록과 매치할 수 있다. 마찬가지로, 포워드 인덱스는 <photo>로부터의 사진과 관련된 질의 용어(commenters_of:<photo>)를 <photo>에 코멘트한 사용자의 목록과 매치할 수 있다. 특정 실시예로, 포워드 인덱스는 질의 용어에 대한 일-대-일 매칭을 포함할 수 있다. 예로서 제한 없이, 사진 버티컬(164)의 포워드 인덱스는 사진을 사진의 소유자(예컨대, 소셜 네트워킹 시스템(160)으로 사진을 업로드된 사용자)와 매치할 수 있다. 특정 실시예로, 포워드 인덱스는 질의 용어에 대한 일-대-몇몇(one-to-few)의 매칭을 포함할 수 있다. 예로서 제한 없이, 사진 버티컬(164)에서 포워드 인덱스는 사진에 태그되는 몇몇의 사용자(예컨대, 10명 미만의 사용자)와 사진을 매치할 수 있다. 비록 본 명세서는 특정 방식으로 버티컬(164)을 검색하는 것을 기술하지만, 본 명세서는 임의의 적절한 방식으로 버티컬을 검색하는 것을 고려한다.
특정 실시예로, 복수의 질의 제약을 식별하도록 구조화된 질의를 파싱한 후, 소셜 네트워킹 시스템(160)은 질의 제약 중 하나와 관련된 역 제약을 식별할 수 있다. 역 제약은 구조화된 질의를 실행할 때 버티컬(164)이 검색되는 순서를 기본적으로 역전시킨다. 특정 질의 제약이 제2 객체-타입과 특정 연결을 가진 제1 객체-타입의 검색 결과를 요청한다면, 이에 대응하는 역 제약은 제1 객체-타입과 연결을 가진 제2 객체-타입의 검색 결과를 요청할 수 있다. 역 제약을 사용하는 것은 내부 질의 제약이 너무 많은 결과를 생성할 때 중첩형 질의에 특히 유용할 수 있고, 이들 중 몇몇이 외부 질의 제약을 만족할 가능성을 감소시킬 수 있다. 질의 제약이 특정한 객체-타입에 대한 것이라면, 역 제약은 다른 객체-타입이나 동일한 객체-타입에 대한 것일 수 있다. 특정 실시예로, 질의 제약은 구조화된 질의에서 참조되는 선택된 에지 중 하나로 제2 노드-타입의 하나 이상의 노드와 각각 연결되는 제1 노드-타입의 하나 이상의 노드에 대응하는 제1 객체-타입에 대한 것일 수 있고, 역 제약은 구조화된 질의에서 참조되는 선택된 에지 중 하나로 제1 노드-타입의 하나 이상의 노드와 연결되는 제2 노드-타입의 하나 이상의 노드에 대응하는 제2 객체-타입에 대한 것일 수 있다. 예로서 제한 없이, 제1 제약이 (posts_liked_by:<user>)에 대한 것이라면, 이런 질의 제약은 좋아요-타입 에지(206)로 특정 사용자 노드(202)(또는 사용자 노드(202)의 타입)와 연결되는 게시물 객체에 대응하는 컨셉 노드(204)를 검색할 것이다. 제1 제약에 대한 역 제약은 예컨대 좋아요-타입 에지(206)로 특정 게시물에 대응하는 특정 컨셉 노드(204)(또는 컨셉 노드(204)의 타입)와 연결되는 사용자 노드(202)를 검색하는, 예컨대 (likers_of:<posts>)일 수 있다. 즉, "liked_by" 연산자를 사용하여 사용자가 좋아한 사진을 검색하는 대신에, 역 제약은 "likers_of" 연산자를 사용하여 사진을 좋아하는 사용자를 검색할 것이다. 특정 실시예로, 질의 제약 및 그의 역 제약 모두는 동일한 객체-타입에 대한 것일 수 있다. 또 다른 예로서 제한 없이, 제1 제약이 (followers_of:<user>)에 대한 것이라면, 이런 질의 제약은 제2 사용자를 구독하거나 팔로어하는 한 명 이상의 제1 사용자를 검색할 것이다. 제1 제약에 대한 역 제약은 제1 사용자가 팔로어하는(제1 타입의 사용자가 팔로어하는) 한 명 이상의 제2 사용자를 검색하는, 예컨대 (users_followed_by:<user>)일 수 있다. 비록 본 명세서는 특정 방식으로 특정한 역 제약을 식별하는 것을 기술하지만, 본 명세서는 임의의 적절한 방식으로 임의의 적절한 역 제약을 식별하는 것을 고려한다.
특정 실시예로, 소셜 네트워킹 시스템(160)은 역 제약을 포함하는 구조화된 질의에 기반하여 질의 명령을 생성할 수 있다. 구조화된 질의의 파싱이 제1 질의 제약 및 하나 이상의 제2 질의 제약을 식별하는 경우, 소셜 네트워킹 시스템(160)은 제1 질의 제약에 대한 역 제약을 식별한 후 역 제약 및 하나 이상의 제2 질의 제약을 포함하는 질의 명령을 생성할 수 있다. 특정 실시예로, 소셜 네트워킹 시스템(160)이 역 제약을 포함하는 질의 명령을 생성하는 것은 역 인덱스 대신에 포워드 인덱스를 검색하는 질의 명령을 생성하는 것을 포함할 수 있다. 예로서 제한 없이, 제1 질의 제약이 (posts_authored_by:<user>)이라면, 이런 질의 제약은 <user>로부터 <user>가 작성한 게시물의 목록과 매치하는 역 인덱스를 사용하여 게시물 버티컬(164)을 검색할 수 있다. 이후, 소셜 네트워킹 시스템(160)은 <posts>로부터 <posts>를 작성한 사용자의 목록과 매치하는 포워드 인덱스를 사용하여 사용자 인덱스(164)를 검색할 수 있는, 예컨대 (authors_of:<post>)일 수 있는, (posts_authored_by:<user>)의 역 제약을 사용하는 질의 명령을 생성할 수 있다. 특정 실시예로, 제1 질의 제약은 내부 제약 및 외부 제약을 가지는 중첩형 질의 그 자체일 수 있다. 이 경우, 생성된 질의 명령은 제1 역 제약과 내부 제약의 교집합(intersect)을 포함할 수 있다. 예로서 제한 없이, 구조화된 질의 "Photos of me liked by people in China"에 응답하여, 소셜 네트워킹 시스템(160)은 가령 intersect(photos_of:<me>, photos_liked_by: (users_from: <China>))와 같은 질의 명령을 생성하도록 구조화된 질의를 파싱할 수 있다. 그러나, 이런 질의 명령을 실행하는 것은 내부 제약 (users_from:<China>)이 외부 제약 (photos_liked_by:<users>)을 만족하지 않은 다수의 사용자 노드(202)를 식별할 수 있기 때문에 불충분한 수의 검색 결과를 생성할 수 있다. 따라서, 이후, 소셜 네트워킹 시스템(160)은 가령 (intersect(photos_of: <me>, photos_liked_by: (intersect(likers_of(photos_of: <me>), user_from: <China>))))와 같이 역 제약을 사용하는 질의 명령을 생성할 수 있다. 이 예에서, 외부 제약으로부터의 "liked_by" 연산자에 기반하여, 소셜 네트워킹 시스템(160)은 내부 제약에서 역 "likers_of" 연산자를 포함하도록 질의 명령을 수정했고, 이를 내부 질의 제약 (users_from:<China>)과 교차했다. 이는 중국의 사용자가 좋아한 사진을 검색하는 대신에 질의중인 사용자의 사진의 "likers_of"인 사용자들을 검색하고 중국의 사용자들에 대한 검색과 이런 결과를 교차시키도록 객체-타입이 버티컬(164)에서 검색되는 순서를 역전시킬 것이다. 특정 실시예로, 역 제약을 사용하여 생성되는 질의 명령은 질의 명령이 식별된 노드의 제1 개수가 내부 제약에 매치하거나 내부 또는 외부 제약에 매치하고 식별된 노드의 제2 개수가 제약들 모두나 외부 제약만에 매치하거나 이들의 임의의 조합이도록 요구하기 위해 예컨대 WAND 및 SOR 연산자를 통합함으로써 상술한 바와 같이 질의 힌트를 사용하여 또한 생성될 수 있다. 예컨대, 제1 및 제2 개수는 실수, 퍼센트 또는 분수일 수 있다. 비록 본 명세서는 특정 방식으로 특정 질의 명령을 생성하는 것을 기술하지만, 본 명세서는 임의의 적절한 방식으로 임의의 적절한 질의 명령을 생성하는 것을 고려한다.
특정 실시예로, 역 제약을 포함하는 질의 명령에 응답하여, 소셜 네트워킹 시스템(160)은 역 제약에 매치하는 제1 노드 세트를 식별할 수 있다. 상술한 바와 같이, 소셜 네트워킹 시스템(160)은 질의 명령의 하나 이상의 추가 질의 제약에 각각 매치하는 하나 이상의 제2 노드 세트를 또한 식별할 수 있다. 매치하는 노드는 예컨대 상술한 바와 같이 검색 인덱스를 참조함으로써 임의의 적절한 방식으로 식별될 수 있다. 특정 실시예로, 소셜 네트워킹 시스템(160)은 제1 노드 세트의 하나 이상의 노드와 구조화된 질의에서 참조되는 하나 이상의 선택된 에지로 연결되는 복수의 노드 중 하나 이상의 노드를 식별할 수 있다. 예로서 제한 없이, 구조화된 질의 "Photos of me liked by people in China"에 응답하여, 소셜 네트워킹 시스템(160)은 가령 (intersect(photos_of: <me>, photos_liked_by: (intersect(likers_of(photos_of: <me>), users_from: <China>))))와 같은 역 제약을 사용하여 질의 명령을 생성할 수 있다. 여기서, 구조화된 질의에서 "me" 및 "China"에 대한 레퍼런스는 특정한 소셜 그래프 요소, 즉 질의중인 사용자에 대응하는 사용자 노드(202) 및 위치 "China"에 대응하는 컨셉 노드(204)를 말한다. 마찬가지로, "photos of me" 및 "liked by"에 대한 레퍼런스는 참조된 노드를 소정의 검색 결과와 연결하는 특정 에지-타입을 말한다. 이 경우, 질의 제약 (photos_liked_by: (intersect(likers_of(photos_of: <me>), user_from: <China>))) 그 자체는 중첩형 질의이며, 이때 내부 제약은 질의중인 사용자의 사진의 "likers_of"인 사용자들 및 중국 출신의 사용자들을 요청한다. 제약 (likers_of(photos_of: <me>))에 대해 매치하는 사용자 노드(202)를 식별하도록 사용자 버티컬(164)을 검색할 때, 소셜 네트워킹 시스템(160)은 상대적으로 작은 노드 세트를 식별할 수 있는데, 이는 질의중인 사용자의 사진을 좋아했던 사용자의 수가 상대적으로 작은 수(예컨대, 수십 내지 수백 명의 사용자)일 가능성이 있기 때문이다. 다음으로, 소셜 네트워킹 시스템(160)은 제약 (users_from: <China>)에 대해 매치하는 사용자 노드(202)를 식별하도록 사용자 버티컬(164)을 검색할 수 있다. 제약 (users_from: <China>)는 수천 또는 수백만의 결과를 생성할 수 있고 이들 중 대부분은 질의 명령을 만족하지 않을 가능성이 있음에 유의하자. 그러나, 이를 역 제약으로 식별된 객체와 교차함으로써, 질의중인 사용자의 사진을 좋아한 중국 출신의 사용자들에 대응하는 더 합리적인 크기의 객체 세트가 식별된다. 일단 이런 내부 제약이 해결되면, 식별된 사용자의 세트는 내부 제약에 의해 식별되는 사용자가 좋아한 사진을 식별하는 것인 외부 제약을 해결하는데 사용될 수 있다. 이런 사진 세트는 이후 제약 (photos_of: <me>)의 결과와 교차될 수 있으며, 따라서 중국 출신의 사용자가 좋아한 질의중인 사용자의 사진 세트가 식별된다. 비록 본 명세서는 특정 방식으로 특정한 역 제약에 매치하는 것으로서 특정한 소셜 그래프 요소를 식별하는 것을 기술하지만, 본 명세서는 임의의 적절한 방식으로 임의의 적절한 역 제약에 매치하는 것으로서 임의의 적절한 소셜 그래프 요소를 식별하는 것을 고려한다.
특정 실시예로, 소셜 네트워킹 시스템(160)은 역 질의 제약에 매치하는 것으로서 식별되는 제1 노드 세트 및 하나 이상의 질의 제약에 각각 매치하는 하나 이상의 제2 노드 세트에 기반하여 하나 이상의 검색 결과를 생성할 수 있다. 각 검색 결과는 복수의 노드 중 한 노드에 대응할 수 있다. 질의 명령에 매치하는 것으로 식별된 노드는 점수화(그리고 가능하게는 순위화)될 수 있고, 이후 하나 이상(예컨대, 임계 수)은 사용자에게 디스플레이하기 위해 검색 결과로서 생성될 수 있다. 검색 결과는 생성된 검색 결과가 디스플레이되는 검색 결과 페이지로서 질의중인 사용자에게 제시되고 송신될 수 있다. 예로서 제한 없이, 도 5d에 도시된 바와 같이, 구조화된 질의 "Photos of me liked by people in China"에 응답하여, 소셜 네트워킹 시스템(160)은 역 제약에 매치하는 제1 노드 세트를 식별할 수 있다. 이 예에서, (역 제약에 의해 수정되는) 내부 제약은 질의중인 사용자의 사진을 또한 좋아하는 사람인 중국 출신의 사용자를 요청한다. 다음으로, 소셜 네트워킹 시스템(160)은 외부 질의 제약에 매치하는 제2 노드 세트를 식별할 수 있다. 이 예에서, 외부 제약은 제1 세트 내 사용자들 중 한 명이 좋아하는 질의중인 사용자의 사진을 요청한다. 이후, 하나 이상의 검색 결과는 제2 노드 세트에서 식별되는 노드에 기반하여 생성될 수 있다. 이후, 생성된 검색 결과는 구조화된 질의 "Photos of me liked by people in China"에 대응하는 검색 결과 페이지의 일부로서 질의중인 사용자에게 송신되고 디스플레이될 수 있다. 검색 결과 페이지는 예컨대 제2 세트에서 식별되는 노드에 대응하는 사진의 썸네일로서 검색 결과를 디스플레이할 수 있다. 특정 실시예로, 소셜 네트워킹 시스템(160)은 제1 노드 세트와 제2 노드 세트 모두에서 식별되는 각 노드에 대한 검색 결과를 생성할 수 있다. 특정 실시예로, 소셜 네트워킹 시스템(160)에서 소셜 네트워킹 시스템(160)에 의해 생성된 각 검색 결과는 제2 노드 세트 내 하나 이상의 노드와 구조화된 질의에서 참조되는 하나 이상의 선택된 에지로 연결되는 제1 노드 세트 중 한 노드에 대응할 수 있다(또한 그 역도 같다). 비록 본 명세서는 특정 방식으로 특정 검색 결과를 생성하는 것을 기술하지만, 본 명세서는 임의의 적절한 방식으로 임의의 적절한 검색 결과를 생성하는 것을 고려한다.
특정 실시예로, 소셜 네트워킹 시스템(160)은 초기의 질의 명령이 검색 결과의 임계 수 미만으로 생성할 때 역 제약을 포함하는 질의 명령을 생성할 수 있다. 중첩형 검색 질의를 파싱할 때, 일반적인 질의 처리는 불충분한 수의 검색 결과를 생성할 수 있다. 이는 예컨대 내부 질의 제약이 너무 많은 결과를 생성하기 때문에 발생할 수 있고 이들 중 몇몇이 외부 질의 제약을 만족할 가능성을 감소시킬 수 있으므로, 검색 결과가 거의 생성되지 않을 수 있다. 역 제약은 구조화된 질의의 본래의 파싱이 불충분한 수의 검색 결과를 생성하는 질의 명령을 생성하는 특정 시나리오에서 사용될 수 있다. 특정 실시예로, 역 제약은 특정 질의 제약이 구조화된 질의의 파싱 중에 식별될 때 사용될 수 있다. 특정 질의 제약은 역 제약을 사용하는 치환(substitution)에 적합한 것으로 이미 식별되었을 수 있다. 즉, 특정 질의 제약은 너무 많은 객체를 식별할 가능성이 있는 것으로 플래그(flagged)될 수 있어서, 역 제약이 그 자리에 사용된다. 예로서 제한 없이, 소셜 네트워킹 시스템(160)은 질의 제약에 의해 생성된 세트가 커질 가능성이 있는 질의 제약의 목록(예컨대, (users_from:<country>) 또는 다수의 좋아하는 사람을 가진 페이지에 대한 (likers_of:<page>))을 (예컨대, 집계기(320)에) 저장할 수 있다. 목록에서 질의 제약이 질의의 파싱 중에 식별되는 경우, 소셜 네트워킹 시스템(160)은 이후 목록의 제약의 역 제약을 사용하여 질의 명령을 자동으로 생성할 수 있다. 특정 실시예로, 역 제약은 질의 힌트가 중첩형 검색 질의를 파싱하는데 사용될 때, 예컨대 내부 질의 제약이 외부 질의 제약을 만족하지 않는 다수의 객체를 식별할 때, 사용될 수 있다. 역 제약은 구조화된 질의의 초기 파싱이 외부 제약을 만족하지 않는 다수의 객체를 요청하는 내부 제약을 가지는 질의 명령을 생성하는 시나리오에서 특히 유용할 수 있다. 예로서 제한 없이, 소셜 네트워킹 시스템(160)은 제1 질의 제약을 만족하는 다수의 노드를 결정할 수 있다. 노드의 수가 임계 노드 수보다 크다면, 소셜 네트워킹 시스템(160)은 제1 역 제약을 가진 질의 명령을 생성할 수 있다. 그렇지 않다면, 소셜 네트워킹 시스템(160)은 제1 질의 제약을 가진 질의 명령을 생성할 수 있다. 즉, 구조화된 질의의 본래의 파싱이 너무 많은 객체를 식별하는 질의 명령을 생성한다면, 역 제약은 생성되는 결과의 수를 좁히는데 사용될 수 있다. 또 다른 예로서 제한 없이, 소셜 네트워킹 시스템(160)은 구조화된 질의에 기반하여 예비 질의 명령(preliminary query command)을 생성할 수 있다. 이런 예비 질의 명령은 제1 질의 제약 및 하나 이상의 제2 질의 제약을 포함할 수 있다. 이 시나리오에서, 예비 질의 명령은 구조화된 질의의 디폴트 파싱 또는 일반 파싱으로 간주될 수 있다. 이후, 소셜 네트워킹 시스템(160)은 예비 질의 명령에 기반하여 제1 검색 결과 세트를 생성할 수 있다. 제1 검색 결과 세트가 임계 수의 검색 결과 미만이라면, 소셜 네트워킹 시스템(160)은 제1 역 제약을 가진 질의 명령을 생성한 후, 제1 역 제약을 가진 질의 명령에 기반하여 (예컨대, 역 제약과 외부 제약에 매치하는 새로운 노드 세트를 식별함으로써) 제2 검색 결과 세트를 생성할 수 있다. 즉, 구조화된 질의의 본래의 파싱이 너무 적은 검색 결과를 생성한다면, 역 제약은 검색 결과를 향상시키는데 사용될 수 있다. 비록 본 명세서는 특정 방식으로 특정 질의 명령을 생성하는 것을 기술하지만, 본 명세서는 임의의 적절한 방식으로 임의의 적절한 질의 명령을 생성하는 것을 고려한다.
도 7은 역 연산자를 사용하여 검색 질의를 파싱하는 예시적인 방법(700)을 도시한다. 이 방법은 단계 710에서 시작할 수 있는데, 이때 소셜 네트워킹 시스템(160)은 복수의 노드(예컨대, 사용자 노드(202) 또는 컨셉 노드(204)) 및 노드들을 연결하는 복수의 에지(206)를 포함하는 소셜 그래프(200)에 액세스할 수 있다. 2개의 노드 사이의 각 에지는 이들 사이의 이격도 1도를 나타낼 수 있다. 노드는 온라인 소셜 네트워크와 관련된 제1 사용자에 대응하는 제1 노드(예컨대, 제1 사용자 노드(202))를 포함할 수 있다. 또한, 노드는 온라인 소셜 네트워크와 관련된 제2 사용자 또는 컨셉에 각각 대응하는 복수의 제2 노드를 포함할 수 있다. 단계 720에서, 소셜 네트워킹 시스템(160)은 복수의 노드로부터의 하나 이상의 선택된 노드 및 복수의 에지로부터의 하나 이상의 선택된 에지에 대한 레퍼런스를 포함하는 구조화된 질의를 제1 사용자로부터 수신할 수 있다. 단계 730에서, 소셜 네트워킹 시스템(160)은 제1 질의 제약 및 하나 이상의 제2 질의 제약을 식별하도록 구조화된 질의를 파싱할 수 있다. 단계 740에서, 소셜 네트워킹 시스템(160)은 제1 질의 제약과 관련된 제1 역 제약을 식별할 수 있다. 단계 750에서, 소셜 네트워킹 시스템(160)은 구조화된 질의에 기반하여 질의 명령을 생성할 수 있다. 질의 명령은 제1 역 제약 및 하나 이상의 제2 질의 제약을 포함할 수 있다. 또한, 질의 명령은 제1 질의 제약을 포함할 수 있다. 단계 760에서, 소셜 네트워킹 시스템(160)은 질의 명령에 대응하는 하나 이상의 검색 결과를 생성할 수 있다. 각 검색 결과는 복수의 노드 중 한 노드에 대응할 수 있다. 적절한 경우, 특정 실시예는 도 7의 방법의 하나 이상의 단계를 반복할 수 있다. 비록 본 명세서는 특정 순서로 발생하는 것으로서 도 7의 방법의 특정 단계들을 기술하고 도시하지만, 본 명세서는 임의의 적절한 순서로 발생하는 도 7의 방법의 임의의 적절한 단계들을 고려한다. 게다가, 비록 본 명세서는 도 7의 방법의 특정 단계를 수행하는 특정 컴포넌트, 장치 또는 시스템을 기술하고 도시하지만, 본 명세서는 도 7의 방법의 임의의 적절한 단계를 수행하는 임의의 적절한 컴포넌트, 장치 또는 시스템의 임의의 적절한 조합을 고려한다.
의도에 기초한 검색 결과의 생성
특정 실시예로, 질의하는 사용자로부터 수신된 구조화 질의에 응답하여, 소셜 네트워킹 시스템(160)은 구조화 질의에 대응하는 하나 이상의 검색 결과를 생성할 수 있다. 소셜 네트워킹 시스템(160)은 구조화 질의를 충족하거나 아니면 구조화 질의에 일치하는 객체 (예컨대, 사용자, 사진, 프로필 페이지 (또는 프로필 페이지의 컨텐츠) 등)를 식별할 수 있다. 이후 각각의 식별된 객체에 대응하는 검색 결과가 생성될 수 있다. 예로서 제한 없이, 구조화 질의 "Photos of Matt and Stephanie"에 응답하여, 소셜 네트워킹 시스템(160)은 사용자들 "Matt"과 "Stephanie" 모두가 사진에서 태그되는 사진을 식별할 수 있다. 이 사진에 대응하는 검색 결과는 이후 생성되어 사용자에게 전송될 수 있다. 특정 실시예로, 각각의 검색 결과는 하나 이상의 객체와 연관될 수 있고, 구조화 질의의 각각의 질의 제약은 특정 검색 결과와 연관된 하나 이상의 객체에 의해 충족될 수 있다. 예로서 제한 없이, 이전의 예로 계속하면, 구조화 질의 "Photos of Matt and Stephanie"에 응답하여, 소셜 네트워킹 시스템(160)은 (구조화 질의에서 모두 레퍼런스되는) 사용자들 "Matt"과 "Stephanie"가 사진에서 태그되는 (즉, 그들의 사용자 노드(202)는 사진에 대응하는 컨셉 노드(204)로 태그-인-타입 에지(206)에 의해 연결되는) 사진에 대응하는 검색 결과를 생성하도록 실행될 수 있는 질의 명령(intersect(photos_of:<Matt>), (photos_of:<Stephanie>))을 생성하기 위해 질의를 파싱할 수 있다. 바꿔 말하면, (photos_of:<Matt>) 및 (photos_of:<Stephanie>)에 대한 제약은 그것이 사용자 "Matt"과 "Stephanie"를 위한 사용자 노드(202)에 연결되기 때문에 사진에 의해 모두 충족될 수 있다. 비록 본 명세서는 특정 방식으로 검색 결과를 생성하는 것을 기술하지만, 본 명세서는 임의의 적절한 방식으로 검색 결과를 생성하는 것을 고려한다.
특정 실시예로, 소셜 네트워킹 시스템(160)은 질의하는 사용자의 검색 의도에 기초하여 검색 결과를 생성할 수 있다. 검색 결과 (예컨대, 식별된 노드 또는 그들의 대응하는 프로필 페이지)는 점수화(score) (또는 순위화(rank))될 수 있고, 검색 결과를 생성하도록 사용되는 특정 검색 알고리즘에 의해 결정되는 것처럼, 검색 질의에 대한 그들의 상대적인 연관도(degree of relevance)에 따라 사용자에게 제시될 수 있다. 검색 결과는 또한, 사용자에 대한 그들의 상대적인 연관도에 따라 점수화되고 사용자에게 제시될 수 있다. 특정 실시예로, 검색 결과를 점수화하는데 사용되는 검색 알고리즘은 질의하는 사용자의 검색 의도에 기초하여 변화될 수 있다. 검색 의도는 검색 질의의 타입 및/또는 사용자가 들어간 검색 모드의 타입과 관련되는 질의하는 사용자의 의도를 의미한다. 검색 질의에 응답하여, 소셜 네트워킹 시스템(160)은 검색 질의에 대한 하나 이상의 검색 의도를 결정할 수 있다. 검색 의도는 가령 예컨대, 검색 질의에서 레퍼런스되는 소셜 그래프 구성요소, 검색 질의 내의 용어, 질의하는 사용자와 연관된 사용자 정보, 질의하는 사용자의 검색 히스토리, 패턴 감지, 질의 또는 사용자에 관련된 다른 적절한 정보 또는 이들의 임의의 조합에 기초하는 것과 같이 다양한 방식으로 결정될 수 있다. 검색 결과를 생성하는데 사용되는 검색 알고리즘은, 하나의 질의에 응답하여 검색 결과가 순위화되는 방식이 다른 질의에 응답하여 검색 결과가 순위화되는 방식과 상이하도록 이러한 검색 의도에 기초하여 수정될 수 있다. 예로서 제한 없이, 질의하는 사용자가 질의하는 사용자가 데이트하는데 관심이 있는 다른 사용자를 식별하는데 관심이 있다면, 데이트 의도를 갖는 검색 질의에 응답하여 생성된 검색 결과는 결과를 순위화하여 그들이 "싱글"이라고 표시한 사용자들이 "연애중"이라고 표시한 사용자들 보다 더 높게 순위화되도록 할 수 있다. 유사하게, 질의하는 사용자가 일자리를 찾기 위해 네트워킹할 사용자를 식별하는데 관심이 있다면, 네트워킹 의도를 갖는 검색 질의에 응답하여 생성되는 검색 결과는 질의하는 사용자와 동일한 지리적 영역에 있는 회사에 근무하는 사용자가 지리적으로 멀리 떨어진 회사에 근무하는 사용자보다 높은 순위를 갖도록 순위화될 수 있다. 특정 실시예로, 검색 결과는 검색 엔진에 의해 구현되는 특정 점수화/순위화 알고리즘에 의해 점수화 또는 순위화될 수 있다. 예로서 제한 없이, 검색 질의 또는 사용자에 더 관련되는 검색 결과는 덜 관련되는 자원보다 높게 점수화될 수 있다. 연관도가 결정되는 방식은 소셜 네트워킹 시스템(160)에 의해 식별되는 검색 의도에 기초하여 수정될 수 있다. 특정 실시예로, 소셜 네트워킹 시스템(160)은 하나 이상의 검색 결과를 순위화할 수 있다. 검색 결과는 예컨대, 검색 결과에 대해 결정된 점수에 기초하여 순위화될 수 있다. 가장 관련된 결과 (예컨대, 가장 높은/좋은 점수)는 가장 높게 순위화되고, 잔존하는 결과는 그들의 점수/연관도에 상응하는 낮은 순위를 가질 수 있고, 가장 덜 관련된 결과가 가장 낮게 순위화되도록 한다. 비록 본 명세서는 특정 방식으로 검색 의도에 기초하여 검색 결과를 순위화하는 것을 기술하지만, 본 명세서는 임의의 적절한 방식으로 검색 의도에 기초하여 검색 결과를 순위화하는 것을 고려한다.
특정 실시예로, 소셜 네트워킹 시스템(160)은 구조화 질의에서 레퍼런스된 하나 이상의 선택된 노드 또는 선택된 에지에 기초하여 하나 이상의 검색 의도를 결정할 수 있다. 특정 소셜 그래프 구성요소는 특정 검색 의도에 대응할 수 있다. 특정 실시예로, 소셜 네트워킹 시스템(160)은 소셜 그래프 정보에 기초하여 특정 소셜 그래프 구성요소가 특정 검색 의도에 대응할 확률을 결정할 수 있다. 예로서 제한 없이, 특정 검색 의도가 특정 질의에 연관될 확률 p를 결정할 때, 확률의 계산은 또한 소셜 그래프 정보를 요소로 삼을 수 있다. 따라서, 특정 소셜 그래프 구성요소 X 및 질의 q가 주어질 때, 특정 검색 의도 I에 대응하는 확률은 p=(I│X,q)로 계산될 수 있다. 특정 실시예로, 소셜 네트워킹 시스템(160)은 구조화 질의에서 레퍼런스된 하나 이상의 노드 또는 하나 이상의 에지에 대응하는 하나 이상의 검색 의도를 식별할 수 있다. 각각의 검색 의도는 하나 이상의 소셜 그래프 구성요소에 대응할 수 있다. 유사하게, 특정 소셜 그래프 구성요소는 하나 이상의 검색 의도에 대응할 수 있다. 예로서 제한 없이, 구조화 질의 "Single women in Palo Alto"에 대해, 소셜 네트워킹 시스템(160)은 구조화 질의에서 레퍼런스된 싱글-타입 에지(206)는 데이트를 위한 의도에 대응할 수 있다고 결정할 수 있고, 질의하는 사용자가 데이트 또는 사교의 목적을 위해 사용자를 찾는데 관심이 있다고 표시할 수 있다. 유사하게, 구조화 질의에서 레퍼런스된 여성-타입 에지(206)는 또한, 데이트를 위한 의도에 대응할 수 있다. 즉, 질의하는 사용자가 "싱글" 및/또는 "여성"에 대응하는 소셜 그래프 구성요소를 레퍼런스하는 구조화 질의를 제출했기 때문에, 소셜 네트워킹 시스템(160)은 질의하는 사용자가 데이트 목적을 위한 객체를 찾는 시도를 하고 있다고 결정할 수 있고, 이후 이러한 결정된 의도에 기초하여 적절하게 그 뒤에 검색 결과를 점수화/순위화할 수 있다. 다른 예로서 제한 없이, 구조화 질의 "People who work as software engineers in Palo Alto"에 대해, 소셜 네트워킹 시스템(160)은 구조화 질의에서 레퍼런스되는 근무-타입 에지(206)는 네트워킹을 위한 의도에 대응할 수 있다고 결정할 수 있고, 질의하는 사용자가 네트워킹, 리크루팅 또는 채용 목적을 위한 의도에 관심이 있다고 표시할 수 있다. 비록 본 명세서는 특정 타입의 검색 의도를 기술하지만, 본 명세서는 임의의 적절한 타입의 검색 의도를 고려한다. 특정 실시예로, 소셜 네트워킹 시스템(160)은 패턴-감지 모델을 레퍼런스함으로써 하나 이상의 검색 의도를 식별할 수 있다. 예로서 제한 없이, 소셜 네트워킹 시스템(160)은 특정 검색 의도에 대응하는 특정 소셜 그래프 구성요소를 인덱싱하는 패턴-감지 모델을 접근할 수 있다. 인덱스는 예컨대, 특정 노드나 노드-타입 또는 특정 에지 또는 에지-타입이 독자적으로 또는 조합으로 특정 검색 의도에 대응한다는 것을 표시할 수 있다. 소셜 네트워킹 시스템(160)은 이후 구조화 질의에서 레퍼런스된 임의의 노드 또는 에지가 패턴-감지 모델에서 인덱스된 노드 또는 에지와 일치하는지 여부를 결정할 수 있다. 인덱스에서 발견된 각각의 일치하는 노드 또는 에지에 대해, 소셜 네트워킹 시스템(160)은 구조화 질의에서 레퍼런스된 일치하는 노드 또는 일치하는 에지에 대응하는 패턴-감지 모델에서 인덱스된 검색 의도를 식별할 수 있다. 비록 본 명세서는 특정 방식으로 특정 검색 의도를 결정하는 것을 기술하지만, 본 명세서는 임의의 적절한 방식으로 임의의 적절한 검색 의도를 결정하는 것을 고려한다.
특정 실시예로, 소셜 네트워킹 시스템(160)은 질의하는 사용자와 연관된 사용자-프로필 페이지로부터의 사용자 정보에 기초하여 하나 이상의 검색 의도를 결정할 수 있다. 질의하는 사용자는 소셜 그래프(200)의 특정 사용자 노드(202)와 연관될 수 있고, 특정 사용자-프로필 페이지와 또한 연관될 수 있다. 특정 사용자 정보는 특정 검색 의도에 대응할 수 있다. 예로서 제한 없이, 질의하는 사용자가 그의 사용자-프로필 페이지 상에 그가 "싱글" (즉, 연애중이 아님) 이라고 관계-상태 필드에 표시했다면, 소셜 네트워킹 시스템(160)은 이러한 사용자-프로필 정보가 데이트를 위한 의도에 대응한다고 결정할 수 있다. 소셜 네트워킹 시스템(160)은 이후 이러한 질의하는 사용자로부터의 특정 구조화 질의가 데이트의 검색 의도와 연관될 확률이 높다고 결정할 수 있다. 다른 예로서 제한 없이, 질의하는 사용자가 그녀의 사용자-프로필 페이지 상에 그녀가 "고용중이 아님"이라고 경력 필드에 표시했다면, 소셜 네트워킹 시스템(160)은 이러한 사용자-프로필 정보가 네트워킹을 위한 의도에 대응한다고 결정할 수 있다. 소셜 네트워킹 시스템(160)은 이후 이러한 질의하는 사용자로부터의 특정 구조화 질의가 네트워킹의 의도와 연관될 확률이 높다고 결정할 수 있다. 비록 본 명세서는 특정 방식으로 특정 사용자 정보에 기초하여 검색 의도를 결정하는 것을 기술하지만, 본 명세서는 임의의 적절한 방식으로 임의의 적절한 사용자 정보에 기초하여 검색 의도를 결정하는 것을 고려한다.
특정 실시예로, 소셜 네트워킹 시스템(160)은 구조화 질의에 응답하여 생성된 질의 명령의 하나 이상의 질의 제약에 기초하여 하나 이상의 검색 의도를 결정할 수 있다. 질의하는 사용자로부터 구조화 질의를 수신하는 것에 응답하여, 소셜 네트워킹 시스템(160)은 구조화 질의에 기초하여 질의 명령을 생성할 수 있고, 질의 명령은 하나 이상의 질의 제약을 포함할 수 있다. 특정 질의 제약은 특정 검색 의도에 대응할 수 있다. 예로서 제한 없이, 구조화 질의 "Single women in Palo Alto"에 대해, 소셜 네트워킹 시스템(160)은 가령 예컨대,(intersect(user_gender:<female>, user_location:<Palo Alto>, user_relationship_status:<single>))과 같은 질의 명령을 생성할 수 있다. 소셜 네트워킹 시스템(160)은 이후 (user_gender:<female>)에 대한 질의 제약은 데이트를 위한 의도에 대응한다고 결정할 수 있다. 비록 본 명세서는 특정 방식으로 특정 질의 제약에 기초하여 검색 의도를 결정하는 것을 기술하지만, 본 명세서는 임의의 적절한 방식으로 임의의 적절한 질의 제약에 기초하여 검색 의도를 결정하는 것을 고려한다.
특정 실시예로, 소셜 네트워킹 시스템(160)은 질의하는 사용자와 연관된 검색 히스토리에 기초하여 하나 이상의 검색 의도를 결정할 수 있다. 질의하는 사용자에 대해 이전에 결정된 검색 의도는 질의하는 사용자의 현재 검색 질의의 검색 의도에 일치할 확률이 높을 수 있다. 예로서 제한 없이, 질의하는 사용자가 소셜 네트워킹 시스템(160)이 데이트 의도에 대응한다고 결정한 검색 질의를 이전에 실행했다면, 다음의 검색 질의가 특정 검색 의도에 대응할 확률을 결정할 때, 소셜 네트워킹 시스템(160)은 질의하는 사용자가 데이트 의도를 갖는 검색 질의를 이전에 실행했기 때문에 데이트의 의도가 이후의 검색 질의에 대응할 확률이 상대적으로 높다고 결정할 수 있다. 다른 예로서 제한 없이, 질의하는 사용자가 소셜 네트워킹 시스템(160)이 네트워킹 의도에 대응한다고 결정한 검색 질의를 전혀 실행하지 않았다면, 다음의 검색 질의가 특정 검색 의도에 대응할 확률을 결정할 때, 소셜 네트워킹 시스템(160)은 질의하는 사용자가 네트워킹 의도를 갖는 검색 질의를 전혀 실행하지 않았기 때문에 네트워킹 의도가 다음 검색 질의에 대응할 확률이 상대적으로 낮다고 결정할 수 있다. 비록 본 명세서는 특정 방식으로 특정 검색 히스토리 정보에 기초하여 검색 의도를 결정하는 것을 기술하지만, 본 명세서는 임의의 적절한 방식으로 임의의 적절한 검색 히스토리에 기초하여 검색 의도를 결정하는 것을 고려한다.
특정 실시예로, 소셜 네트워킹 시스템(160)은 구조화 질의로부터 하나 이상의 n-그램에 기초하여 하나 이상의 검색 의도를 결정할 수 있다. n-그램은 구조화 질의로부터의 n 아이템의 임의의 연속 시퀀스(contiguous sequence)일 수 있고, 문자 스트링 또는 소셜 그래프 레퍼런스를 포함할 수 있다. 특정 n-그램은 특정 검색 의도에 대응할 수 있다. 비록 본 명세서는 특정 방식으로 특정 질의 용어에 기초하여 검색 의도를 결정하는 것을 기술하지만, 본 명세서는 임의의 적절한 방식으로 임의의 적절한 질의 용어에 기초하여 검색 의도를 결정하는 것을 고려한다.
특정 실시예로, 소셜 네트워킹 시스템(160)은 검색 의도에 기초하여 생성된 검색 결과를 점수화할 수 있다. 검색 의도는 가령 예컨대, 검색 수 또는 비율, 소셜 그래프 정보, 소셜 그래프 친밀도, 검색 히스토리, 다른 적절한 요소 또는 이들의 임의의 조합과 같은 하나 이상의 요소에 기초하여 점수화되어야 함을 표시할 수 있다. 검색 결과는 또한 광고하는 스폰서에 기초하여 점수화될 수 있다. 비록 본 명세서는 특정 방식으로 검색 결과를 점수화하는 것을 기술하지만, 본 명세서는 임의의 적절한 방식으로 검색 결과를 점수화하는 것을 고려한다.
특정 실시예로, 소셜 네트워킹 시스템(160)은 하나 이상의 검색 의도에 기초하여 검색 결과를 점수화할 수 있다. 소셜 네트워킹 시스템(160)은 하나 이상의 점수화 알고리즘을 사용하여 검색 결과를 점수화할 수 있고, 여기에서 검색 결과는 검색 질의에 대한 그들의 연관도에 기초하여 점수화될 수 있다. 일부의 경우에서, 사용자가 특정 질의 제약에 일치하는 사진 또는 사용자와 같은 특정 객체-타입에 대한 검색 요청을 제출할 수 있지만, 사용자는 정적인 순위에 의해 결정된 단순히 상위 N개의 객체보다는 검색 결과에서의 보다 많은 다양성을 원할 수 있다. 대신에, 질의하는 사용자는 사용자의 검색 의도를 반영하는 검색 결과를 보기를 희망할 수 있다. 따라서, 연관도의 결정 및 검색 결과의 점수화는 질의에 대한 결정된 검색 의도에 의해 수정되거나 맞춤화될 수 있다. 특정 점수화 알고리즘은 특정 검색 의도를 위해 사용될 수 있으며, 점수화 알고리즘의 특정 요소는 특정 검색 의도에 대해 어느 정도 가중화될 수 있다. 예로서 제한 없이, 이전의 예로 계속하면, 구조화 질의 "People who work as software engineers in Palo Alto"에 응답하여, 소셜 네트워킹 시스템(160)은 질의의 검색 의도 중 하나가 네트워킹을 위한 것이라고 결정할 수있다. 이러한 질의에 일치하는 식별된 사용자 노드(202)를 점수화할 때, 소셜 네트워킹 시스템(160)은 전형적으로 소셜 그래프 친밀도에 기초하여 점수화하며, 더 떨어진 연결보다 질의하는 사용자의 제1 도의 연결을 더 높게 점수화할 수 있다. 하지만, 사용자가 네트워킹 모적을 위해 질의한다면, 사용자는 질의하는 사용자 및 식별된 사용자 노드(202) 사이의 제1 도의 연결에 대해 신경쓰지 않을 수 있다. 예컨대, 소프트웨어 엔지니어로 근무한 경험을 더 많이 가진 사용자 또는 (특히 팔로 알토에 또한 거주하는 다른 소프트웨어 엔지니어인) 다른 사용자들에게 연결되며 또한, 소프트웨어 엔지니어인 사용자와 같은 사용자들을 식별하는 것은 네트워킹 목적에 있어서 더 유용할 수 있다. 따라서, 네트워킹 검색 의도에 기초하여 검색 결과를 점수화할 때, 소셜 네트워킹 시스템(160)은 소셜 그래프(200)에서 사용자의 거리에 더 낮은 가중치를 주고 사용자의 이력에 관련되고 근무와 연관된 연결에 관한 소셜 그래프 정보에 더 많은 가중치를 줄 수 있다. 비록 본 명세서는 특정 방식으로 검색 결과를 점수화하는 것을 기술하지만, 본 명세서는 임의의 적절한 방식으로 검색 결과를 점수화하는 것을 고려한다.
특정 실시예로, 검색 의도에 기초하여 검색 결과를 점수화하는 것은 검색 질의의 질의 제약을 충족하는 검색 결과의 객체의 카운트 또는 비율에 기초하여 검색 결과를 점수화하는 것을 포함할 수 있다. 검색 질의에 대한 식별된 검색 의도에 기초하여, 카운트, 비율 또는 이들의 임의의 조합은 검색 결과를 점수화할 때 요소로서 사용될 수 있다. 특정 질의 제약에 있어서, 제약은 특정 객체에 의해 다수 회 충족될 수 있다. 비록 본 명세서는 특정 방식으로 검색 결과를 점수화하는 것을 기술하지만, 본 명세서는 임의의 적절한 방식으로 검색 결과를 점수화하는 것을 고려한다.
특정 실시예로, 소셜 네트워킹 시스템(160)은 검색 질의의 질의 제약을 충족하는 검색 결과의 객체의 카운트에 기초하여 검색 결과를 점수화할 수 있다. 특정 경우에 있어서, 질의 제약에 일치하는 특정 객체는 사실 제약을 충족시키는 다수의 속성을 가질 수 있다. 예로서 제한 없이, 위치는 사용자에 의한 다수의 체크-인을 가질 수 있고, 사진은 사진에서 태그된 다수의 사용자들을 가질 수 있으며, 그룹은 그룹의 멤버인 다수의 사용자들을 가질 수 있는 등이 있다. 이러한 타입의 경우에 있어서, 얼마나 많은 횟수로 특정 질의 제약이 충족되었는지에 대한 카운트가 검색 결과를 순위화할 때 고려될 수 있다. 예로서 제한 없이, "Photos of my friends"에 대한 구조화 질의에 응답하여, 소셜 네트워킹 시스템(160)은 질의 명령 (photos_of(users:<friends>))을 생성할 수 있고, 이러한 질의의 검색 의도가 사용자의 친구들의 그룹 사진을 열람하는 것이라고 결정할 수 있다. 하지만, 이러한 질의 명령은 예컨대, 질의하는 사용자의 오로지 한명의 친구가 그 안에 태그된 사진에 의해 충족되거나 또는 다수의 친구들이 그 안에 태그된 사진에 의해 여러 번 충족될 수 있다. 따라서, 사진에서 태그된 사용자의 친구들을 가지는 사진에 대응하는 식별된 컨셉 노드(204)를 점수화할 때, 소셜 네트워킹 시스템(160)은 사진에서 태그된 사용자의 친구들의 수에 기초하여 사진을 더 높게 점수화할 수 있다. 따라서, 오로지 한명의 친구만이 그 안에서 태그된 사진 (가령, 예컨대, 사용자의 프로필 사진)은 사용자의 몇몇의 친구들이 그 안에 태그된 사진보다 낮게 점수화될 수 있다. 다른 예로서 제한 없이, 구조화 질의 "Photos of single women"에 응답하여, 소셜 네트워킹 시스템(160)은 이러한 질의의 검색 의도가 싱글 여성의 개별 사진 (즉, 사진에서의 사용자가 오로지 싱글 여성인 사진)을 열람하려는 것이라고 결정할 수 있다. 하지만, 이러한 질의 명령은 예컨대, 싱글 여성의 그룹 사진 또는 싱글 여성인 한명의 사용자 만이 태그된 사진에 의해 충족될 수 있다. 따라서, 싱글 여성이 그 안에 태그된 사진에 대응하는 식별된 컨셉 노드(204)를 점수화할 때, 소셜 네트워킹 시스템(160)은 홀로 서있는 싱글 여성의 사진을 싱글 여성의 그룹의 사진 (또는 싱글 여성이 아닌 하나 이상의 다른 사용자와 함께 있는 싱글 여성의 사진)보다 더 높게 점수화할 수 있다. 게다가, 싱글 여성의 프로필 사진은 싱글 여성의 프로필이 아닌 사진보다 높게 점수화될 수 있다. 비록 본 명세서는 특정 방식으로 검색 결과 카운트에 기초하여 검색 결과를 점수화하는 것을 기술하지만, 본 명세서는 임의의 적절한 방식으로 검색 결과 카운트에 기초하여 검색 결과를 점수화하는 것을 고려한다.
특정 실시예로, 소셜 네트워킹 시스템(160)은 검색 질의의 질의 제약을 충족하는 검색 결과의 객체의 비율에 기초하여 검색 결과를 점수화할 수 있다. 전술한 바와 같이, 질의 제약에 일치하는 특정 객체는 제약을 충족시키는 다수의 속성을 가질 수 있다. 하지만, 동일한 객체는 또한 제약을 충족시키지 않는 다수의 속성을 가질 수 있다. 이러한 타입의 경우에 있어서, 특정 질의 제약이 얼마나 많은 횟수로 충족되지 않는지에 비해 특정 질의 제약이 얼마나 많은 횟수로 충족되는지에 대한 카운트 (즉, 비율)는 검색 결과를 순위화할 때 고려될 수 있다. 예로서 제한 없이, "Photos of my family"에 대한 구조화 질의에 응답하여, 소셜 네트워킹 시스템(160)은 질의 명령 (photos_of(users:<family>))을 생성할 수 있고, 이러한 질의의 검색 의도가 사용자의 가족만을 보여주고 다른 사람은 보여주지 않는 그룹 사진을 열람하는 것이라고 결정할 수 있다. 즉, 이상적으로 일치하는 것은 질의 제약을 충족시키는 사진에서 태그된 사람의 비율이 가능한 1에 가까운 (즉, 사용자의 가족의 구성원만이 사진에서 태그되고 다른 사용자들은 사진에서 태그되지 않는) 사진일 것이다. 하지만, 이러한 질의 명령은 예컨대, 몇몇의 다른 사용자들과함께 사용자의 가족의 오로지 한명의 구성원만을 가지는 사진 또는 사용자의 가족의 모든 구성원과 몇몇의 다른 사람들이 그 안에 태그된 사진에 의해 충족될 수 있다. 결과적으로, 사용자의 가족의 구성원들이 그 안에 태그된 사진에 대응하는 식별된 컨셉 노드(204)를 점수화할 때, 소셜 네트워킹 시스템(160)은 사용자의 가족에 속하는 사진에서 태그된 사용자의 비율에 기초하여 사진을 더 높게 점수화할 수 있다 (즉, 사진에 대응하는 컨셉 노드(204)는 태그-인-타입 에지(206)에 의해 가족-타입 에지(206)에 의해 질의하는 사용자에게 연결된 사용자들에 대응하는 하나 이상의 사용자 노드(202)로 연결된다). 따라서, 사용자의 가족의 구성원 중 네명이 다른 세명의 가족이 아닌 구성원과 포즈하는 것을 보여주는 사진은 사용자의 가족 구성원 중 세 명만을 보여주지만 (따라서, 낮은 카운트인), 다른 사용자들이 사진에서 태그되지 않은 (따라서, 높은 비율인) 사진보다 낮게 점수화될 수 있다. 비록 본 명세서는 특정 방식으로 검색 결과 배분에 기초하여 검색 결과를 점수화하는 것을 기술하지만, 본 명세서는 임의의 적절한 방식으로 검색 결과 배분에 기초하여 검색 결과를 점수화하는 것을 고려한다.
특정 실시예로, 소셜 네트워킹 시스템은 검색 질의의 다수의 질의 제약을 충족시키는 검색 결과의 객체에 대한 카운트에 기초하여 검색 결과를 점수화할 수 있다. 검색 질의가 복수의 질의 제약을 가지는 경우, 다수의 질의 제약을 충족시키는 단일의 객체를 포함하는 검색 결과는 바람직하지 않을 수 있다. 특정 경우에 있어서, 다수의 질의 제약을 갖는 질의 명령에 일치하는 특정 객체는 하나 이상의 속성에 기초하여 복수의 질의 제약을 충족시킬 수 있다. 이러한 타입의 경우에 있어서, 얼마나 많은 객체/속성이 이러한 질의 제약을 충족시키는데 사용되는지에 대한 카운트는 검색 결과를 순위화할 때 고려될 수 있다. 특정 질의에 있어서, 복수의 제약을 갖는 질의 명령의 각각의 질의 제약을 충족시키기 위해 상이한 노드 또는 에지를 사용하는 것이 바람직하다. 예로서 제한 없이, 구조화 질의 "Restaurants liked by Mark and men"에 응답하여, 소셜 네트워킹 시스템(160)은 가령 예컨대, (intersect(locations: <restaurants>), (intersect(locations(liked_by: <Mark>), locations(liked_by(user_gender: <male>)))과 같은 질의 명령으로서 구조화 질의를 파싱할 수 있고, 이러한 질의의 검색 의도가 사용자 "Mark" 및 또한 남성인 적어도 한명의 다른 사람에 의해 좋아요된 식당을 식별하는 것이라고 결정할 수 있다. 이 경우, 사용자 "Mark"가 또한 남성이라고 가정하자. 소셜 네트워킹 시스템(160)은 식당인 위치들(즉, "식당"에 대응하는 컨셉 노드(204)로 위치-타입 에지(206)에 의해 연결되는 위치들에 대응하는 컨셉 노드(204))이 되는 제1 질의 제약에 일치하는 객체의 제1 세트를 식별할 수 있다. 다음으로, 소셜 네트워킹 시스템(160)은 이러한 결과를 사용자 "Mark" 및 남성 사용자에 의해 좋아요 되는 위치가 될 제2 질의 제약에 일치하는 것으로 식별된 객체의 제2 세트 (그 자체가 다수의 제약을 갖음)와 교차시킬 수 있다. 하지만, 사용자 "Mark"는 또한 남성이며, "Mark"에 의해 좋아요된 위치들은 이러한 객체의 제2 세트에서 또한, 식별될 수 있다. 이 경우, 오로지 사용자 "Mark"만이 좋아요 한 식당은 객체의 제1 세트 및 제2 세트 모두에 있을 수 있기 때문에, 소셜 네트워킹 시스템(160)이 좋아요한 사용자가 사용자 "Mark" (또는 "Mark" 및 오로지 여성 사용자들)인 위치에 대응하는 검색 결과를 생성하는 것이 가능하다. 하지만, 질의하는 사용자는 오로지 "Mark"에 의해 좋아요된 식당에만 대응하는 검색 결과 (이 경우에는, 질의하는 사용자는 단순히 "Restaurants liked by Mark"를 검색했을 수 있다)를 열람하고자 하지 않을 수 있다. 사용자는 적어도 두명의 사용자 - "Mark" 및 남성인 적어도 한명의 다른 사용자에 의해 좋아요된 식당을 찾고자 할 확률이 높다. 따라서, 소셜 네트워킹 시스템(160)은 하나 또는 두개의 좋아요-타입 에지(206)가 질의 명령을 충족하는데 사용되는지 여부 (즉, "Mark"에만 연결된 좋아요-타입 에지(206)가 사용되는지 또는 "Mark"로부터의 하나의 에지 및 다른 사용자로부터의 하나의 에지인 적어도 2개의 상이한 좋아요-타입 에지(206)가 사용되는지 여부)를 카운트할 수 있다. 따라서, 질의 제약 모두를 충족시키는데 오로지 단일 좋아요-타입 에지(206)가 사용되는 식당은 제약을 충족시키는데 2개의 상이한 좋아요-타입 에지(206)가 사용되는 식당보다 낮게 점수화될 수 있다. 비록 본 명세서는 특정 방식으로 질의 제약 의도에 기초하여 검색 결과를 점수화하는 것을 기술하지만, 본 명세서는 임의의 적절한 방식으로 질의 제약에 기초하여 검색 결과를 점수화하는 것을 고려한다.
특정 실시예로, 소셜 네트워킹 시스템(160)은 질의하는 사용자 (또는 질의하는 사용자의 사용자 노드(202))와 연관된 소셜 그래프 친밀도에 기초하여 검색 결과를 점수화할 수 있다. 소셜 네트워킹 시스템(160)은 서로에 대한 다양한 소셜 그래프 엔티티들의 소셜 그래프 친밀도(이하 "친밀도"라고 함)를 결정할 수 있다. 친밀도는 사용자, 컨셉, 컨텐츠, 행위, 광고, 온라인 소셜 네트워크와 연관된 다른 객체 또는 이들의 임의의 적절한 조합과 같이 온라인 소셜 네트워크와 연관된 특정 객체 사이의 관계의 강도 또는 관심의 정도를 표현할 수 있다. 특정 실시예로, 소셜 네트워킹 시스템(160)은 친밀도 계수(이하 "계수"라고 함)를 사용하여 소셜 그래프 친밀도를 측정 또는 수치화할 수 있다. 계수는 온라인 소셜 네트워크와 연관된 특정 객체들 사이의 관계의 강도를 표현 또는 수치화할 수 있다. 계수는 또한, 사용자의 행위에 대한 관심에 기초하여 특정 행위를 사용자가 수행할 예측된 확률을 측정하는 확률 또는 함수를 표현할 수 있다. 특정 실시예로, 소셜 그래프 친밀도는 검색 결과를 점수화할 때 요소로서 사용될 수 있다. 예로서 제한 없이, 구조화 질의 "Photos of my friends"에 응답하여, 소셜 네트워킹 시스템(160)은 질의 명령 (photos_of(users:<friends>))을 생성할 수 있고, 이 질의의 검색 의도가 사용자의 친구들을 보여주는 그룹 사진을 열람하는 것이라고 결정할 수 있다. 그 안에서 사용자의 친구들이 태그된 사진에 대응하는 식별된 컨셉 노드(204)를 점수화할 때, 소셜 네트워킹 시스템(160)은 질의하는 사용자와 관련하여 사진에서 태그된 사용자에 대한 질의하는 사용자의 (친밀도 계수에 의해 측정되는) 각각의 소셜 그래프 친밀도에 기초하여 사진을 더 높게 점수화할 수 있다. 더욱이, 질의하는 사용자의 더 많은 수의 친구들을 보여주는 사진은, 사진에 태그된 더 많은 수의 친구들을 가지는 것이 특정 사진과 관련하여 질의하는 사용자의 친밀도를 증가시킬 수 있기 때문에 질의하는 사용자의 더 적은 수의 친구들을 보여주는 사진보다 더 높게 태그될 수 있다. 비록 본 명세서는 특정 방식으로 친밀도에 기초하여 검색 결과를 점수화하는 것을 기술하지만, 본 명세서는 임의의 적절한 방식으로 친밀도에 기초하여 검색 결과를 점수화하는 것을 고려한다. 더욱이, 소셜 그래프 친밀도 및 친밀도 계수와 관련하여, 특정 실시예는 참조로 각각 통합되는 2006년 8월 11일자 출원된 미국 특허출원 번호 제11/503093호, 2010년 12월 22일자 출원된 미국 특허출원 번호 제12/977027호, 2010년 12월 23일자 출원된 미국 특허출원 제12/978265호, 및 2012년 10월 1일자 출원된 미국 특허출원 번호 제13/632869호에 개시된 하나 이상의 시스템들, 컴포넌트들, 구성요소들, 기능들, 방법들, 동작들 또는 단계들을 이용할 수 있다.
특정 실시예로, 검색 의도에 기초하여 검색 결과를 점수화하는 것은 가령 예컨대, 소셜 그래프(200)에서의 이격도, 노드-타입 및 에지-타입 정보, 소셜 그래프 친밀도, 다른 적절한 소셜 그래프 정보 또는 이들의 임의의 조합과 같은 소셜 그래프 정보에 기초하여 검색 결과를 점수화하는 것을 포함할 수 있다. 예로서 제한 없이, 구조화 질의 "Single women in Palo Alto"에 응답하여, 소셜 네트워킹 시스템(160)은 질의의 검색 의도 중 하나가 데이트를 위한 것이라고 결정할 수 있다. 이러한 질의에 일치하는 식별된 사용자 노드(202)를 점수화할 때, 소셜 네트워킹 시스템(160)은 소셜 그래프 친밀도에 기초하여 점수화하고 질의하는 사용자의 제1 도의 연결을 더 멀리 떨어진 연결보다 높게 점수화할 수 있다. 하지만, 사용자가 데이트의 목적을 위해 질의한다면, 사용자는 제1 도의 연결(즉, 사용자의 친구들)을 열람하기를 원하지 않을 수 있다. 싱글 여성인 제2 도의 연결(즉, 친구들의 친구들)을 식별하는 것이 데이트의 목적에 더 유용할 수 있다. 따라서, 데이트의 검색 의도에 기초하여 검색 결과를 점수화할 때, 소셜 네트워킹 시스템(160)은 제2 도의 연결들을 제1 도의 연결들보다 높게 점수화하는 점수화 알고리즘을 사용할 수 있다. 다른 예로서 제한 없이, 이전의 예로 계속하면, 구조화 질의 "Single women in Palo Alto"에 일치하는 식별된 사용자 노드(202)를 점수화할 때, 소셜 네트워킹 시스템(160)은 사용자가 가진 프로필 사진에 대한 "좋아요"의 개수에 기초하여 사용자들을 더 높게 점수화할 수 있으며, 여기에서 인기있는 프로필 사진(즉, 좋아요-타입 에지(206)에 의해 많은 사용자 노드(202)로 연결된 프로필 사진에 대응하는 컨셉 노드(204))을 갖는 사용자들은 데이트를 위해 더 매력적인 후보로 고려될 수 있다. 비록 본 명세서는 특정 방식으로 소셜 그래프 정보에 기초하여 검색 결과를 순위화하는 것을 기술하지만, 본 명세서는 임의의 적절한 방식으로 소셜 그래프 정보에 기초하여 검색 결과를 점수화하는 것을 고려한다.
특정 실시예로, 검색 의도에 기초하여 검색 결과를 점수화하는 것은 반대되는 검색 결과를 제외하기 위해 검색 결과를 점수화하는 것을 포함할 수 있다. 소셜 네트워킹 시스템(160)에 의해 식별된 하나 이상의 검색 의도는 반대되는 검색 결과를 제외하는 의도를 포함할 수 있다. 이 경우, 검색 결과의 점수화는 구조화 질의에서 레퍼런스된 적어도 하나의 선택된 노드에 대응하는 각각의 검색 결과의 점수를 하향시키는 것을 포함할 수 있다. 특정 시나리오에서, 질의하는 사용자는 레퍼런스된 노드가 사실 질의의 제약을 충족시킬 수 있다는 사실에도 불구하고, 질의하는 사용자가 소셜 네트워킹 시스템(160)으로 막 전송한 구조화 질의에서 레퍼런스된 노드에 대응하는 검색 결과를 열람하는 것을 원하지 않을 수 있다. 예로서 제한 없이, 구조화 질의 "People in photos of me"에 응답하여, 소셜 네트워킹 시스템(160)은 가령 예컨대, (users_tagged_in(photo_of(<me>))와 같은 질의 명령으로서 구조화 질의를 파싱할 수 있다. 소셜 네트워킹 시스템(160)은 이후 질의하는 사용자가 또한 태그된 사진에서 태그된 온라인 소셜 네트워크의 사용자들을 리스트하는 검색 결과를 생성할 수 있다. 이 경우, 질의하는 사용자는 질의하는 사용자의 사진에 태그된 사람임이 명백하지만, 질의하는 사용자는 그 자신에 대응하는 검색 결과를 열람하는 것을 원하지 않을 수 있다 (사실, 질의하는 사용자는 그 자신의 모든 사진에서 태그되기 때문에, 그가 이러한 질의에 가장 일치할 수 있다). 따라서, 소셜 네트워킹 시스템(160)은 질의의 검색 의도 중 하나가 구조화 질의에서 레퍼런스된 노드에 대응하는 검색 결과인 반대되는 결과를 제외하는 것이라고 결정할 수 있다. 이전의 예로 계속하면, 반대되는 결과는 질의하는 사용자에 대응하는 검색 결과일 수 있다. 따라서, 질의하는 사용자 (또는 질의하는 사용자에 대응하는 사용자 노드(202)가 질의 명령에 의해 식별될 수 있지만, 검색 결과를 점수화할 때, 질의하는 사용자에 대응하는 검색 결과는 하향되어서, 질의하는 사용자로 다시 실제로 전송되는 검색 결과로부터 제외되거나 다른 결과보다 낮게 순위화되도록 적어도 점수화될 수 있다. 비록 본 명세서는 특정 방식으로 특정 검색 결과를 점수화하는 것을 기술하지만, 본 명세서는 임의의 적절한 방식으로 임의의 적절한 검색 결과를 점수화하는 것을 고려한다.
특정 실시예로, 검색 의도에 기초하여 검색 결과를 점수화하는 것은 내부 검색 결과를 제외하기 위해 검색 결과를 점수화하는 것을 포함할 수 있다. 소셜 네트워킹 시스템(160)에 의해 식별된 하나 이상의 검색 의도는 내부 검색 결과를 제외하는 의도를 포함할 수 있다. 이 경우, 검색 결과를 순위화하는 것은 내부 제약에 일치하는 것으로 식별된 노드의 제1 세트 중 적어도 하나의 노드에 대응하는 각각의 검색 결과의 점수를 하향시키는 것을 포함할 수 있다. 특정 시나리오에서, 질의하는 사용자는 내부 및 외부 질의 제약 모두에 일치하는 검색 결과를 열람하는 것을 원하지 않을 수 있다. 예로서 제한 없이, 구조화 질의 "Friends of Facebook employees"에 대응하여, 소셜 네트워킹 시스템(160)은 가령 예컨대, (friends_of(users_employed_by(<Facebook>)))과 같은 질의 명령으로서 구조화 질의를 파싱할 수 있다. 소셜 네트워킹 시스템(160)은 내부 질의 제약에 일치하는 객체의 제1 세트(즉, 회사 "Facebook"에 대한 컨셉 노드(204)에 고용되는-타입 에지(206)에 의해 연결된 사용자 노드(202))를 식별할 수 있고, 이는 페이스북 직원인 사용자가 될 것이다. 다음으로, 소셜 네트워킹 시스템(160)은 외부 질의 제약에 일치하는 객체의 제2 세트(즉, 제1 세트에서 사용자 노드(202)에 친구-타입 에지(206)에 의해 연결된 사용자 노드(202))를 식별할 수 있고, 이는 사용자들의 제1 세트의 친구들인 사용자들이 될 것이다. 이 경우, 페이스북 직원의 친구들인 많은 사용자들(외부 제약에 일치)은 또한, 페이스북 직원일 수 있지만(내부 제약에 일치), 질의하는 사용자는 페이스북 직원에 대응하는 검색 결과를 열람하기를 원하지 않을 수 있다(그 경우, 질의하는 사용자는 "People who are Facebook employees"에 대해서만 검색했을 것이다). 사용자는 페이스북 직원과 친구인 페이스북이 아닌 직원을 식별하고자 할 것이다. 따라서, 소셜 네트워킹 시스템(160)은 질의의 검색 의도중 하나는 내부 질의 제약에 일치하는 검색 결과인 내부 검색 결과를 제외하는 것이라고 결정할 수 있다. 이전의 예로 계속하면, 내부 검색 결과는 페이스북 직원에 대응하는 검색 결과일 수 있다. 따라서, 많은 페이스북 직원들은 다른 페이스북 직원의 친구들이지만, 페이스북 직원에 대응하는 검색 결과에 대한 점수는 그들이 질의하는 사용자에게 실제로 다시 전송되는 검색 결과로부터 제외하기 위해 하향되거나, 그들이 페이스북 직원의 친구들인 페이스북이 아닌 직원에 대응하는 검색 결과보다 낮게 순위화되도록 적어도 점수화될 수 있다. 비록 본 명세서는 특정 방식으로 특정 검색 결과를 점수화하는 것을 기술하지만, 본 명세서는 임의의 적절한 방식으로 임의의 적절한 검색 결과를 점수화하는 것을 고려한다.
특정 실시예로, 검색 의도에 기초하여 검색 결과를 점수화하는 것은 중복되는 검색 결과를 제외하기 위해 검색 결과를 점수화하는 것을 포함할 수 있다. 소셜 네트워킹 시스템(160)에 의해 식별된 하나 이상의 검색 의도는 중복된 검색 결과를 제외하는 의도를 포함할 수 있다. 이 경우, 검색 결과를 순위화하는 것은 제1 질의 제약 및 제2 질의 제약 모두에 일치하는 노드에 대응하는 각각의 검색 결과의 점수를 하향시키는 것을 포함할 수 있다. 특정 시나리오에서, 질의하는 사용자는 객체의 동일한 속성이 질의 명령에서 2개의 상이한 제약을 충족시키는데 사용되는 검색 결과를 열람하길 원하지 않을 수 있다. 예로서 제한 없이, 구조화 질의 "Photos of Mark with Facebook employees"에 응답하여, 소셜 네트워킹 시스템(160)은 가령 예컨대, (intersect(photos_of: <Mark>), photos_of(users_employed_by: <Facebook>))와 같은 질의 명령으로서 구조화 질의를 파싱할 수 있다. 이 경우, 사용자 "Mark"가 또한 페이스북 직원이라고 가정한다. 소셜 네트워킹 시스템(160)은 사용자 "Mark"의 사진이 될 제1 질의 제약에 일치하는 객체들의 제1 세트(즉, 사용자 "Mark"에 대응하는 사용자 노드(202)로 태그-인-타입 에지(206)에 의해 연결된 사진에 대응하는 컨셉 노드(204)를 식별할 수 있다. 다음으로, 소셜 네트워킹 시스템(160)은 이러한 결과를 페이스북 직원인 사용자들의 사진인 제2 질의 제약 (네스트된 제약인)에 일치하는 것으로 식별된 객체들의 제2 세트와 교차시킬 수 있다. 하지만, 사용자 "Mark"는 또한 페이스북 직원이기 때문에, "Mark"의 사진은 이러한 제2 세트에서 또한 식별될 수 있다. 이 경우, 오로지 사용자 "Mark"가 태그되는 사진은 객체들의 제1 및 제2 세트 모두에 있기 때문에, 소셜 네트워킹 시스템(160)이 사진에서 태그된 사용자가 오로지 사용자 "Mark"인 사진에 대응하는 검색 결과를 생성하는 것이 가능하다. 하지만, 질의하는 사용자는 오로지 "Mark"의 사진에 대응하는 검색 결과를 보는 것 (이 경우, 질의하는 사용자는 단순히 "Photos of Mark"에 대해 검색했을 것이다)을 원할 가능성이 작다. 사용자는 적어도 2명의 사용자들 - "Mark" 및 페이스북 직원인 적어도 한명의 다른 사용자 - 를 포함하는 사진을 식별하고자 할 가능성이 더 크다. 따라서, 소셜 네트워킹 시스템(160)은 질의의 검색 의도 중 하나가 중복된 검색 결과를 제외하는 것이라고 결정할 수 있고, 중복된 검색 결과는 검색 결과의 동일한 속성이 2개의 상이한 질의 제약을 충족시키는데 사용되는 검색 결과이다. 이전의 예로 계속하면, 제1 제약은 (이 예에서 페이스북 직원이 되는) Mark의 사진에 대응하는 검색 결과를 생성할 것이며, 제2 제약은 페이스북 직원의 사진에 대응하는 검색 결과를 생성할 것이다. 즉, 특정 사진에 대응하는 컨셉 노드(204)는, 사용자 노드(202)가 고용-타입 에지(206)에 의해 "페이스북"에 대한 컨셉 노드로 연결되기 때문에 사용자 "Mark"에 대응하는 단일 사용자 노드(202)로 태그-인-타입 에지(206)에 의해 단순히 연결됨으로써 제약 모두를 충족시킬 수 있다. 따라서, 비록 사용자 "Mark"는 페이스북 직원이지만, 검색 결과를 점수화할 때, 오로지 "Mark" (또는 심지어는 다른 페이스북의 직원이 아닌 자들과 함께 있는 "Mark")의 사진에 대응하는 검색 결과는 질의하는 사용자로 다시 전송되는 검색 결과로부터 그들이 제외되도록 하향되거나 또는 페이스북 직원인 적어도 한명의 다른 사용자와 함께 있는 사용자 "Mark"의 사진에 대응하는 검색 결과보다 낮게 순위화되도록 적어도 점수화될 수 있다. 비록 본 명세서는 특정 방식으로 특정 검색 결과를 순위화하는 것을 기술하지만, 본 명세서는 임의의 적절한 방식으로 임의의 적절한 검색 결과를 점수화하는 것을 고려한다.
특정 실시예로, 소셜 네트워킹 시스템(160)은 질의하는 사용자에게 하나 이상의 검색 결과를 전송할 수 있다. 검색 결과는, 예컨대 각각의 링크가 식별된 자원 또는 컨텐츠의 일부를 포함하는 상이한 웹페이지와 연관되는 검색 결과 웹페이지 상의 링크들의 리스트의 형태로 사용자에게 전송될 수 있다. 특정 실시예로, 검색 결과에서의 각각의 링크는 대응하는 웹페이지가 어디에 위치하는지 및 그것을 검색하기 위한 메커니즘을 특정하는 URL(Uniform Resource Locator)의 형태일 수 있다. 소셜 네트워킹 시스템(160)은 이후 검색 결과 웹페이지를 사용자의 클라이언트 시스템(130) 상의 웹 브라우저(132)로 전송할 수 있다. 사용자는 이후 URL 링크를 클릭할 수 있거나 아니면 적절한 경우 소셜 네트워킹 시스템(160) 또는 외부 시스템(가령, 예컨대, 제3자 시스템(170))으로부터 컨텐츠를 접근하기 위해 검색 결과 웹페이지로부터 컨텐츠를 선택할 수 있다. 특정 실시예로, 각각의 검색 결과는 프로필 페이지로의 링크 및 프로필 페이지 (또는 그 페이지에 대응하는 노드)의 설명 또는 요약을 포함할 수 있다. 검색 결과는 검색 결과 페이지로서 질의하는 사용자에게 제시되고 전송될 수 있다. 검색 결과를 생성할 때, 소셜 네트워킹 시스템(160)은 각각의 검색 결과에 대해 하나 이상의 스니펫(snippets)을 생성할 수 있으며, 스니펫은 검색 결과의 타깃에 관한 컨텍스트 정보(즉, 소셜 그래프 엔티티, 프로필 페이지, 또는 특정 검색 결과에 대응하는 다른 컨텐츠에 관한 컨텍스트 정보)이다. 특정 실시예로, 소셜 네트워킹 시스템(160)은 특정 임계 점수/순위를 점수/순위를 갖는 검색 결과만을 전송할 수 있다. 예로서 제한 없이, 소셜 네트워킹 시스템(160)은 특정 검색 질의에 대응하여 질의하는 사용자에게 상위 10 개의 결과만을 전송할 수 있다. 비록 본 명세서는 특정 방식으로 특정 검색 결과를 전송하는 것을 기술하지만, 본 명세서는 임의의 적절한 방식으로 임의의 적절한 검색 결과를 전송하는 것을 고려한다.
특정 실시예로, 소셜 네트워킹 시스템(160)은 하나 이상의 검색 의도에 기초하여 질의 명령을 생성할 수 있다. 소셜 네트워킹 시스템(160)에 의해 생성된 질의 명령의 구조는 이러한 검색 의도에 기초하여 수정될 수 있어서, 하나의 구조화 질의에 응답하여 질의 명령이 생성되는 방식이 다른 구조화 질의에 응답하여 질의 명령이 생성되는 방식과 상이할 수 있도록 한다. 유사하게, 질의 명령의 하나 이상의 질의 제약은 이러한 검색 의도에 기초할 수 있다. 따라서, 검색 의도에 기초한 검색 결과의 점수화/순위화에 대한 대안 또는 추가로, 질의 명령을 실행할 때 소셜 네트워킹 시스템(160)에 의해 검색 결과가 식별되는 방식이 된다. 예로서 제한 없이, 특정 노드 또는 노드-타입을 식별하는 의도, 질의 힌트를 사용하여 노드를 식별하는 것, 인버스 연산자를 사용하여 노드를 식별하는 것, 반대되는 검색 결과를 제외하는 것, 내부 검색 결과를 제외하는 것, 중복된 결과를 제외하는 것, 다른 적절한 의도 또는 이들의 임의의 조합은 소셜 네트워킹 시스템(160)에 의해 수신되는 구조화 질의에 응답하여 질의 명령 (또는 질의 명령의 특정 질의 제약)을 생성할 때 사용될 수 있다. 비록 본 명세서는 특정 방식으로 특정 검색 의도에 기초하여 질의 명령을 생성하는 것을 고려하지만, 본 명세서는 임의의 적절한 방식으로 임의의 적절한 검색 의도에 기초하여 질의 명령을 생성하는 것을 고려한다.
도 8은 검색 의도에 기초하여 검색 결과를 생성하기 위한 예시적인 방법(800)을 도시한다. 방법은 소셜 네트워킹 시스템(160)이 복수의 노드 (예컨대, 사용자 노드(202) 또는 컨셉 노드(204) 및 노드를 연결하는 복수의 에지(206)를 포함하는 소셜 그래프(200)를 접근할 수 있는 단계(810)에서 시작할 수 있다. 2개의 노드 사이의 각각의 에지는 그들 사이의 단일의 이격도(degree of separation)를 표현할 수 있다. 노드는 온라인 소셜 네트워크와 연관된 제1 사용자에 대응하는 제1 노드(예컨대, 제1 사용자 노드(202))를 포함할 수 있다. 노드는 또한, 온라인 소셜 네트워크와 연관된 컨셉 또는 제2 사용자에 각각 대응하는 복수의 제2 노드를 포함할 수 있다. 단계(820)에서, 소셜 네트워킹 시스템(160)은 복수의 노드로부터의 하나 이상의 선택된 노드 및 복수의 에지로부터의 하나 이상의 선택된 에지에 대한 레퍼런스를 포함하는 구조화 질의를 제1 사용자로부터 수신할 수 있다. 단계(830)에서, 소셜 네트워킹 시스템(160)은 구조화 질의에 대응하는 하나 이상의 검색 결과를 생성할 수 있다. 각각의 검색 결과는 복수의 노드들 중 하나의 노드에 대응할 수 있다. 단계(840)에서, 소셜 네트워킹 시스템(160)은 구조화 질의에서 레퍼런스된 하나 이상의 선택된 노드 또는 하나 이상의 선택된 에지에 기초하여 하나 이상의 검색 의도를 결정할 수 있다. 단계(850)에서 소셜 네트워킹 시스템(160)은 하나 이상의 검색 의도에 기초하여 검색 결과를 점수화할 수 있다. 단계(860)에서, 소셜 네트워킹 시스템(160)은 제1 사용자에게 하나 이상의 검색 결과를 전송할 수 있다. 특정 실시예는 적절한 경우 도 8의 방법의 하나 이상의 단계를 반복할 수 있다. 비록 본 명세서는 도 8의 방법의 특정 단계가 특정 순서로 발생하는 것으로 기술하고 도시하지만, 본 명세서는 도 8의 방법의 임의의 적절한 단계가 임의의 적절한 순서로 발생하는 것을 고려한다. 더욱이, 비록 본 명세서는 도 8의 방법의 특정 단계들을 수행하는 특정 컴포넌트들, 장치들, 시스템들을 기술하고 도시하지만, 본 명세서는 도 8의 방법의 임의의 적절한 단계를 수행하는 임의의 적절한 컴포넌트들, 장치들, 또는 시스템들의 임의의 적절한 조합을 고려한다.
검색 결과를 생성하는 것에 대한 더 많은 정보는 참조로 통합되는 2012년 12월 31일자 출원된 미국 특허출원 번호 제13/731939호에서 찾을 수 있다.
광고
특정 실시예로, 광고는, 하나 이상의 웹 페이지에서 제시되는 임의의 적절한 디지털 포맷에서, 하나 이상의 이메일에서 또는 사용자에 의해 요청되는 검색 결과와 관련하여, (HTML-링크될 수 있는) 텍스트, (HTML-링크될 수 있는) 하나 이상의 이미지, 하나 이상의 비디오, 오디오, 하나 이상의 ADOBE FLASH 파일, 이들의 적절한 조합 또는 임의의 다른 적절한 광고일 수 있다. 추가로 또는 대안으로, 광고는 하나 이상의 스폰서 소식(예컨대, 소셜 네트워킹 시스템(160)의 뉴스-피드 또는 티커 아이템)일 수 있다. 스폰서 소식은 예컨대 소셜 행위를 사용자의 프로필 페이지나 다른 페이지의 기결정된 영역 내에 제시되게 하거나, 광고자와 관련된 추가 정보와 함께 제시되게 하거나, 다른 사용자들의 뉴스피드나 티커 내에 올리거나 하이라이팅되게 하거나, 홍보되게 함으로써, 광고자가 홍보하는 사용자에 의한 소셜 행위(가령, 페이지를 "좋아요" 하기, 페이지의 게시물을 "좋아요" 하거나 코멘트하기, 페이지와 관련된 이벤트에 대해 회답(RSVP)하기, 페이지에 게시된 질문에 투표하기, 한 장소로 체크인하기, 애플리케이션을 사용하거나 게임을 실행하기 또는 웹사이트를 "좋아요" 하거나 공유하기)일 수 있다. 광고자는 소셜 행위가 홍보되도록 지불할 수 있다. 예로서 제한 없이, 광고는 검색-결과 페이지의 검색 결과들 중에 포함될 수 있으며, 이때 스폰서 컨텐츠는 비-스폰서 컨텐츠 보다 더 홍보된다. 다른 예로서 제한 없이, 광고는 제안된 검색 질의 사이에 포함될 수 있고, 광고자 또는 광고자의 컨텐츠/상품들을 레퍼런스하는 제안된 질의는 비-스폰서 질의 보다 더 홍보된다. 특정 실시예로, 소셜 네트워킹 시스템(160)은 사용자로부터 수신된 검색 질의와 연관된 검색 의도에 기초하여 사용자에게 디스플레이할 광고를 선택할 수 있다. 상이한 광고 (또는 광고의 타입)는 사용자의 검색 의도에 따라 사용자에게 디스플레이될 수 있다.
특정 실시예로, 광고는 소셜 네트워킹 시스템 웹페이지, 제3자 웹페이지 또는 다른 페이지 내에서 디스플레이하기 위해 요청될 수 있다. 광고는, 가령 페이지 상단의 배너 영역에서, 페이지 측면의 종렬에서, 페이지의 GUI에서, 팝-업창에서, 드롭-다운 메뉴에서, 페이지의 입력 필드에서, 페이지의 컨텐츠의 상단 위에서 또는 그 밖의 페이지의 어느 곳에서, 페이지의 전용 부분에 디스플레이될 수 있다. 추가로 또는 대안으로, 광고는 애플리케이션 내에 디스플레이될 수 있다. 광고는 사용자가 페이지에 접근하거나, 애플리케이션을 이용할 수 있기 전에 광고를 상호작용하거나 광고를 시청하도록 사용자에게 요구하는 전용 페이지 내에 디스플레이될 수 있다. 예컨대, 사용자는 웹 브라우저를 통해 광고를 열람할 수 있다.
사용자는 임의의 적절한 방식으로 광고와 상호작용할 수 있다. 사용자는 광고를 클릭하거나 선택할 수 있다. 광고를 선택함으로써, 사용자는 광고와 관련된 페이지로 (또는, 사용자가 사용하는 브라우저 또는 다른 애플리케이션)를 인도될 수 있다. 광고와 관련된 페이지에서, 사용자는 가령 광고와 관련된 제품이나 서비스를 구매하기, 광고와 관련된 정보를 수신하기 또는 광고와 관련된 뉴스레터를 구독하기와 같은 추가의 행위들을 행할 수 있다. 오디오 또는 비디오를 가진 광고는 광고의 컴포넌트를 선택("실행 버튼"을 좋아요)함으로써 실행될 수 있다. 대안으로, 광고를 선택함으로써, 소셜 네트워킹 시스템(160)은 사용자의 특정 행위를 실행하거나 수정할 수 있다.
광고는 사용자가 상호작용할 수 있는 소셜 네트워킹 시스템 기능을 포함할 수 있다. 예컨대, 광고는 보증과 관련된 아이콘이나 링크를 선택하여 사용자가 광고를 "좋아요"하거나 보증하게 할 수 있다. 다른 예로, 광고는 (예컨대, 질의를 실행하여) 사용자가 광고자에 관한 컨텐츠를 검색하게 할 수 있다. 마찬가지로, 사용자는 (예컨대, 소셜 네트워킹 시스템(160)을 통해) 다른 사용자와 광고를 공유할 수 있거나, (예컨대, 소셜 네트워킹 시스템(160)을 통해) 광고와 관련된 이벤트에 회답(RSVP)할 수 있다. 추가로 또는 대안으로, 광고는 사용자에 관한 소셜 네트워킹 시스템 컨텍스트를 포함할 수 있다. 예컨대, 광고는 광고의 내용과 관련된 행위를 행했던 소셜 네트워킹 시스템(160) 내 사용자의 친구에 대한 정보를 디스플레이할 수 있다.
시스템 및 방법
도 9는 예시적인 컴퓨터 시스템(900)을 도시한다. 특정 실시예로, 하나 이상의 컴퓨터 시스템들(900)은 본 명세서에 기술되거나 도시된 하나 이상의 방법들의 하나 이상의 단계들을 수행한다. 특정 실시예로, 하나 이상의 컴퓨터 시스템들(900)은 본 명세서에 기술되거나 도시된 기능을 제공한다. 특정 실시예로, 하나 이상의 컴퓨터 시스템들(900)을 실행하는 소프트웨어는 본 명세서에 기술되거나 도시된 하나 이상의 방법들의 하나 이상의 단계들을 수행하거나, 본 명세서에 기술되거나 도시된 기능을 제공한다. 특정 실시예는 하나 이상의 컴퓨터 시스템들(900)의 하나 이상의 부분들을 포함한다. 본 명세서에서, 적절한 경우 컴퓨터 시스템에 대한 언급은 컴퓨팅 장치를 포함할 수 있고 그 역도 또한 동일하다. 게다가, 컴퓨터 시스템에 대한 언급은 적절한 경우 하나 이상의 컴퓨터 시스템을 포함할 수 있다.
본 명세서는 임의의 적절한 수의 컴퓨터 시스템(900)을 고려한다. 본 명세서는 임의의 적절한 물리적 형태를 취하는 컴퓨터 시스템(900)을 고려한다. 예로서 제한 없이, 컴퓨터 시스템(900)은 임베디드 컴퓨터 시스템, 시스템-온-칩(SOC), 단일-보드 컴퓨터 시스템(SBC)(예컨대, 컴퓨터-온-모듈(COM) 또는 시스템-온-모듈(SOM)), 데스크톱 컴퓨터 시스템, 랩톱 또는 노트북 컴퓨터 시스템, 상호작용형 키오스크(kiosk), 메인 프레임, 컴퓨터 시스템 메쉬(mesh), 모바일 전화, 개인 정보 단말기(PDA), 서버, 태블릿 컴퓨터 시스템 또는 이들의 2 이상의 조합일 수 있다. 적절한 경우, 컴퓨터 시스템(900)은 하나 이상의 컴퓨터 시스템(900)들을 포함할 수 있거나; 일체형 또는 분산형일 수 있거나; 다수의 위치에 걸쳐 있거나, 다수의 기계에 걸쳐 있거나; 다수의 데이터 센터에 걸쳐 있거나; 하나 이상의 네트워크에 하나 이상의 클라우드 성분을 포함할 수 있는 클라우드에 상주할 수 있다. 적절한 경우, 하나 이상의 컴퓨터 시스템(900)은 본 명세서에 기술되거나 도시되는 하나 이상의 방법의 하나 이상의 단계를 실질적으로 공간적 또는 시간적 제한 없이 실행할 수 있다. 예로서 제한 없이, 하나 이상의 컴퓨터 시스템(900)은 본 명세서에 기술되거나 도시되는 하나 이상의 방법의 하나 이상의 단계를 실시간으로 또는 일괄 모드로 실행할 수 있다. 적절한 경우, 하나 이상의 컴퓨터 시스템(900)은 본 명세서에 기술되거나 도시되는 하나 이상의 방법의 하나 이상의 단계를 다른 시기에 또는 다른 위치에서 실행할 수 있다.
특정 실시예로, 컴퓨터 시스템(900)은 프로세서(902), 메모리(904), 저장소(906), 입력/출력(I/O) 인터페이스(908), 통신 인터페이스(910) 및 버스(912)를 포함한다. 본 명세서가 특정 배열로 특정한 수의 특정 구성요소를 갖는 특정 컴퓨터 시스템을 기술하고 도시하지만, 본 명세서는 임의의 적절한 배열로 임의의 적절한 수의 임의의 적절한 구성요소를 갖는 임의의 적절한 컴퓨터 시스템을 고려한다.
특정 실시예로, 프로세서(902)는 가령 컴퓨터 프로그램을 구성하는 명령어와 같은 명령어를 실행하기 위한 하드웨어를 포함한다. 예로서 제한 없이, 명령어를 실행하기 위해, 프로세서(902)는 내부 레지스터, 내부 캐시, 메모리(904) 또는 저장소(906)로부터 명령어를 검색(또는 페치(fetch))할 수 있고; 명령어를 디코딩하고 실행한 후; 하나 이상의 결과를 내부 레지스터, 내부 캐시, 메모리(904) 또는 저장소(906)에 기록할 수 있다. 특정 실시예로, 프로세서(902)는 데이터용, 명령어용 또는 주소용 하나 이상의 내부 캐시를 포함할 수 있다. 본 명세서는 적절한 경우 임의의 적절한 수의 임의의 적절한 내부 캐시들을 포함하는 프로세서(902)를 고려한다. 예로서 제한 없이, 프로세서(902)는 하나 이상의 명령어 캐시들, 하나 이상의 데이터 캐시들 및 하나 이상의 변환 색인 버퍼(translation lookaside buffers, TLBs)를 포함할 수 있다. 명령어 캐시에 저장된 명령어들은 메모리(904)나 저장소(906) 내 명령어들의 사본일 수 있고, 명령어 캐시는 프로세서(902)에 의한 이런 명령어들의 검색 속도를 높일 수 있다. 데이터 캐시 내의 데이터는 프로세서(902)에서 실행하는 다음 명령들에 의해 접근하거나 메모리(904)나 저장소(906)로 기록하기 위해 프로세서(902)에서 실행되는 이전 명령들의 결과; 또는 다른 적절한 데이터를 동작하는데 프로세서(902)에서 실행하는 명령어를 위한 메모리(904)나 저장소(906) 내의 데이터의 사본일 수 있다. 데이터 캐시는 프로세서(902)에 의한 판독 또는 기록 동작의 속도를 높일 수 있다. TLB들은 프로세서(902)에 의한 가상 주소 변환의 속도를 높일 수 있다. 특정 실시예로, 프로세서(902)는 데이터용, 명령어용 또는 주소용 하나 이상의 내부 레지스터를 포함할 수 있다. 본 명세서는 적절한 경우 임의의 적절한 수의 임의의 적절한 내부 레지스터들을 포함하는 프로세서(902)를 고려한다. 적절한 경우, 프로세서(902)는 하나 이상의 산술 논리 유닛(ALUs)을 포함할 수 있거나; 멀티-코어 프로세서일 수 있거나; 하나 이상이 프로세서들(902)을 포함할 수 있다. 본 명세서가 특정 프로세서를 기술하고 도시하지만, 본 명세서는 임의의 적절한 프로세서를 고려한다.
특정 실시예로, 메모리(904)는 프로세서(902)가 실행하는 명령어 또는 프로세서(902)가 운영하는 데이터를 저장하기 위한 메인 메모리를 포함한다. 예로서 제한 없이, 컴퓨터 시스템(900)은 저장소(906)나 또 다른 소스(가령, 예컨대 또 다른 컴퓨터 시스템(900))에서 메모리(904)로 명령어를 로딩할 수 있다. 이후, 프로세서(902)는 메모리(904)에서 내부 레지스터나 내부 캐시로 명령어를 로딩할 수 있다. 명령어를 실행하기 위해, 프로세서(902)는 내부 레지스터나 내부 캐시로부터 명령어를 검색하고 이들을 디코딩할 수 있다. 명령어의 실행 중 또는 실행 후, 프로세서(902)는 (중간 결과 또는 최종 결과일 수 있는) 하나 이상의 결과를 내부 레지스터나 내부 캐시로 기록할 수 있다. 이후, 프로세서(902)는 하나 이상의 이런 결과를 메모리(904)에 기록할 수 있다. 특정 실시예로, 프로세서(902)는 (저장소(906) 또는 다른 곳과는 대조적으로) 하나 이상의 내부 레지스터나 내부 캐시에서 또는 메모리(904)에서 단지 명령어만을 실행하며, (저장소(906) 또는 다른 곳과는 대조적으로) 하나 이상의 내부 레지스터나 내부 캐시에서 또는 메모리(904)에서 단지 데이터만을 운영한다. (주소 버스 및 데이터 버스를 각각 포함할 수 있는) 하나 이상의 메모리 버스는 프로세서(902)를 메모리(904)로 연결할 수 있다. 하기에 기술되는 바와 같이, 버스(912)는 하나 이상의 메모리 버스를 포함할 수 있다. 특정 실시예로, 하나 이상의 메모리 관리 유닛(MMUs)은 프로세서(902)와 메모리(904) 사이에 상주하며, 프로세서(902)에 의해 요청되는 메모리(904)로의 접근을 용이하게 한다. 특정 실시예로, 메모리(904)는 랜덤 액세스 메모리(RAM)를 포함한다. 적절한 경우, 이런 RAM은 휘발성 메모리일 수 있다. 적절한 경우, 이런 RAM은 동적 RAM(DRAM) 또는 정적 RAM(SRAM)일 수 있다. 게다가, 적절한 경우, 이런 RAM은 단일 포트형 또는 다중-포트형 RAM일 수 있다. 본 명세서는 임의의 적절한 RAM을 고려한다. 적절한 경우, 메모리(904)는 하나 이상의 메모리(904)를 포함할 수 있다. 본 명세서가 특정 메모리를 기술하고 도시하지만, 본 명세서는 임의의 적절한 메모리를 고려한다.
특정 실시예로, 저장소(906)는 데이터용 또는 명령어용 대용량 저장소를 포함한다. 예로서 제한 없이, 저장소(906)는 하드 디스크 드라이브(HDD), 플로피 디스크 드라이브, 플래시 메모리, 광디스크, 자기-광학 디스크, 자기 테이프, 범용 직렬 버스(USB) 드라이브 또는 이들의 2 이상의 조합을 포함할 수 있다. 적절한 경우, 저장소(906)는 착탈식 또는 비-착탈식(또는 고정) 매체를 포함할 수 있다. 적절한 경우, 저장소(906)는 컴퓨터 시스템(900)의 내부 또는 외부에 있을 수 있다. 특정 실시예로, 저장소(906)는 비휘발성, 고체-상태(solid-state) 메모리이다. 특정 실시예로, 저장소(906)는 읽기 전용 메모리(ROM)를 포함한다. 적절한 경우, 이런 ROM은 마스크-프로그램화된 ROM, 프로그램가능 ROM(PROM), 소거가능 PROM(EPROM), 전기적 소거가능 PROM(EEPROM), 전기적 변경가능 ROM(EAROM), 플래시 메모리 또는 이들의 2 이상의 조합일 수 있다. 본 명세서는 임의의 적절한 물리적 형태를 취하는 대용량 저장소(906)를 고려한다. 적절한 경우, 저장소(906)는 프로세서(902)와 저장소(906) 사이의 통신을 용이하게 하는 하나 이상의 저장소 제어 유닛을 포함할 수 있다. 적절한 경우, 저장소(906)는 하나 이상의 저장소(906)를 포함할 수 있다. 본 명세서가 특정 저장소를 기술하고 도시하지만, 본 명세서는 임의의 적절한 저장소를 고려한다.
특정 실시예로, I/O 인터페이스(908)는 컴퓨터 시스템(900)과 하나 이상의 I/O 장치 사이의 통신을 위한 하나 이상의 인터페이스를 제공하는 하드웨어, 소프트웨어 또는 이들 모두를 포함한다. 적절한 경우, 컴퓨터 시스템(900)은 하나 이상의 이들 I/O 장치를 포함할 수 있다. 하나 이상의 이들 I/O 장치는 사람과 컴퓨터 시스템(900) 사이의 통신을 가능하게 할 수 있다. 예로서 제한 없이, I/O 장치는 키보드, 키패드, 마이크로폰, 모니터, 마우스, 프린터, 스캐너, 스피커, 스틸 카메라(still camera), 스타일러스(stylus), 태블릿, 터치 스크린, 트랙볼(trackball), 비디오 카메라, 다른 적절한 I/O 장치 또는 이들의 2 이상의 조합을 포함할 수 있다. I/O 장치는 하나 이상의 센서를 포함할 수 있다. 본 명세서는 임의의 적절한 I/O 장치 및 이에 대한 적절한 I/O 인터페이스(908)를 고려한다. 적절한 경우, I/O 인터페이스(908)는 프로세서(902)가 하나 이상의 이들 I/O 장치를 구동할 수 있도록 하는 하나 이상의 장치 또는 소프트웨어 드라이버를 포함할 수 있다. 적절한 경우, I/O 인터페이스(908)는 하나 이상의 I/O 인터페이스(908)를 포함할 수 있다. 본 명세서가 특정 I/O 인터페이스를 기술하고 도시하지만, 본 명세서는 임의의 적절한 I/O 인터페이스를 고려한다.
특정 실시예로, 통신 인터페이스(910)는 컴퓨터 시스템(900)과 하나 이상의 다른 컴퓨터 시스템(900)이나 하나 이상의 네트워크 사이의 통신(가령, 예컨대 패킷-기반 통신)을 위한 하나 이상의 인터페이스를 제공하는 하드웨어, 소프트웨어 또는 이들 모두를 포함한다. 예로서 제한 없이, 통신 인터페이스(910)는 이더넷이나 다른 유선-기반 네트워크로 통신하기 위한 네트워크 인터페이스 제어장치(NIC)나 네트워크 어댑터 또는 가령 WI-FI 네트워크와 같이 무선 네트워크로 통신하기 위한 무선 NIC(WNIC)나 무선 어댑터를 포함할 수 있다. 본 명세서는 임의의 적절한 네트워크 및 이에 대한 임의의 적절한 통신 인터페이스(910)를 고려한다. 예로서 제한 없이, 컴퓨터 시스템(900)은 애드 혹 네트워크(ad hoc network), 개인 영역 네트워크(PAN), 근거리 네트워크(LAN), 광역 네트워크(WAN), 대도시 네트워크(MAN), 인터넷의 하나 이상의 부분 또는 2 이상의 이런 네트워크들의 조합으로 통신할 수 있다. 하나 이상의 이런 네트워크의 하나 이상의 부분은 유선 또는 무선일 수 있다. 예로서, 컴퓨터 시스템(900)은 무선 PAN(WPAN)(가령, 예컨대 BLUETOOTH WPAN), WI-FI 네트워크, WI-MAX 네트워크, 셀룰러 전화 네트워크(가령, 예컨대 GSM(Global System for Mobile Communication) 네트워크), 다른 적절한 무선 네트워크 또는 2 이상의 이런 네트워크들의 조합으로 통신할 수 있다. 적절한 경우, 컴퓨터 시스템(900)은 임의의 이들 네트워크에 대한 임의의 적절한 통신 인터페이스(910)를 포함할 수 있다. 적절한 경우, 통신 인터페이스(910)는 하나 이상의 통신 인터페이스(910)를 포함할 수 있다. 본 명세서가 특정 통신 인터페이스를 기술하고 도시하지만, 본 명세서는 임의의 적절한 통신 인터페이스를 고려한다.
특정 실시예로, 버스(912)는 컴퓨터 시스템(900)의 구성요소를 서로 연결하는 하드웨어, 소프트웨어 또는 이들 모두를 포함한다. 예로서 제한 없이, 버스(912)는 AGP(Accelerated Graphics Port)이나 다른 그래픽 버스, EISA(Enhanced Industry Standard Architecture) 버스, FSB(front-side bus), HT(HYPERTRANSPORT) 인터커넥트, ISA(Industry Standard Architecture) 버스, INFINIBAND 인터커넥트, LPC(low-pin-count) 버스, 메모리 버스, MCA(Micro Channel Architecture) 버스, PCI(Peripheral Component Interconnect) 버스, PCIe(PCI-Express) 버스, SATA(serial advanced technology attachment) 버스, VLB(Video Electronics Standard Association local) 버스, 다른 적절한 버스 또는 2 이상의 이런 버스의 조합을 포함할 수 있다. 적절한 경우, 버스(912)는 하나 이상의 버스(912)를 포함할 수 있다. 본 명세서가 특정 버스를 기술하고 도시하지만, 본 명세서는 임의의 적절한 버스나 인터커넥트를 고려한다.
본 명세서에서, 컴퓨터-판독가능한 비-일시적 저장매체 또는 저장매체들은 하나 이상의 반도체 기반 또는 다른 집적회로(ICs)(가령, 예컨대 FPGAs(field-programmable gate arrays) 또는 ASICs(application-specific ICs)), 하드 디스크 드라이브(HDDs), 하이브리드 하드 디스크(HHDs), 광학 디스크, 광학 디스크 드라이브(ODDs), 자기-광학 디스크, 자기-광학 드라이브, 플로피 디스크, 플로피 디스크 드라이브(FDDs), 자기 테이프, 고체-상태 드라이브(SSDs), RAM-드라이브, SECURE DIGITAL 카드나 드라이브, 임의의 다른 적절한 컴퓨터-판독가능한 비-일시적 저장매체 또는, 적절한 경우, 2 이상의 이들의 임의의 적절한 조합을 포함할 수 있다. 적절한 경우, 컴퓨터-판독가능한 비-일시적 저장매체는 휘발성, 비휘발성 또는 휘발성과 비휘발성의 조합일 수 있다.
기타 등등
본 명세서에서, "또는"은 명시적으로 다르게 지시하거나 문맥상 달리 지시되지 않는 한, 포괄적인 것이며 배타적인 것이 아니다. 따라서, 본 명세서에서 "A 또는 B"는 명시적으로 다르게 지시하거나 문맥상 달리 지시되지 않는 한, "A, B 또는 둘 모두"를 의미한다. 게다가, "및"은 명시적으로 다르게 지시하거나 문맥상 달리 지시되지 않는 한, 공동 및 별개 모두이다. 따라서, 본 명세서에서 "A 및 B"는 명시적으로 다르게 지시하거나 문맥상 달리 지시되지 않는 한, "A 및 B가 공동이든 별개이든 상관없이 모두"를 의미한다.
본 명세서의 범위는 당업자가 이해할 수 있는 본 명세서에 기술되거나 도시된 예시적인 실시예들에 대한 모든 변화, 치환, 변형, 대체 및 변경을 포함한다. 본 명세서의 범위는 본 명세서에 기술되거나 도시된 예시적인 실시예들로 국한되지 않는다. 게다가, 본 명세서는 특정 컴포넌트, 구성요소, 기능, 동작 또는 단계를 포함하는 것으로 본 명세서의 각각의 실시예들을 기술하고 도시하지만, 임의의 이런 실시예들은 당업자가 이해할 수 있는 본 명세서에 어디든 기술되거나 도시되는 임의의 컴포넌트, 구성요소, 기능, 동작 또는 단계의 임의의 조합이나 치환을 포함할 수 있다. 게다가, 첨부된 청구범위에서 특정 기능을 수행하도록 설계되거나, 배치되거나, 할 수 있거나, 구성되거나, 할 수 있게 하거나, 동작할 수 있거나, 동작하는 장치나 시스템 또는 장치나 시스템의 구성요소에 대한 언급은 장치, 시스템 또는 구성요소가 그렇게 설계되거나, 배치되거나, 할 수 있거나, 구성되거나, 가능하거나, 동작할 수 있거나 동작하는 한, 장치, 시스템, 구성요소, 그 또는 그러한 특정 기능이 활성화되었는지, 턴온 되었는지, 잠금 해제되었는지 여부를 포함한다.

Claims (20)

  1. 온라인 소셜 네트워크의 제1 사용자의 클라이언트 장치로부터, 온라인 소셜 네트워크와 연관된 하나 이상의 선택된 객체에 대한 레퍼런스를 포함하는 구조화 질의를 수신하는 단계;
    제1 질의 제약(constraint) 및 하나 이상의 제2 질의 제약을 식별하기 위해 구조화 질의를 파싱(parse)하는 단계;
    제1 질의 제약과 연관된 인버스 제약을 식별하는 단계; 및
    구조화 질의에 기반하여 질의 명령을 생성하는 단계를 포함하고,
    상기 제1 질의 제약은 객체의 임계 개수를 초과하여 식별할 것으로 사전에 플래그되며,
    상기 질의 명령은 인버스 제약 및 하나 이상의 제2 질의 제약을 포함하는 구조화된 질의를 이용하는 온라인 소셜 네트워크 검색 방법.
  2. 제 1 항에 있어서,
    복수의 노드 및 노드를 연결하는 복수의 에지를 포함하는 소셜 그래프에 액세스하는 단계를 더 포함하고,
    2개의 노드 사이의 각각의 에지는 2개의 노드 사이의 단일 이격도를 표현하고,
    노드는:
    제1 사용자에 해당하는 제1 노드; 및
    온라인 소셜 네트워크와 연관된 복수의 객체에 각각 해당하는 복수의 제2 노드를 포함하는 구조화된 질의를 이용하는 온라인 소셜 네트워크 검색 방법.
  3. 제 2 항에 있어서,
    구조화 질의는 복수의 노드 중 하나 이상의 선택된 노드 및 복수의 에지 중 하나 이상의 선택된 에지에 대한 레퍼런스를 포함하는 구조화된 질의를 이용하는 온라인 소셜 네트워크 검색 방법.
  4. 제 3 항에 있어서,
    제1 질의 제약은, 제2 노드-타입의 하나 이상의 노드에 대해 구조화 질의에서 레퍼런스된 선택된 에지 중 하나에 의해 각각 연결된 제1 노드-타입의 하나 이상의 노드에 해당하는 제1 객체-타입에 대한 것이고,
    인버스 제약은, 제1 노드-타입의 하나 이상의 노드에 대해 구조화 질의에서 레퍼런스된 선택된 에지 중 하나에 의해 연결된 제2 노드-타입의 하나 이상의 노드에 해당하는 제2 객체-타입에 대한 것인 구조화된 질의를 이용하는 온라인 소셜 네트워크 검색 방법.
  5. 제 1 항에 있어서,
    제1 질의 제약은 제1 객체-타입에 대한 것이며, 인버스 제약은 제2 객체-타입에 대한 것인 구조화된 질의를 이용하는 온라인 소셜 네트워크 검색 방법.
  6. 제 1 항에 있어서,
    제1 질의 제약은 제1 객체-타입에 대한 것이며, 인버스 제약은 제1 객체-타입에 대한 것인 구조화된 질의를 이용하는 온라인 소셜 네트워크 검색 방법.
  7. 제 1 항에 있어서,
    인버스 제약은 제1 객체-타입에 대한 것이며, 하나 이상의 제2 질의 제약은 하나 이상의 제2 객체-타입에 대한 것인 구조화된 질의를 이용하는 온라인 소셜 네트워크 검색 방법.
  8. 제 1 항에 있어서,
    제1 질의 제약은 내부 제약(inner constraint) 및 외부 제약(outer constraint)을 포함하며,
    질의 명령은 인버스 제약 및 내부 제약의 교차점(intersect)을 포함하는 구조화된 질의를 이용하는 온라인 소셜 네트워크 검색 방법.
  9. 제 1 항에 있어서,
    제1 질의 제약은 제1 객체-타입에 대한 것이며,
    인버스 질의 제약은 제2 객체-타입에 대한 것이고,
    상기 제1 질의 제약은 제1 객체-타입의 제2 객체-타입에 대한 역 인덱스(inverted index) 맵핑에 해당하며,
    상기 인버스 제약은 제2 객체-타입의 제1 객체-타입에 대한 정 인덱스(forward index) 맵핑에 해당하는 구조화된 질의를 이용하는 온라인 소셜 네트워크 검색 방법.
  10. 제 1 항에 있어서,
    인버스 제약에 일치하는 객체의 제1 세트를 식별하는 단계;
    하나 이상의 제2 질의 제약에 일치하는 객체의 제2 세트를 식별하는 단계; 및
    제1 및 제2 세트에 기반하여 하나 이상의 검색 결과를 생성하는 단계를 더 포함하고,
    각각의 검색 결과는 온라인 소셜 네트워크와 연관된 복수의 객체 중 하나의 객체에 해당하는 구조화된 질의를 이용하는 온라인 소셜 네트워크 검색 방법.
  11. 제 10 항에 있어서,
    제1 및 제2 세트에 기반하여 하나 이상의 검색 결과를 생성하는 단계는 객체의 제1 세트 및 객체의 제2 세트 모두에서 식별된 각각의 객체에 해당하는 검색결과를 생성하는 것을 포함하는 구조화된 질의를 이용하는 온라인 소셜 네트워크 검색 방법.
  12. 제 10 항에 있어서,
    각각의 검색 결과는 객체의 제1 세트 중 하나 이상의 객체에 연결된 객체의 제2 세트 중 하나의 객체에 해당하는 구조화된 질의를 이용하는 온라인 소셜 네트워크 검색 방법.
  13. 제 10 항에 있어서,
    각각의 검색 결과는 객체의 제2 세트 중 하나 이상의 객체에 연결된 객체의 제1 세트 중 하나의 객체에 해당하는 구조화된 질의를 이용하는 온라인 소셜 네트워크 검색 방법.
  14. 제 10 항에 있어서,
    하나 이상의 제2 질의 제약에 일치하는 객체의 제2 세트를 식별하는 단계는 객체의 제1 세트 중 하나 이상의 객체에 연결된 온라인 소셜 네트워크와 연관된 복수의 객체 중 하나 이상의 객체를 식별하는 것을 포함하는 구조화된 질의를 이용하는 온라인 소셜 네트워크 검색 방법.
  15. 제 1 항에 있어서,
    제1 질의 제약을 충족하는 객체의 개수를 결정하는 단계; 및
    객체의 개수가 객체의 임계 개수를 초과한다면, 이후 인버스 제약을 갖는 질의 명령을 생성하지만,
    객체의 개수가 객체의 임계 개수를 초과하지 않는다면, 제1 질의 제약을 갖는 질의 명령을 생성하는 단계를 더 포함하는 구조화된 질의를 이용하는 온라인 소셜 네트워크 검색 방법.
  16. 제 1 항에 있어서,
    구조화 질의에 기반하여 예비 질의 명령을 생성하는 단계;
    예비 질의 명령에 기반하여 검색 결과의 제1 세트를 생성하는 단계; 및
    검색 결과의 제1 세트가 검색 결과의 임계 개수 미만이라면, 이후 인버스 제약을 갖는 질의 명령을 생성하고, 인버스 제약을 갖는 질의 명령에 기반하여 검색 결과의 제2 세트를 생성하는 단계를 더 포함하며,
    상기 예비 질의 명령은 제1 질의 제약 및 하나 이상의 제2 질의 제약을 포함하는 구조화된 질의를 이용하는 온라인 소셜 네트워크 검색 방법.
  17. 제 1 항에 있어서,
    제1 질의 제약에 일치하는 객체의 제1 세트를 식별하고;
    하나 이상의 제2 질의 제약에 일치하는 객체의 제1 세트 중 하나 이상의 객체를 포함하는 객체의 제2 세트를 식별함으로써, 온라인 소셜 네트워크와 연관된 복수의 객체 중 하나의 객체에 각각 해당하는 검색 결과의 제1 세트를 생성하는 단계; 및
    객체의 제2 세트가 객체의 임계 개수 미만이라면,
    인버스 제약에 일치하는 객체의 제3 세트를 식별하고;
    하나 이상의 제2 질의 제약에 일치하는 객체의 제3 세트 중 하나 이상의 객체를 포함하는 객체의 제4 세트를 식별함으로써, 이후 검색 결과의 제2 세트를 생성하는 단계를 더 포함하는 구조화된 질의를 이용하는 온라인 소셜 네트워크 검색 방법.
  18. 제 1 항에 있어서,
    하나 이상의 질의 제약을 플래그(flag)하는 단계;
    제1 질의 제약이 플래그된 질의 제약 중 하나인지 여부를 결정하는 단계; 및
    제1 질의 제약이 플래그된 질의 제약이라면 인버스 제약을 포함하는 질의 명령을 생성하는 단계를 더 포함하며,
    각각의 플래그된 질의 제약은 실행될 때 객체의 임계 개수를 초과하여 식별할 것으로 식별된 구조화된 질의를 이용하는 온라인 소셜 네트워크 검색 방법.
  19. 하나 이상의 컴퓨터-판독가능한 비-일시적 저장 매체로서,
    온라인 소셜 네트워크의 제1 사용자의 클라이언트 장치로부터, 온라인 소셜 네트워크와 연관된 하나 이상의 선택된 객체에 대한 레퍼런스를 포함하는 구조화 질의를 수신하고;
    제1 질의 제약 및 하나 이상의 제2 질의 제약을 식별하기 위해 구조화 질의를 파싱하고;
    제1 질의 제약과 연관된 인버스 제약을 식별하고;
    구조화 질의에 기반하여 질의 명령을 생성하도록 실행될 때 동작하는, 구조화된 질의를 이용하는 온라인 소셜 네트워크 검색을 위한 소프트웨어를 포함하고,
    상기 제1 질의 제약은 객체의 임계 개수를 초과하여 식별할 것으로 사전에 플래그되며,
    상기 질의 명령은 인버스 제약 및 하나 이상의 제2 질의 제약을 포함하는 컴퓨터-판독가능한 비-일시적 저장 매체.
  20. 하나 이상의 프로세서; 및
    프로세서에 의해 실행가능한 명령어를 포함하고 프로세서에 연결된 메모리를 포함하며,
    상기 프로세서는:
    온라인 소셜 네트워크의 제1 사용자의 클라이언트 장치로부터, 온라인 소셜 네트워크와 연관된 하나 이상의 선택된 객체에 대한 레퍼런스를 포함하는 구조화 질의를 수신하고;
    제1 질의 제약 및 하나 이상의 제2 질의 제약을 식별하기 위해 구조화 질의를 파싱하고;
    제1 질의 제약과 연관된 인버스 제약을 식별하고;
    구조화 질의에 기반하여 질의 명령을 생성하는 명령어를 실행할 때 동작하며,
    상기 제1 질의 제약은 객체의 임계 개수를 초과하여 식별할 것으로 사전에 플래그되고,
    상기 질의 명령은 인버스 제약 및 하나 이상의 제2 질의 제약을 포함하는 구조화된 질의를 이용하는 온라인 소셜 네트워크 검색 시스템.
KR1020167029274A 2013-05-03 2014-04-30 온라인 소셜 네트워크에서 질의를 위한 인버스 연산자의 사용 KR101842632B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/887,068 2013-05-03
US13/887,068 US9367536B2 (en) 2013-05-03 2013-05-03 Using inverse operators for queries on online social networks
PCT/US2014/036109 WO2014179427A1 (en) 2013-05-03 2014-04-30 Using inverse operators for queries on online social networks

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020157034383A Division KR101671878B1 (ko) 2013-05-03 2014-04-30 온라인 소셜 네트워크에서 질의를 위한 인버스 연산자의 사용

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020187008065A Division KR102048216B1 (ko) 2013-05-03 2014-04-30 온라인 소셜 네트워크에서 질의를 위한 인버스 연산자의 사용

Publications (2)

Publication Number Publication Date
KR20160124924A KR20160124924A (ko) 2016-10-28
KR101842632B1 true KR101842632B1 (ko) 2018-03-27

Family

ID=51842061

Family Applications (3)

Application Number Title Priority Date Filing Date
KR1020187008065A KR102048216B1 (ko) 2013-05-03 2014-04-30 온라인 소셜 네트워크에서 질의를 위한 인버스 연산자의 사용
KR1020157034383A KR101671878B1 (ko) 2013-05-03 2014-04-30 온라인 소셜 네트워크에서 질의를 위한 인버스 연산자의 사용
KR1020167029274A KR101842632B1 (ko) 2013-05-03 2014-04-30 온라인 소셜 네트워크에서 질의를 위한 인버스 연산자의 사용

Family Applications Before (2)

Application Number Title Priority Date Filing Date
KR1020187008065A KR102048216B1 (ko) 2013-05-03 2014-04-30 온라인 소셜 네트워크에서 질의를 위한 인버스 연산자의 사용
KR1020157034383A KR101671878B1 (ko) 2013-05-03 2014-04-30 온라인 소셜 네트워크에서 질의를 위한 인버스 연산자의 사용

Country Status (11)

Country Link
US (4) US9367536B2 (ko)
EP (2) EP2992464B1 (ko)
JP (4) JP5938153B1 (ko)
KR (3) KR102048216B1 (ko)
CN (2) CN107256269B (ko)
AU (1) AU2014259935B2 (ko)
BR (1) BR112015027756A8 (ko)
CA (2) CA2919447C (ko)
IL (2) IL242366A (ko)
MX (1) MX347812B (ko)
WO (1) WO2014179427A1 (ko)

Families Citing this family (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9910887B2 (en) * 2013-04-25 2018-03-06 Facebook, Inc. Variable search query vertical access
US9367880B2 (en) 2013-05-03 2016-06-14 Facebook, Inc. Search intent for queries on online social networks
US9367536B2 (en) 2013-05-03 2016-06-14 Facebook, Inc. Using inverse operators for queries on online social networks
US9367625B2 (en) 2013-05-03 2016-06-14 Facebook, Inc. Search query interactions on online social networks
US10445840B2 (en) * 2013-08-07 2019-10-15 Microsoft Technology Licensing, Llc System and method for positioning sponsored content in a social network interface
US11238056B2 (en) 2013-10-28 2022-02-01 Microsoft Technology Licensing, Llc Enhancing search results with social labels
US9692633B2 (en) * 2013-11-15 2017-06-27 Sap Se Role-based resource navigation
US11645289B2 (en) * 2014-02-04 2023-05-09 Microsoft Technology Licensing, Llc Ranking enterprise graph queries
US9870432B2 (en) 2014-02-24 2018-01-16 Microsoft Technology Licensing, Llc Persisted enterprise graph queries
CN103838834B (zh) * 2014-02-25 2020-06-19 北京智谷睿拓技术服务有限公司 一种提及推荐方法、信息处理方法及系统
US11657060B2 (en) 2014-02-27 2023-05-23 Microsoft Technology Licensing, Llc Utilizing interactivity signals to generate relationships and promote content
US10757201B2 (en) 2014-03-01 2020-08-25 Microsoft Technology Licensing, Llc Document and content feed
US10169457B2 (en) 2014-03-03 2019-01-01 Microsoft Technology Licensing, Llc Displaying and posting aggregated social activity on a piece of enterprise content
US10255563B2 (en) 2014-03-03 2019-04-09 Microsoft Technology Licensing, Llc Aggregating enterprise graph content around user-generated topics
US10394827B2 (en) 2014-03-03 2019-08-27 Microsoft Technology Licensing, Llc Discovering enterprise content based on implicit and explicit signals
US20150347357A1 (en) * 2014-05-30 2015-12-03 Rovi Guides, Inc. Systems and methods for automatic text recognition and linking
US10061826B2 (en) 2014-09-05 2018-08-28 Microsoft Technology Licensing, Llc. Distant content discovery
US20160148264A1 (en) * 2014-11-24 2016-05-26 Facebook, Inc. Searching for Offers and Advertisements on Online Social Networks
US9965560B2 (en) * 2015-02-02 2018-05-08 Samsung Electronics Co., Ltd. Social-distance permission-based search algorithm
US20160292247A1 (en) * 2015-03-31 2016-10-06 Kenneth Scott Kaufman Method of retrieving categorical data entries through an interactive graphical abstraction
US10567479B2 (en) * 2015-08-05 2020-02-18 Facebook, Inc. Managing a device cloud
US10425392B2 (en) 2015-08-05 2019-09-24 Facebook, Inc. Managing a device cloud
US10412160B2 (en) * 2015-08-05 2019-09-10 Facebook, Inc. Controlling a device cloud
US10541958B2 (en) * 2015-08-05 2020-01-21 Facebook, Inc. Controlling a device cloud
US10348798B2 (en) * 2015-08-05 2019-07-09 Facebook, Inc. Rules engine for connected devices
US10162899B2 (en) * 2016-01-15 2018-12-25 Facebook, Inc. Typeahead intent icons and snippets on online social networks
US9836451B2 (en) * 2016-02-18 2017-12-05 Sap Se Dynamic tokens for an expression parser
US20170277750A1 (en) * 2016-03-28 2017-09-28 Futurewei Technologies, Inc. Querying big data by accessing small data
US10423683B2 (en) * 2016-05-02 2019-09-24 Microsoft Technology Licensing, Llc Personalized content suggestions in computer networks
EP3455743A1 (en) * 2016-05-13 2019-03-20 Equals 3 LLC Searching structured and unstructured data sets
CN106126521B (zh) 2016-06-06 2018-06-19 腾讯科技(深圳)有限公司 目标对象的社交账号挖掘方法及服务器
CN108446281B (zh) * 2017-02-13 2021-03-12 北京嘀嘀无限科技发展有限公司 确定用户亲密度的方法、装置及存储介质
CN106980644B (zh) * 2017-02-20 2019-08-13 浙江大学 一种异构城市数据的个体人际关系可视推理方法
JP6893005B2 (ja) * 2017-03-31 2021-06-23 ネット株式会社 遊技機
US10664472B2 (en) * 2018-06-27 2020-05-26 Bitdefender IPR Management Ltd. Systems and methods for translating natural language sentences into database queries
CN108804711B (zh) * 2018-06-27 2022-12-06 郑州云海信息技术有限公司 一种数据处理的方法、装置和计算机可读存储介质
CN110110013B (zh) * 2019-05-10 2020-03-24 成都信息工程大学 一种基于时空属性的实体竞争关系数据挖掘方法
CN112100391B (zh) * 2019-05-31 2023-06-13 阿里巴巴集团控股有限公司 用户意图识别方法、装置、服务端、客户端及终端设备
IL302730A (en) * 2020-11-13 2023-07-01 Ami Holdings Ltd Matches between individuals
US20220318426A1 (en) * 2021-03-31 2022-10-06 Microsoft Technology Licensing, Llc Knowledge graph privacy management
US11966485B2 (en) 2021-06-09 2024-04-23 Microsoft Technology Licensing, Llc Property-level visibilities for knowledge-graph objects
CN113656927B (zh) * 2021-10-20 2022-02-11 腾讯科技(深圳)有限公司 数据处理方法、相关设备及计算机存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050131872A1 (en) 2003-12-16 2005-06-16 Microsoft Corporation Query recognizer
US20100235354A1 (en) 2009-03-12 2010-09-16 International Business Machines Corporation Collaborative search engine system
US8027990B1 (en) 2008-07-09 2011-09-27 Google Inc. Dynamic query suggestion
US8135721B2 (en) 2006-12-20 2012-03-13 Yahoo! Inc. Discovering query intent from search queries and concept networks

Family Cites Families (72)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61220027A (ja) 1985-03-27 1986-09-30 Hitachi Ltd 文書ファイリングシステム及び情報記憶検索システム
JP2839555B2 (ja) 1989-06-14 1998-12-16 株式会社日立製作所 情報検索方法
JPH05128157A (ja) 1991-11-08 1993-05-25 Ricoh Co Ltd 文書検索装置
JPH0744573A (ja) 1993-07-27 1995-02-14 Fujitsu Ltd 電子ファイリング装置
US7631012B2 (en) * 1997-05-22 2009-12-08 Computer Associates Think, Inc. System and method of operating a database
JP2000187663A (ja) 1998-12-22 2000-07-04 Hitachi Zosen Corp ファイル管理装置およびファイル管理方法並びにそのプログラムを記録した記録媒体
US7752326B2 (en) 2001-08-20 2010-07-06 Masterobjects, Inc. System and method for utilizing asynchronous client server communication objects
US8112529B2 (en) 2001-08-20 2012-02-07 Masterobjects, Inc. System and method for asynchronous client server session communication
US20090006543A1 (en) 2001-08-20 2009-01-01 Masterobjects System and method for asynchronous retrieval of information based on incremental user input
US20030225761A1 (en) 2002-05-31 2003-12-04 American Management Systems, Inc. System for managing and searching links
JP2004078631A (ja) * 2002-08-20 2004-03-11 Fujitsu Ltd オブジェクト指向データベースにおける検索装置及び検索方法
US7171407B2 (en) * 2002-10-03 2007-01-30 International Business Machines Corporation Method for streaming XPath processing with forward and backward axes
WO2004097679A1 (ja) 2003-04-25 2004-11-11 Hewlett-Packard Development Company, L.P. データベース装置及び作成方法、データベース検索装置及び検索方法
US7836044B2 (en) 2004-06-22 2010-11-16 Google Inc. Anticipated query generation and processing in a search engine
US7499940B1 (en) 2004-11-11 2009-03-03 Google Inc. Method and system for URL autocompletion using ranked results
US7333981B2 (en) 2004-12-17 2008-02-19 International Business Machines Corporation Transformation of a physical query into an abstract query
WO2007067754A2 (en) 2005-12-07 2007-06-14 Networks In Motion, Inc. Telecommunication device for address guidance
US7702689B2 (en) * 2006-07-13 2010-04-20 Sap Ag Systems and methods for querying metamodel data
US7636712B2 (en) 2006-11-14 2009-12-22 Microsoft Corporation Batching document identifiers for result trimming
US8078688B2 (en) 2006-12-29 2011-12-13 Prodea Systems, Inc. File sharing through multi-services gateway device at user premises
US7904461B2 (en) 2007-05-01 2011-03-08 Google Inc. Advertiser and user association
US20090171929A1 (en) 2007-12-26 2009-07-02 Microsoft Corporation Toward optimized query suggeston: user interfaces and algorithms
US20090228296A1 (en) 2008-03-04 2009-09-10 Collarity, Inc. Optimization of social distribution networks
US8645406B2 (en) * 2008-04-11 2014-02-04 Microsoft Corporation Exploiting conditions to optimize expensive database queries
US8417698B2 (en) 2008-05-06 2013-04-09 Yellowpages.Com Llc Systems and methods to provide search based on social graphs and affinity groups
US8386506B2 (en) 2008-08-21 2013-02-26 Yahoo! Inc. System and method for context enhanced messaging
US8370329B2 (en) 2008-09-22 2013-02-05 Microsoft Corporation Automatic search query suggestions with search result suggestions from user history
US9607052B2 (en) 2008-12-29 2017-03-28 Technion Research & Development Foundation Limited Query networks evaluation system and method
US8412749B2 (en) 2009-01-16 2013-04-02 Google Inc. Populating a structured presentation with new values
JP2010218376A (ja) 2009-03-18 2010-09-30 Nomura Research Institute Ltd ユーザ関心ジャンル分析システム
US20120150316A1 (en) 2009-08-31 2012-06-14 Carvalho Jose Da Conceicao Esophageal flow controller
US20110078166A1 (en) 2009-09-29 2011-03-31 Nokia Corporation Method and apparatus for creating and utilizing information representation of queries
JP5292250B2 (ja) 2009-10-13 2013-09-18 日本電信電話株式会社 文書検索装置、文書検索方法、文書検索プログラム
US20110087534A1 (en) 2009-10-14 2011-04-14 Wantsa Media (Canada), Inc. Search queries and advertising platforms utilizing at least one social graph
US8316056B2 (en) 2009-12-08 2012-11-20 Facebook, Inc. Second-order connection search in a social networking system
KR101123697B1 (ko) 2010-01-22 2012-03-20 유플리트 주식회사 공통 관심 사용자 검색장치 및 방법
US8595297B2 (en) 2010-02-08 2013-11-26 At&T Intellectual Property I, L.P. Searching data in a social network to provide an answer to an information request
US8527496B2 (en) 2010-02-11 2013-09-03 Facebook, Inc. Real time content searching in social network
JP2011170471A (ja) 2010-02-17 2011-09-01 Nippon Telegr & Teleph Corp <Ntt> ソーシャルグラフ生成方法、ソーシャルグラフ生成装置、およびプログラム
US8180804B1 (en) 2010-04-19 2012-05-15 Facebook, Inc. Dynamically generating recommendations based on social graph information
US8185558B1 (en) 2010-04-19 2012-05-22 Facebook, Inc. Automatically generating nodes and edges in an integrated social graph
WO2014018321A1 (en) * 2012-07-23 2014-01-30 Facebook, Inc. Structured search queries based on social-graph information
US8386471B2 (en) 2010-05-27 2013-02-26 Salesforce.Com, Inc. Optimizing queries in a multi-tenant database system environment
JP2012038023A (ja) 2010-08-05 2012-02-23 Nippon Telegr & Teleph Corp <Ntt> クエリ生成装置およびその動作方法
US20120059713A1 (en) 2010-08-27 2012-03-08 Adchemy, Inc. Matching Advertisers and Users Based on Their Respective Intents
US8364709B1 (en) 2010-11-22 2013-01-29 Google Inc. Determining word boundary likelihoods in potentially incomplete text
US8538978B2 (en) 2010-11-22 2013-09-17 International Business Machines Corporation Presenting a search suggestion with a social comments icon
KR101073602B1 (ko) 2010-11-30 2011-10-14 중앙대학교 산학협력단 소셜 신뢰도 모델 생성 시스템 및 방법
US20120150850A1 (en) 2010-12-08 2012-06-14 Microsoft Corporation Search result relevance by determining query intent
US20120278127A1 (en) 2011-04-28 2012-11-01 Rawllin International Inc. Generating product recommendations based on dynamic product context data and/or social activity data related to a product
EP2521066A1 (en) 2011-05-05 2012-11-07 Axiomatics AB Fine-grained relational database access-control policy enforcement using reverse queries
US20120311034A1 (en) 2011-06-03 2012-12-06 Cbs Interactive Inc. System and methods for filtering based on social media
US8601027B2 (en) 2011-06-20 2013-12-03 Google Inc. Query-based user groups in social networks
US20130031106A1 (en) 2011-07-29 2013-01-31 Microsoft Corporation Social network powered query suggestions
US8495058B2 (en) 2011-08-05 2013-07-23 Google Inc. Filtering social search results
US8538960B2 (en) 2011-08-05 2013-09-17 Microsoft Corporation Providing objective and people results for search
US20130041876A1 (en) 2011-08-08 2013-02-14 Paul Alexander Dow Link recommendation and densification
US8504561B2 (en) 2011-09-02 2013-08-06 Microsoft Corporation Using domain intent to provide more search results that correspond to a domain
US11620719B2 (en) 2011-09-12 2023-04-04 Microsoft Technology Licensing, Llc Identifying unseen content of interest
US8918354B2 (en) 2011-10-03 2014-12-23 Microsoft Corporation Intelligent intent detection from social network messages
US8949232B2 (en) * 2011-10-04 2015-02-03 Microsoft Corporation Social network recommended content and recommending members for personalized search results
US8977611B2 (en) 2011-10-18 2015-03-10 Facebook, Inc. Ranking objects by social relevance
US8321364B1 (en) 2012-02-08 2012-11-27 Google Inc. Method and system for including robots into social networks
JP2013242675A (ja) 2012-05-18 2013-12-05 Nippon Telegr & Teleph Corp <Ntt> 分散情報制御装置、分散情報検索方法、データ分散配置方法、及びプログラム
US9158801B2 (en) 2012-07-27 2015-10-13 Facebook, Inc. Indexing based on object type
US8983991B2 (en) 2012-07-27 2015-03-17 Facebook, Inc. Generating logical expressions for search queries
US8935271B2 (en) 2012-12-21 2015-01-13 Facebook, Inc. Extract operator
EP2784697A1 (en) 2013-03-28 2014-10-01 Fujitsu Limited Graph database query handling method and apparatus
US9367625B2 (en) 2013-05-03 2016-06-14 Facebook, Inc. Search query interactions on online social networks
US9367536B2 (en) 2013-05-03 2016-06-14 Facebook, Inc. Using inverse operators for queries on online social networks
US9367880B2 (en) 2013-05-03 2016-06-14 Facebook, Inc. Search intent for queries on online social networks
KR20150003977A (ko) * 2013-07-01 2015-01-12 현대중공업 주식회사 클린엔진 인테이크 에어챔버와 실린더 헤드의 연결구조

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050131872A1 (en) 2003-12-16 2005-06-16 Microsoft Corporation Query recognizer
US8135721B2 (en) 2006-12-20 2012-03-13 Yahoo! Inc. Discovering query intent from search queries and concept networks
US8027990B1 (en) 2008-07-09 2011-09-27 Google Inc. Dynamic query suggestion
US20100235354A1 (en) 2009-03-12 2010-09-16 International Business Machines Corporation Collaborative search engine system

Also Published As

Publication number Publication date
KR102048216B1 (ko) 2019-11-25
US9367536B2 (en) 2016-06-14
US20140330809A1 (en) 2014-11-06
US9495354B2 (en) 2016-11-15
EP2992464A1 (en) 2016-03-09
MX347812B (es) 2017-05-15
IL242366A (en) 2016-09-29
JP5938153B1 (ja) 2016-06-22
US20170031979A1 (en) 2017-02-02
US10417222B2 (en) 2019-09-17
BR112015027756A2 (pt) 2017-07-25
US20170286481A1 (en) 2017-10-05
KR20180031826A (ko) 2018-03-28
JP2016164809A (ja) 2016-09-08
US9690826B2 (en) 2017-06-27
JP2017199418A (ja) 2017-11-02
IL247467B (en) 2018-04-30
CN107256269B (zh) 2019-10-29
JP6174228B2 (ja) 2017-08-02
CN105378727A (zh) 2016-03-02
JP2016524741A (ja) 2016-08-18
US20160132597A1 (en) 2016-05-12
CA2910869A1 (en) 2014-11-06
EP2992464B1 (en) 2017-10-11
CA2910869C (en) 2016-04-12
KR101671878B1 (ko) 2016-11-03
CN107256269A (zh) 2017-10-17
BR112015027756A8 (pt) 2019-12-24
AU2014259935B2 (en) 2016-01-21
KR20160124924A (ko) 2016-10-28
JP2017068861A (ja) 2017-04-06
EP3267334B1 (en) 2019-03-06
KR20150139984A (ko) 2015-12-14
JP6419905B2 (ja) 2018-11-07
JP6055950B2 (ja) 2016-12-27
CN105378727B (zh) 2017-07-11
AU2014259935A1 (en) 2015-12-10
WO2014179427A1 (en) 2014-11-06
MX2015015260A (es) 2016-05-05
CA2919447C (en) 2018-09-18
EP2992464A4 (en) 2017-01-11
CA2919447A1 (en) 2014-11-06
EP3267334A1 (en) 2018-01-10

Similar Documents

Publication Publication Date Title
KR101842632B1 (ko) 온라인 소셜 네트워크에서 질의를 위한 인버스 연산자의 사용
KR101845434B1 (ko) 온라인 소셜 네트워크에서 질의를 위한 검색 의도
KR101854799B1 (ko) 온라인 소셜 네트워크에서의 검색 질의 상호작용
KR101663718B1 (ko) 온라인 소셜 네트워크에서 제안된 구조화된 질의 필터링
KR101582929B1 (ko) 구조화된 검색 질의용 문법 모델
KR101593191B1 (ko) 온라인 소셜 네트워크에서 불명확한 구조화된 검색 질의
AU2016200901B2 (en) Using inverse operators for queries on online social networks
AU2016262774A1 (en) Using inverse operators for queries

Legal Events

Date Code Title Description
A107 Divisional application of patent
A201 Request for examination
A302 Request for accelerated examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
A107 Divisional application of patent
GRNT Written decision to grant