Brief Review of Google Implementation

lilactruckInternet και Εφαρμογές Web

4 Δεκ 2013 (πριν από 3 χρόνια και 9 μήνες)

106 εμφανίσεις

Google Implementation

Crawling

Indexing

Searching

The problem of information retrieval
on the web

The amount of information on the web is
growing rapidly.

Hard to remember the “link graph”

User inexperienced in the art of web
search







The problem of some methods

Human maintained indices (old Yahoo!)


-

expensive to build and maintain


-

slow to improve


-

can not cover all topics


Some Automated search engines


-

too many low quality matches


-

long response time


-

misled by some advertisers

Design goals of Google

Scaling with web (40% pages are volatile)

Based on HTML

Rank the list order of information as
needed by user

Efficient index to provide short response
time

Academic research


System Features

Two important features other than other
search engines


1.
PageRank



used for information
ranking


2.
Anchor Text



show the important
information used for ranking

PageRank

In the system, each Web pages on the
Web has a rank

Calculated by use of the link structure of
the Web

Keep static once all pages crawled

PageRank

Define:


We assume page A has pages T1…Tn which
point to it. The parameter d is a damping factor
which can be set between 0 and 1(usually set to
0.85). C(A) is defined as the number of links
going out of page A. The PageRank of page A
is:


R(A) = (1
-
d) + d * [R(T1)/C(T1)+…+R(Tn)/C(Tn)]


Intuitive Justification


Anchor Text

Most search engines associate the text of
a link with page that the link is on

In google, it is associated with the page it
points to

An example

Advantage


-

more interests on the anchors


-

providing non
-
text based results

Web Crawling

How do the web search engines get all of
the items they index?

Main idea:


Start with known sites


Record information for these sites


Follow the links from each site


Record information found at new sites


Repeat

Web crawling Algorithm

Put a set of known sites on a queue

Repeat the following until the queue is
empty


Take the first page off of the queue


If this page has not yet been processed


Record the information on this page


Add each link on the current page to the


queue


Record that this page has been processed

Standard Web Search Engine Architecture

crawl the

web

create an

inverted

index

Check for duplicates,

store the

documents

Inverted

index

Search

engine

servers

user

query

Show results

To user

DocIds

Architecture

Architecture

Web downloading (crawl) by distributed
crawlers, fetched web pages are
compressed and stored into a repository

Each web page has a unique docID

Indexer and Sorter perform the index
function

URLresolver



Architecture
-

indexer

Reads the repository, uncompresses the
web pages, and parses them

Converts each web page into a set of word
occurrences called hits

Distributes hits into a set of barrels,
creating a partially sorted forward index

Parses out all links in every web pages
and stores them in an anchors file

Architecture


URLresolver

Reads the anchors file and converts
relative URLs into absolute URLs and in
turn into docIDs.

Puts the Anchor Text into the forward
index, associated with the docID that the
anchor points to

Generates a links database containing
pairs of docIDs used by PageRank
calculating

Architecture


Sorter, lexicon,
searcher

Resorts hits in barrels to generate the
inverted index

Produces a list of wordIDs and offsets into
the inverted index

These lists + lexicon produced by indexer
= a new lexicon

Searcher is run by a web server, taking
lexicon + inverted index + PageRank to
answer queries

Data Structures

Repository


repository:


|| sync || length || compressed packet ||


packet:


|| docid || ecode || urllen || pagelen || url || page ||



Data Structure

Hits, Forward index, Lexicon and Inverted index


Data Structure

Hits


-

Two types of hits, fancy and plain, fancy
means text occurs in URL, title, anchor
text, or meta tag.


-

each type is represented in the table



Data Structure

Forward index


Falling into barrels, each barrel has a range of
wordID. If a document contains words that fall
into a particular barrel, the docID is recorded
into the barrel, followed by a list of wordID’s with
hit lists which correspond to those words.
Furthermore, instead of storing actual wordID’s,
it store each wordID as a relative difference from
the minimum wordID.



Data structure

Inverted Index


The inverted index consists of the same barrels
as the forward index, except that they have been


processed by the sorter. For every valid wordID,
the lexicon contains a pointer into the barrel that


wordID falls into. It points to a doclist of docID’s
together with their corresponding hit lists. This
doclist represents all the occurrences of that
word in all documents.


Important: what order the docIDs should appear
in the doclist. Two ways.


Data Structure

Inverted Index (continue)


one by the docID


the other by a ranking of the occurrence of
the word in each document

Crawling the web

Using A fast distributed crawling system. A single
URLserver serves lists of URLs to a number of crawlers
(typically 3).

Each crawler keeps roughly 300 connections open at
once. At peak speeds, the system can crawl over 100
web pages per second using four crawlers.

Each crawler maintains a its own DNS cache so it does
not need to do a DNS lookup before crawling each
document.

These factors make the crawler a complex component of
the system. It uses asynchronous IO to manage events,
and a number of queues to move page fetches from
state to state.

Indexing the web

Parsing


For maximum speed, instead of using YACC to generate
a CFG parser, it uses flex to generate a lexical analyzer.

Indexing document into Barrels


Every word is converted into a wordID by using an in
-
memory hash table
--

the lexicon. Extra words are stored
in a small log file other than the base lexicon.

Sorting


In order to generate the inverted index, the sorter takes
each of the forward barrels and sorts it by wordID to
produce an inverted barrel for title and anchor hits and a
full text inverted barrel.







Searching

Goal is providing quality search results
efficiently, and focusing more on quality of
search.

1. Parse the query.

2. Convert words into wordIDs.

3. Seek to the start of the doclist in the short barrel for every
word.

4. Scan through the doclists until there is a document that
matches all the search terms.

5. Compute the rank of that document for the query.

6. If in the short barrels and at the end of any doclist, it seeks to
the start of the doclist in the full barrel for every word and go
to step 4.

7. If not at the end of any doclist go to step 4. It sorts the
documents that have matched by rank and return the top k.








Searching

The ranking system


For a single word query, Google
looks at that document’s hit list for
that word. Google considers each hit
to be one of several different types
(title, anchor, URL, plain text large
font, plain text small font, ...), each of
which has its own type
-
weight. The
type
-
weights make up a vector
indexed by type.



Searching

The ranking system


Google counts the number of hits of each type in
the hit list. Then every count is converted into a
count
-
weight. Count
-
weights increase linearly
with counts at first but quickly taper off so that
more than a certain count will not help. We take
the dot product of the vector of count
-
weights
with the vector of type
-
weights to compute an IR
score for the document. Finally, the IR score is
combined with PageRank to give a final rank to
the document.


Searching

The ranking system


For a multi
-
word search, the multiple hit lists are
scanned through at once so that hits occurring
close together in a document are weighted
higher than hits occurring far apart. The hits from
the multiple hit lists are matched up so that
nearby hits are matched together. For every
matched set of hits, a proximity is computed.
The proximity is based on how far apart the hits
are in the document (or anchor) but is classified
into 10 different value "bins" ranging from a
phrase match to "not even close".

Searching

The ranking system


Counts are computed not only for every
type of hit but for every type and proximity.
Every type and proximity pair has a type
-
prox
-
weight. The counts are converted into
count
-
weights. The dot product of the
count
-
weights and the type
-
prox
-
weights
are taken to compute an IR score.


Searching

User feedback


The ranking function has many parameters like
the type
-
weights and the type
-
prox
-
weights.
Figuring out the right values for these
parameters is something of a black art. In order
to do this, a user feedback mechanism is taken
in Google. A trusted user may optionally
evaluate all of the results that are returned. This
feedback is saved. Then the ranking function is
modified.

Results

Conclusions

Google is designed to be a scalable search
engine. The primary goal is to provide high
quality search results over a rapidly growing
World Wide Web.

Google employs a number of techniques to
improve search quality including page rank,
anchor text, and proximity information.

Furthermore, Google is a complete architecture
for gathering web pages, indexing them, and
performing search queries over them.


Directions of improvement

Query caching, smart disk allocation, and
sub
-
indices

Efficient way of updating old web pages

Adding Boolean operators

User context and result summarization

Relevance feedback and clustering

Example

In this example, the data for the pages is
partitioned across machines. Additionally, each
partition is allocated multiple machines to handle
the queries.


Each row can handle 120 queries per second


Each column can handle 7M pages


To handle more queries, add another row.