Jak działa wyszukiwanie dynamiczne Google?

134

Jakieś pomysły na to, jak dokładnie działa nowe błyskawiczne wyszukiwanie Google? Wygląda na to, że to tylko wywołania AJAX do starego wyszukiwania, ale dość trudno jest tak bardzo uprościć Google. Czy ktoś ma spekulacje?

EDYCJA: Wiem, że z każdym naciśnięciem klawisza wysyłany jest AJAX, ale czy jest to predykcyjne? A może myślisz, że to tylko zwykła stara wyszukiwarka Google?

DexterW
źródło
35
Podoba mi się, że za każdym razem, gdy Google robi coś fajnego, przynajmniej jedna osoba przyjdzie tutaj zastanawiając się, jak to zrobiła: D
BoltClock
Spójrz na ten link [jak Google zoptymalizował swój JavaScript pod kątem „natychmiastowych podglądów”] ( googlecode.blogspot.com/2010/11/... )
4
Google opublikował ten film w zeszłym roku,
pokazując

Odpowiedzi:

191

AKTUALIZACJA: Google właśnie opublikowało artykuł na blogu o nazwie Wyszukiwanie dynamiczne Google, zakulisowy . To ciekawa lektura i oczywiście związana z tym pytaniem. Możesz przeczytać, na przykład, jak poradzili sobie z dodatkowym obciążeniem (5-7X zgodnie z artykułem) po stronie serwera. Poniższa odpowiedź bada, co dzieje się po stronie klienta:


Badając za pomocą Firebug , Google wykonuje żądanie Ajax GET przy każdym naciśnięciu klawisza:

Wyszukiwanie błyskawiczne Google

Myślę, że działa to tak samo, jak automatyczne uzupełnianie. Jednak tym razem zwraca również wyniki wyszukiwania częściowo kompletnej frazy wyszukiwania w formacie JSON .

Badanie jednej z odpowiedzi JSON podczas wpisywania „Stack Overflow”:

Kucyki wyszukiwania błyskawicznego Google

Widzimy, że odpowiedź JSON zawiera treść do konstruowania wyników wyszukiwania podczas pisania.

Sformatowane odpowiedzi JSON wyglądają mniej więcej tak:

{
    e: "j9iHTLXlLNmXOJLQ3cMO",
    c: 1,
    u: "http://www.google.com/search?hl\x3den\x26expIds\x3d17259,24472,24923,25260,25901,25907,26095,26446,26530\x26sugexp\x3dldymls\x26xhr\x3dt\x26q\x3dStack%20Overflow\x26cp\x3d6\x26pf\x3dp\x26sclient\x3dpsy\x26aq\x3df\x26aqi\x3dg4g-o1\x26aql\x3d\x26oq\x3dStack+\x26gs_rfai\x3d\x26pbx\x3d1\x26fp\x3df97fdf10596ae095\x26tch\x3d1\x26ech\x3d1\x26psi\x3dj9iHTO3xBo2CONvDzaEO12839712156911",
    d: "\x3clink rel\x3dprefetch href\x3d\x22http://stackoverflow.com/\x22\x3e\x3cscript\x3eje.pa(_loc, \x27rso\x27, \x27\\x3c!--m--\\x3e\\x3clink rel\\x3dprefetch href\\x3d\\x22http://stackoverflow.com/\\x22\\x3e\\x3cli class\\x3dg\\x3e\\x3ch3 class\\x3d\\x22r\\x22\\x3e\\x3ca href\\x3d\\x22http://stackoverflow.com/\\x22 class\\x3dl onmousedown\\x3d\\x22return rwt(this,\\x27\\x27,\\x27\\x27,\\x27\\x27,\\x271\\x27,\\x27AFQjCNERidL9Hb6OvGW93_Y6MRj3aTdMVA\\x27,\\x27\\x27,\\x270CBYQFjAA\\x27)\\x22\\x3e\\x3cem\\x3eStack Overflow\\x3c/em\\x3e\\x3c/a\\x3e\\x3c/h3\\x3e\\x3cdiv class\\x3d\\x22s\\x22\\x3eA language-independent collaboratively edited question and answer site for programmers.\\x3cbr\\x3e\\x3cspan class\\x3df\\x3e\\x3ccite\\x3e\\x3cb\\x3estackoverflow\\x3c/b\\x3e.com/\\x3c/cite\\x3e - \\x3cspan class\\x3dgl\\x3e\\x3ca href\\x3d\\x22http://webcache.googleusercontent.com/search?q\\x3dcache:U1GC2GYOToIJ:stackoverflow.com/+Stack+Overflow\\x26amp;cd\\x3d1\\x26amp;hl\\x3den\\x26amp;ct\\x3dclnk\\x22 onmousedown\\x3d\\x22return rwt(this,\\x27\\x27,\\x27\\x27,\\x27\\x27,\\x271\\x27,\\x27AFQjCNFfKMag7Tq8CMbbfu8Gcj_GjukTbA\\x27,\\x27\\x27,\\x270CBgQIDAA\\x27)\\x22\\x3eCached\\x3c/a\\x3e - \\x3ca href\\x3d\\x22/search?hl\\x3den\\x26amp;q\\x3drelated:stackoverflow.com/+Stack+Overflow\\x26amp;tbo\\x3d1\\x26amp;sa\\x3dX\\x26amp;ei\\x3dj9iHTLXlLNmXOJLQ3cMO\\x26amp;sqi\\x3d2\\x26amp;ved\\x3d0CBkQHzAA\\x22\\x3eSimilar\\x3c/a\\x3e\\x3c/span\\x3e\\x3c/span\\x3e\\x3cbr\\x3e\\x3ctable class\\x3dslk style\\x3d\\x22border-collapse:collapse;margin-top:4px\\x22\\x3e\\x3ctr\\x3e\\x3ctd style\\x3d\\x22padding-left:14px;vertical-align:top\\x22\\x3e\\x3cdiv class\\x3dsld\\x3e\\x3ca class\\x3dsla href\\x3d\\x22http://stackoverflow.com/questions\\x22 onmousedown\\x3d\\x22return rwt(this,\\x27\\x27,\\x27\\x27,\\x27\\x27,\\x271\\x27,\\x27AFQjCNHmP78gEctJKvBrydP2c52F_FEjvA\\x27,\\x27\\x27,\\x270CBoQqwMoADAA\\x27)\\x22\\x3eQuestions\\x3c/a\\x3e\\x3c/div\\x3e\\x3cdiv class\\x3dsld\\x3e\\x3ca class\\x3dsla href\\x3d\\x22http://stackoverflow.com/questions/ask\\x22 onmousedown\\x3d\\x22return rwt(this,\\x27\\x27,\\x27\\x27,\\x27\\x27,\\x271\\x27,\\x27AFQjCNGZF-qwWVTZOWPlr4vgSA7qB64LLQ\\x27,\\x27\\x27,\\x270CBsQqwMoATAA\\x27)\\x22\\x3eAsk Question\\x3c/a\\x3e\\x3c/div\\x3e\\x3cdiv class\\x3dsld\\x3e\\x3ca class\\x3dsla href\\x3d\\x22http://stackoverflow.com/users/135152/omg-ponies\\x22 onmousedown\\x3d\\x22return rwt(this,\\x27\\x27,\\x27\\x27,\\x27\\x27,\\x271\\x27,\\x27AFQjCNE9zo6Qi_AM1bjmPGeMGfbnPi3niA\\x27,\\x27\\x27,\\x270CBwQqwMoAjAA\\x27)\\x22\\x3eOMG Ponies\\x3c/a\\x3e\\x3c/div\\x3e\\x3cdiv class\\x3dsld\\x3e\\x3ca class\\x3dsla href\\x3d\\x22http://careers.stackoverflow.com/\\x22 onmousedown\\x3d\\x22return rwt(this,\\x27\\x27,\\x27\\x27,\\x27\\x27,\\x271\\x27,\\x27AFQjCNEaqlBrfDcc1gdPZ6dgthff0s5WmA\\x27,\\x27\\x27,\\x270CB0QqwMoAzAA\\x27)\\x22\\x3eCareers\\x3c/a\\x3e\\x3c/div\\x3e\\x3ctd style\\x3d\\x22padding-left:14px;vertical-align:top\\x22\\x3e\\x3cdiv class\\x3dsld\\x3e\\x3ca class\\x3dsla href\\x3d\\x22http://stackoverflow.com/about\\x22 onmousedown\\x3d\\x22return rwt(this,\\x27\\x27,\\x27\\x27,\\x27\\x27,\\x271\\x27,\\x27AFQjCNEqgPttrXj3r4o3TZHX5WaWvFe1HQ\\x27,\\x27\\x27,\\x270CB4QqwMoBDAA\\x27)\\x22\\x3eAbout\\x3c/a\\x3e\\x3c/div\\x3e\\x3cdiv class\\x3dsld\\x3e\\x3ca class\\x3dsla href\\x3d\\x22http://stackoverflow.com/faq\\x22 onmousedown\\x3d\\x22return rwt(this,\\x27\\x27,\\x27\\x27,\\x27\\x27,\\x271\\x27,\\x27AFQjCNF3X3eRc0RsxYynXZhhbyYkuKWZ5g\\x27,\\x27\\x27,\\x270CB8QqwMoBTAA\\x27)\\x22\\x3eThe FAQ\\x3c/a\\x3e\\x3c/div\\x3e\\x3cdiv class\\x3dsld\\x3e\\x3ca class\\x3dsla href\\x3d\\x22http://blog.stackoverflow.com/\\x22 onmousedown\\x3d\\x22return rwt(this,\\x27\\x27,\\x27\\x27,\\x27\\x27,\\x271\\x27,\\x27AFQjCNG7KphjK6RuC5cj-6U5jeuvipt5dg\\x27,\\x27\\x27,\\x270CCAQqwMoBjAA\\x27)\\x22\\x3eBlog\\x3c/a\\x3e\\x3c/div\\x3e\\x3cdiv class\\x3dsld\\x3e\\x3ca class\\x3dsla href\\x3d\\x22http://stackoverflow.com/users\\x22 onmousedown\\x3d\\x22return rwt(this,\\x27\\x27,\\x27\\x27,\\x27\\x27,\\x271\\x27,\\x27AFQjCNFfN_wcGm4HE5XpDxvcH4bIrkv2dw\\x27,\\x27\\x27,\\x270CCEQqwMoBzAA\\x27)\\x22\\x3eUsers\\x3c/a\\x3e\\x3c/div\\x3e\\x3ctr\\x3e\\x3ctd colspan\\x3d2 style\\x3d\\x22padding-left:14px;vertical-align:top\\x22\\x3e\\x3cdiv style\\x3d\\x22padding-top:6px\\x22\\x3e\\x3ca class\\x3dfl href\\x3d\\x22/search?hl\\x3den\\x26amp;q\\x3d+site:stackoverflow.com+Stack+Overflow\\x26amp;sa\\x3dX\\x26amp;ei\\x3dj9iHTLXlLNmXOJLQ3cMO\\x26amp;sqi\\x3d2\\x26amp;ved\\x3d0CCIQrAM\\x22\\x3eMore results from stackoverflow.com\\x26nbsp;\\x26raquo;\\x3c/a\\x3e\\x3c/div\\x3e\\x3c/table\\x3e\\x3c/div\\x3e\\x3c!--n--\\x3e\\x3c!--m--\\x3e\\x3cli class\\x3dg\\x3e\\x3ch3 class\\x3d\\x22r\\x22\\x3e\\x3ca href\\x3d\\x22http://stackoverflow.com/questions\\x22 class\\x3dl onmousedown\\x3d\\x22return rwt(this,\\x27\\x27,\\x27\\x27,\\x27\\x27,\\x272\\x27,\\x27AFQjCNHmP78gEctJKvBrydP2c52F_FEjvA\\x27,\\x27\\x27,\\x270CCUQFjAB\\x27)\\x22\\x3eHottest Questions - \\x3cem\\x3eStack Overflow\\x3c/em\\x3e\\x3c/a\\x3e\\x3c/h3\\x3e\\x3cdiv class\\x3d\\x22s\\x22\\x3eHello \\x3cem\\x3eStack Overflow\\x3c/em\\x3e! I\\x26#39;m working with someone else\\x26#39;s PHP function that works fine as long as I pass it at least three arguments. If I pass it two argument, \\x3cb\\x3e...\\x3c/b\\x3e\\x3cbr\\x3e\\x3cspan class\\x3df\\x3e\\x3ccite\\x3e\\x3cb\\x3estackoverflow\\x3c/b\\x3e.com/questions\\x3c/cite\\x3e - \\x3cspan class\\x3dgl\\x3e\\x3ca href\\x3d\\x22http://webcache.googleusercontent.com/search?q\\x3dcache:6S_0sErDKfQJ:stackoverflow.com/questions+Stack+Overflow\\x26amp;cd\\x3d2\\x26amp;hl\\x3den\\x26amp;ct\\x3dclnk\\x22 onmousedown\\x3d\\x22return rwt(this,\\x27\\x27,\\x27\\x27,\\x27\\x27,\\x272\\x27,\\x27AFQjCNH7WHzefYlnS05ln4j6rzfE3byDKg\\x27,\\x27\\x27,\\x270CCcQIDAB\\x27)\\x22\\x3eCached\\x3c/a\\x3e - \\x3ca href\\x3d\\x22/search?hl\\x3den\\x26amp;q\\x3drelated:stackoverflow.com/questions+Stack+Overflow\\x26amp;tbo\\x3d1\\x26amp;sa\\x3dX\\x26amp;ei\\x3dj9iHTLXlLNmXOJLQ3cMO\\x26amp;sqi\\x3d2\\x26amp;ved\\x3d0CCgQHzAB\\x22\\x3eSimilar\\x3c/a\\x3e\\x3c/span\\x3e\\x3c/span\\x3e\\x3c/div\\x3e\\x3c!--n--\\x3e\\x3c!--m--\\x3e\\x3cli class\\x3dg\\x3e\\x3ch3 class\\x3d\\x22r\\x22\\x3e\\x3ca href\\x3d\\x22http://en.wikipedia.org/wiki/Stack_overflow\\x22 class\\x3dl onmousedown\\x3d\\x22return rwt(this,\\x27\\x27,\\x27\\x27,\\x27\\x27,\\x273\\x27,\\x27AFQjCNEAxaeWmWtD7cBcmZ5QBMsTRNbnCw\\x27,\\x27\\x27,\\x270CCkQFjAC\\x27)\\x22\\x3e\\x3cem\\x3eStack overflow\\x3c/em\\x3e - Wikipedia, the free encyclopedia\\x3c/a\\x3e\\x3c/h3\\x3e\\x3cdiv class\\x3d\\x22s\\x22\\x3eIn software, a \\x3cem\\x3estack overflow\\x3c/em\\x3e occurs when too much memory is used on the call stack. The call stack contains a limited amount of memory,  often determined at \\x3cb\\x3e...\\x3c/b\\x3e\\x3cbr\\x3e\\x3cspan class\\x3df\\x3e\\x3ccite\\x3een.wikipedia.org/wiki/\\x3cb\\x3eStack\\x3c/b\\x3e_\\x3cb\\x3eoverflow\\x3c/b\\x3e\\x3c/cite\\x3e - \\x3cspan class\\x3dgl\\x3e\\x3ca href\\x3d\\x22http://webcache.googleusercontent.com/search?q\\x3dcache:mWu8b0BQAmwJ:en.wikipedia.org/wiki/Stack_overflow+Stack+Overflow\\x26amp;cd\\x3d3\\x26amp;hl\\x3den\\x26amp;ct\\x3dclnk\\x22 onmousedown\\x3d\\x22return rwt(this,\\x27\\x27,\\x27\\x27,\\x27\\x27,\\x273\\x27,\\x27AFQjCNFG_5ndK-KmWJy6s3pOsi8lsxqEZg\\x27,\\x27\\x27,\\x270CCsQIDAC\\x27)\\x22\\x3eCached\\x3c/a\\x3e - \\x3ca href\\x3d\\x22/search?hl\\x3den\\x26amp;q\\x3drelated:en.wikipedia.org/wiki/Stack_overflow+Stack+Overflow\\x26amp;tbo\\x3d1\\x26amp;sa\\x3dX\\x26amp;ei\\x3dj9iHTLXlLNmXOJLQ3cMO\\x26amp;sqi\\x3d2\\x26amp;ved\\x3d0CCwQHzAC\\x22\\x3eSimilar\\x3c/a\\x3e\\x3c/span\\x3e\\x3c/span\\x3e\\x3c/div\\x3e\\x3c!--n--\\x3e\\x3c!--m--\\x3e\\x3cli class\\x3dg\\x3e\\x3ch3 class\\x3d\\x22r\\x22\\x3e\\x3ca href\\x3d\\x22http://blog.stackoverflow.com/\\x22 class\\x3dl onmousedown\\x3d\\x22return rwt(this,\\x27\\x27,\\x27\\x27,\\x27\\x27,\\x274\\x27,\\x27AFQjCNG7KphjK6RuC5cj-6U5jeuvipt5dg\\x27,\\x27\\x27,\\x270CC0QFjAD\\x27)\\x22\\x3eBlog – \\x3cem\\x3eStack Overflow\\x3c/em\\x3e\\x3c/a\\x3e\\x3c/h3\\x3e\\x3cdiv class\\x3d\\x22s\\x22\\x3e6 Sep 2010 \\x3cb\\x3e...\\x3c/b\\x3e The latest version of the \\x3cem\\x3eStack Overflow\\x3c/em\\x3e Trilogy Creative Commons Data Dump is now available. This reflects all public  data in … \\x3cb\\x3e...\\x3c/b\\x3e\\x3cbr\\x3e\\x3cspan class\\x3df\\x3e\\x3ccite\\x3eblog.\\x3cb\\x3estackoverflow\\x3c/b\\x3e.com/\\x3c/cite\\x3e - \\x3cspan class\\x3dgl\\x3e\\x3ca href\\x3d\\x22http://webcache.googleusercontent.com/search?q\\x3dcache:iqtvg9Ge1c0J:blog.stackoverflow.com/+Stack+Overflow\\x26amp;cd\\x3d4\\x26amp;hl\\x3den\\x26amp;ct\\x3dclnk\\x22 onmousedown\\x3d\\x22return rwt(this,\\x27\\x27,\\x27\\x27,\\x27\\x27,\\x274\\x27,\\x27AFQjCNFX2P2-RTCs_GaR6NgSw30p007UEA\\x27,\\x27\\x27,\\x270CC8QIDAD\\x27)\\x22\\x3eCached\\x3c/a\\x3e - \\x3ca href\\x3d\\x22/search?hl\\x3den\\x26amp;q\\x3drelated:blog.stackoverflow.com/+Stack+Overflow\\x26amp;tbo\\x3d1\\x26amp;sa\\x3dX\\x26amp;ei\\x3dj9iHTLXlLNmXOJLQ3cMO\\x26amp;sqi\\x3d2\\x26amp;ved\\x3d0CDAQHzAD\\x22\\x3eSimilar\\x3c/a\\x3e\\x3c/span\\x3e\\x3c/span\\x3e\\x3c/div\\x3e\\x3c!--n--\\x3e\x27,_ss);\x3c/script\x3e"
}/*""*/{
    e: "j9iHTLXlLNmXOJLQ3cMO",
    c: 1,
    u: "http://www.google.com/search?hl\x3den\x26expIds\x3d17259,24472,24923,25260,25901,25907,26095,26446,26530\x26sugexp\x3dldymls\x26xhr\x3dt\x26q\x3dStack%20Overflow\x26cp\x3d6\x26pf\x3dp\x26sclient\x3dpsy\x26aq\x3df\x26aqi\x3dg4g-o1\x26aql\x3d\x26oq\x3dStack+\x26gs_rfai\x3d\x26pbx\x3d1\x26fp\x3df97fdf10596ae095\x26tch\x3d1\x26ech\x3d1\x26psi\x3dj9iHTO3xBo2CONvDzaEO12839712156911",
    d: "\x3cscript\x3eje.pa(_loc, \x27rso\x27, \x27\\x3c!--m--\\x3e\\x3cli class\\x3dg style\\x3d\\x22margin-left:16px\\x22\\x3e\\x3ch3 class\\x3d\\x22r hcw\\x22\\x3e\\x3ca href\\x3d\\x22http://blog.stackoverflow.com/category/podcasts/\\x22 class\\x3dl onmousedown\\x3d\\x22return rwt(this,\\x27\\x27,\\x27\\x27,\\x27\\x27,\\x275\\x27,\\x27AFQjCNGnAJSxUa4GLcg-E7PNvIFmPC53gQ\\x27,\\x27\\x27,\\x270CDEQFjAE\\x27)\\x22\\x3epodcasts - Blog – \\x3cem\\x3eStack Overflow\\x3c/em\\x3e\\x3c/a\\x3e\\x3c/h3\\x3e\\x3cdiv class\\x3d\\x22s hc\\x22\\x3eJoel and Jeff sit down with our new community coordinator, Robert Cartaino, to record a “bonus” podcast discussing the future of \\x3cem\\x3eStack Overflow\\x3c/em\\x3e and Stack \\x3cb\\x3e...\\x3c/b\\x3e\\x3cbr\\x3e\\x3cspan class\\x3df\\x3e\\x3ccite\\x3eblog.\\x3cb\\x3estackoverflow\\x3c/b\\x3e.com/category/podcasts/\\x3c/cite\\x3e - \\x3cspan class\\x3dgl\\x3e\\x3ca href\\x3d\\x22http://webcache.googleusercontent.com/search?q\\x3dcache:JT0sWmmtiAEJ:blog.stackoverflow.com/category/podcasts/+Stack+Overflow\\x26amp;cd\\x3d5\\x26amp;hl\\x3den\\x26amp;ct\\x3dclnk\\x22 onmousedown\\x3d\\x22return rwt(this,\\x27\\x27,\\x27\\x27,\\x27\\x27,\\x275\\x27,\\x27AFQjCNErCiLBch55HA8i5BAdChcmQYH8nw\\x27,\\x27\\x27,\\x270CDMQIDAE\\x27)\\x22\\x3eCached\\x3c/a\\x3e - \\x3ca href\\x3d\\x22/search?hl\\x3den\\x26amp;q\\x3drelated:blog.stackoverflow.com/category/podcasts/+Stack+Overflow\\x26amp;tbo\\x3d1\\x26amp;sa\\x3dX\\x26amp;ei\\x3dj9iHTLXlLNmXOJLQ3cMO\\x26amp;sqi\\x3d2\\x26amp;ved\\x3d0CDQQHzAE\\x22\\x3eSimilar\\x3c/a\\x3e\\x3c/span\\x3e\\x3c/span\\x3e\\x3c/div\\x3e\\x3c!--n--\\x3e\\x3c!--m--\\x3e\\x3cli class\\x3dg\\x3e\\x3ch3 class\\x3d\\x22r\\x22\\x3e\\x3ca href\\x3d\\x22http://itc.conversationsnetwork.org/series/stackoverflow.html\\x22 class\\x3dl onmousedown\\x3d\\x22return rwt(this,\\x27\\x27,\\x27\\x27,\\x27\\x27,\\x276\\x27,\\x27AFQjCNHG9l1PMbilYkhohNFuj3g6ce1LuA\\x27,\\x27\\x27,\\x270CDUQFjAF\\x27)\\x22\\x3e\\x3cem\\x3eStackOverflow\\x3c/em\\x3e\\x3c/a\\x3e\\x3c/h3\\x3e\\x3cdiv class\\x3d\\x22s\\x22\\x3eJoel and Jeff sit down with our new community coordinator, Robert Cartaino, to discuss the future of \\x3cem\\x3eStack Overflow\\x3c/em\\x3e and Stack Exchange 2.0. \\x3cb\\x3e...\\x3c/b\\x3e\\x3cbr\\x3e\\x3cspan class\\x3df\\x3e\\x3ccite\\x3eitc.conversationsnetwork.org/series/\\x3cb\\x3estackoverflow\\x3c/b\\x3e.html\\x3c/cite\\x3e - \\x3cspan class\\x3dgl\\x3e\\x3ca href\\x3d\\x22http://webcache.googleusercontent.com/search?q\\x3dcache:8MkFpx7D4wYJ:itc.conversationsnetwork.org/series/stackoverflow.html+Stack+Overflow\\x26amp;cd\\x3d6\\x26amp;hl\\x3den\\x26amp;ct\\x3dclnk\\x22 onmousedown\\x3d\\x22return rwt(this,\\x27\\x27,\\x27\\x27,\\x27\\x27,\\x276\\x27,\\x27AFQjCNFP62Bg_o2kaz3jzXxzsrTs_7RdNA\\x27,\\x27\\x27,\\x270CDcQIDAF\\x27)\\x22\\x3eCached\\x3c/a\\x3e - \\x3ca href\\x3d\\x22/search?hl\\x3den\\x26amp;q\\x3drelated:itc.conversationsnetwork.org/series/stackoverflow.html+Stack+Overflow\\x26amp;tbo\\x3d1\\x26amp;sa\\x3dX\\x26amp;ei\\x3dj9iHTLXlLNmXOJLQ3cMO\\x26amp;sqi\\x3d2\\x26amp;ved\\x3d0CDgQHzAF\\x22\\x3eSimilar\\x3c/a\\x3e\\x3c/span\\x3e\\x3c/span\\x3e\\x3c/div\\x3e\\x3c!--n--\\x3e\\x3c!--m--\\x3e\\x3cli class\\x3dg\\x3e\\x3ch3 class\\x3d\\x22r\\x22\\x3e\\x3ca href\\x3d\\x22http://support.microsoft.com/kb/145799\\x22 class\\x3dl onmousedown\\x3d\\x22return rwt(this,\\x27\\x27,\\x27\\x27,\\x27\\x27,\\x277\\x27,\\x27AFQjCNHzyj5rHEX7IiyFWnP0ziE3B32rGg\\x27,\\x27\\x27,\\x270CDkQFjAG\\x27)\\x22\\x3eHow to Troubleshoot Windows Internal \\x3cem\\x3eStack Overflow\\x3c/em\\x3e Error Messages\\x3c/a\\x3e\\x3c/h3\\x3e\\x3cdiv class\\x3d\\x22s\\x22\\x3eThis article lists steps to help you troubleshoot problems with \\x3cem\\x3estack overflow\\x3c/em\\x3e errors in  Windows. Stacks are reserved memory that programs use to process \\x3cb\\x3e...\\x3c/b\\x3e\\x3cbr\\x3e\\x3cspan class\\x3df\\x3e\\x3ccite\\x3esupport.microsoft.com/kb/145799\\x3c/cite\\x3e - \\x3cspan class\\x3dgl\\x3e\\x3ca href\\x3d\\x22http://webcache.googleusercontent.com/search?q\\x3dcache:ECO9ORCsraAJ:support.microsoft.com/kb/145799+Stack+Overflow\\x26amp;cd\\x3d7\\x26amp;hl\\x3den\\x26amp;ct\\x3dclnk\\x22 onmousedown\\x3d\\x22return rwt(this,\\x27\\x27,\\x27\\x27,\\x27\\x27,\\x277\\x27,\\x27AFQjCNHYsox9EW1Ye9Nn2G6WQzEpJDOzcw\\x27,\\x27\\x27,\\x270CDsQIDAG\\x27)\\x22\\x3eCached\\x3c/a\\x3e - \\x3ca href\\x3d\\x22/search?hl\\x3den\\x26amp;q\\x3drelated:support.microsoft.com/kb/145799+Stack+Overflow\\x26amp;tbo\\x3d1\\x26amp;sa\\x3dX\\x26amp;ei\\x3dj9iHTLXlLNmXOJLQ3cMO\\x26amp;sqi\\x3d2\\x26amp;ved\\x3d0CDwQHzAG\\x22\\x3eSimilar\\x3c/a\\x3e\\x3c/span\\x3e\\x3c/span\\x3e\\x3c/div\\x3e\\x3c!--n--\\x3e\\x3c!--m--\\x3e\\x3cli class\\x3dg\\x3e\\x3ch3 class\\x3d\\x22r\\x22\\x3e\\x3ca href\\x3d\\x22http://stackoverflow.carsonified.com/\\x22 class\\x3dl onmousedown\\x3d\\x22return rwt(this,\\x27\\x27,\\x27\\x27,\\x27\\x27,\\x278\\x27,\\x27AFQjCNHcEPoch5soLj2CpLpRfnW-Z2-aLw\\x27,\\x27\\x27,\\x270CD0QFjAH\\x27)\\x22\\x3e\\x3cem\\x3eStackOverflow\\x3c/em\\x3e DevDays » Home\\x3c/a\\x3e\\x3c/h3\\x3e\\x3cdiv class\\x3d\\x22s\\x22\\x3e\\x3cem\\x3eStackOverflow\\x3c/em\\x3e Dev Days is run by Carsonified, so please give us a shout if you need anything or are interested in sponsoring the event. \\x3cb\\x3e...\\x3c/b\\x3e\\x3cbr\\x3e\\x3cspan class\\x3df\\x3e\\x3ccite\\x3e\\x3cb\\x3estackoverflow\\x3c/b\\x3e.carsonified.com/\\x3c/cite\\x3e - \\x3cspan class\\x3dgl\\x3e\\x3ca href\\x3d\\x22http://webcache.googleusercontent.com/search?q\\x3dcache:uhl8NPgikN0J:stackoverflow.carsonified.com/+Stack+Overflow\\x26amp;cd\\x3d8\\x26amp;hl\\x3den\\x26amp;ct\\x3dclnk\\x22 onmousedown\\x3d\\x22return rwt(this,\\x27\\x27,\\x27\\x27,\\x27\\x27,\\x278\\x27,\\x27AFQjCNFf9Vl5L3FaQGPapUpIFw5gqVUCnA\\x27,\\x27\\x27,\\x270CD8QIDAH\\x27)\\x22\\x3eCached\\x3c/a\\x3e - \\x3ca href\\x3d\\x22/search?hl\\x3den\\x26amp;q\\x3drelated:stackoverflow.carsonified.com/+Stack+Overflow\\x26amp;tbo\\x3d1\\x26amp;sa\\x3dX\\x26amp;ei\\x3dj9iHTLXlLNmXOJLQ3cMO\\x26amp;sqi\\x3d2\\x26amp;ved\\x3d0CEAQHzAH\\x22\\x3eSimilar\\x3c/a\\x3e\\x3c/span\\x3e\\x3c/span\\x3e\\x3c/div\\x3e\\x3c!--n--\\x3e\\x3c!--m--\\x3e\\x3cli class\\x3dg\\x3e\\x3ch3 class\\x3d\\x22r\\x22\\x3e\\x3ca href\\x3d\\x22http://stackoverflow.org/\\x22 class\\x3dl onmousedown\\x3d\\x22return rwt(this,\\x27\\x27,\\x27\\x27,\\x27\\x27,\\x279\\x27,\\x27AFQjCNF-YrPvTLTJlFFDJrJE0cjGdlOpbg\\x27,\\x27\\x27,\\x270CEEQFjAI\\x27)\\x22\\x3e\\x3cem\\x3eStackOverflow\\x3c/em\\x3e.org\\x3c/a\\x3e\\x3c/h3\\x3e\\x3cdiv class\\x3d\\x22s\\x22\\x3e\\x3cem\\x3eStackOverflow\\x3c/em\\x3e.org began as the merging of two ideas that have been kicking around in my head for years. First, I wanted a dorky programming-related domain \\x3cb\\x3e...\\x3c/b\\x3e\\x3cbr\\x3e\\x3cspan class\\x3df\\x3e\\x3ccite\\x3e\\x3cb\\x3estackoverflow\\x3c/b\\x3e.org/\\x3c/cite\\x3e - \\x3cspan class\\x3dgl\\x3e\\x3ca href\\x3d\\x22http://webcache.googleusercontent.com/search?q\\x3dcache:u0dIlJW-XMYJ:stackoverflow.org/+Stack+Overflow\\x26amp;cd\\x3d9\\x26amp;hl\\x3den\\x26amp;ct\\x3dclnk\\x22 onmousedown\\x3d\\x22return rwt(this,\\x27\\x27,\\x27\\x27,\\x27\\x27,\\x279\\x27,\\x27AFQjCNHcJcV2QVybr6voztyPwHCrNOOD1w\\x27,\\x27\\x27,\\x270CEMQIDAI\\x27)\\x22\\x3eCached\\x3c/a\\x3e - \\x3ca href\\x3d\\x22/search?hl\\x3den\\x26amp;q\\x3drelated:stackoverflow.org/+Stack+Overflow\\x26amp;tbo\\x3d1\\x26amp;sa\\x3dX\\x26amp;ei\\x3dj9iHTLXlLNmXOJLQ3cMO\\x26amp;sqi\\x3d2\\x26amp;ved\\x3d0CEQQHzAI\\x22\\x3eSimilar\\x3c/a\\x3e\\x3c/span\\x3e\\x3c/span\\x3e\\x3c/div\\x3e\\x3c!--n--\\x3e\\x3c!--m--\\x3e\\x3cli class\\x3dg\\x3e\\x3ch3 class\\x3d\\x22r\\x22\\x3e\\x3ca href\\x3d\\x22http://embeddedgurus.com/stack-overflow/\\x22 class\\x3dl onmousedown\\x3d\\x22return rwt(this,\\x27\\x27,\\x27\\x27,\\x27\\x27,\\x2710\\x27,\\x27AFQjCNFYQ5E8irNUCpRsbOHHyfc0oqGpWw\\x27,\\x27\\x27,\\x270CEUQFjAJ\\x27)\\x22\\x3e\\x3cem\\x3eStack Overflow\\x3c/em\\x3e\\x3c/a\\x3e\\x3c/h3\\x3e\\x3cdiv class\\x3d\\x22s\\x22\\x3e\\x3cem\\x3eStack Overflow\\x3c/em\\x3e. Nigel Jones. Nigel Jones has over 20 years of experience designing electronic circuits and firmware. (full bio). Pages. Contact Nigel. Links \\x3cb\\x3e...\\x3c/b\\x3e\\x3cbr\\x3e\\x3cspan class\\x3df\\x3e\\x3ccite\\x3eembeddedgurus.com/\\x3cb\\x3estack\\x3c/b\\x3e-\\x3cb\\x3eoverflow\\x3c/b\\x3e/\\x3c/cite\\x3e - \\x3cspan class\\x3dgl\\x3e\\x3ca href\\x3d\\x22http://webcache.googleusercontent.com/search?q\\x3dcache:Rl_rUfEG_fIJ:embeddedgurus.com/stack-overflow/+Stack+Overflow\\x26amp;cd\\x3d10\\x26amp;hl\\x3den\\x26amp;ct\\x3dclnk\\x22 onmousedown\\x3d\\x22return rwt(this,\\x27\\x27,\\x27\\x27,\\x27\\x27,\\x2710\\x27,\\x27AFQjCNFqMjsc1pBI9JexjMSPY7wm5QLI8w\\x27,\\x27\\x27,\\x270CEcQIDAJ\\x27)\\x22\\x3eCached\\x3c/a\\x3e\\x3c/span\\x3e\\x3c/span\\x3e\\x3c/div\\x3e\\x3c!--n--\\x3e\x27,_ss);\x3c/script\x3e"
}/*""*/{
    e: "j9iHTLXlLNmXOJLQ3cMO",
    c: 1,
    u: "http://www.google.com/search?hl\x3den\x26expIds\x3d17259,24472,24923,25260,25901,25907,26095,26446,26530\x26sugexp\x3dldymls\x26xhr\x3dt\x26q\x3dStack%20Overflow\x26cp\x3d6\x26pf\x3dp\x26sclient\x3dpsy\x26aq\x3df\x26aqi\x3dg4g-o1\x26aql\x3d\x26oq\x3dStack+\x26gs_rfai\x3d\x26pbx\x3d1\x26fp\x3df97fdf10596ae095\x26tch\x3d1\x26ech\x3d1\x26psi\x3dj9iHTO3xBo2CONvDzaEO12839712156911",
    d: "\x3cscript\x3eje.p(_loc,\x27botstuff\x27,\x27 \\x3cdiv id\\x3dbrs style\\x3d\\x22clear:both;margin-bottom:17px;overflow:hidden\\x22\\x3e\\x3cdiv class\\x3d\\x22med\\x22 style\\x3d\\x22text-align:left\\x22\\x3eSearches related to \\x3cem\\x3eStack Overflow\\x3c/em\\x3e\\x3c/div\\x3e\\x3cdiv class\\x3dbrs_col\\x3e\\x3cp\\x3e\\x3ca href\\x3d\\x22/search?hl\\x3den\\x26amp;q\\x3dstack+overflow+error\\x26amp;revid\\x3d-1\\x26amp;sa\\x3dX\\x26amp;ei\\x3dj9iHTLXlLNmXOJLQ3cMO\\x26amp;sqi\\x3d2\\x26amp;ved\\x3d0CEkQ1QIoAA\\x22\\x3estack overflow \\x3cb\\x3eerror\\x3c/b\\x3e\\x3c/a\\x3e\\x3c/p\\x3e\\x3cp\\x3e\\x3ca href\\x3d\\x22/search?hl\\x3den\\x26amp;q\\x3dstack+overflow+internet+explorer\\x26amp;revid\\x3d-1\\x26amp;sa\\x3dX\\x26amp;ei\\x3dj9iHTLXlLNmXOJLQ3cMO\\x26amp;sqi\\x3d2\\x26amp;ved\\x3d0CEoQ1QIoAQ\\x22\\x3estack overflow \\x3cb\\x3einternet explorer\\x3c/b\\x3e\\x3c/a\\x3e\\x3c/p\\x3e\\x3cp\\x3e\\x3ca href\\x3d\\x22/search?hl\\x3den\\x26amp;q\\x3dfix+stack+overflow\\x26amp;revid\\x3d-1\\x26amp;sa\\x3dX\\x26amp;ei\\x3dj9iHTLXlLNmXOJLQ3cMO\\x26amp;sqi\\x3d2\\x26amp;ved\\x3d0CEsQ1QIoAg\\x22\\x3e\\x3cb\\x3efix\\x3c/b\\x3e stack overflow\\x3c/a\\x3e\\x3c/p\\x3e\\x3cp\\x3e\\x3ca href\\x3d\\x22/search?hl\\x3den\\x26amp;q\\x3dstack+overflow+xp\\x26amp;revid\\x3d-1\\x26amp;sa\\x3dX\\x26amp;ei\\x3dj9iHTLXlLNmXOJLQ3cMO\\x26amp;sqi\\x3d2\\x26amp;ved\\x3d0CEwQ1QIoAw\\x22\\x3estack overflow \\x3cb\\x3exp\\x3c/b\\x3e\\x3c/a\\x3e\\x3c/p\\x3e\\x3c/div\\x3e\\x3cdiv class\\x3dbrs_col\\x3e\\x3cp\\x3e\\x3ca href\\x3d\\x22/search?hl\\x3den\\x26amp;q\\x3dstack+overflow+javascript\\x26amp;revid\\x3d-1\\x26amp;sa\\x3dX\\x26amp;ei\\x3dj9iHTLXlLNmXOJLQ3cMO\\x26amp;sqi\\x3d2\\x26amp;ved\\x3d0CE0Q1QIoBA\\x22\\x3estack overflow \\x3cb\\x3ejavascript\\x3c/b\\x3e\\x3c/a\\x3e\\x3c/p\\x3e\\x3cp\\x3e\\x3ca href\\x3d\\x22/search?hl\\x3den\\x26amp;q\\x3dstack+overflow+java\\x26amp;revid\\x3d-1\\x26amp;sa\\x3dX\\x26amp;ei\\x3dj9iHTLXlLNmXOJLQ3cMO\\x26amp;sqi\\x3d2\\x26amp;ved\\x3d0CE4Q1QIoBQ\\x22\\x3estack overflow \\x3cb\\x3ejava\\x3c/b\\x3e\\x3c/a\\x3e\\x3c/p\\x3e\\x3cp\\x3e\\x3ca href\\x3d\\x22/search?hl\\x3den\\x26amp;q\\x3dstack+overflow+c%2B%2B\\x26amp;revid\\x3d-1\\x26amp;sa\\x3dX\\x26amp;ei\\x3dj9iHTLXlLNmXOJLQ3cMO\\x26amp;sqi\\x3d2\\x26amp;ved\\x3d0CE8Q1QIoBg\\x22\\x3estack overflow \\x3cb\\x3ec++\\x3c/b\\x3e\\x3c/a\\x3e\\x3c/p\\x3e\\x3cp\\x3e\\x3ca href\\x3d\\x22/search?hl\\x3den\\x26amp;q\\x3dstack+overflow+windows+xp\\x26amp;revid\\x3d-1\\x26amp;sa\\x3dX\\x26amp;ei\\x3dj9iHTLXlLNmXOJLQ3cMO\\x26amp;sqi\\x3d2\\x26amp;ved\\x3d0CFAQ1QIoBw\\x22\\x3estack overflow \\x3cb\\x3ewindows xp\\x3c/b\\x3e\\x3c/a\\x3e\\x3c/p\\x3e\\x3c/div\\x3e\\x3c/div\\x3e \x27,_ss);/*  */\x3c/script\x3e"
}/*""*/

Dalsza lektura nietechniczna:

Daniel Vassallo
źródło
Tak, widziałem to, ale czy są jakieś przewidywania, czy myślisz, że to tylko proste wyszukiwanie w Google?
DexterW,
@DexterW: Myślę, że to ta sama predykcja, która była (jest) dla automatycznego uzupełniania.
Daniel Vassallo
Czy nie jest to nadmierne wykorzystanie zasobów? Tak, wiem, że pamięć jest tania, ale czy to przesada polegająca na wykonywaniu żądań AJAX dla każdego typu klucza? @Daniel Również dla swoich serwerów?
zengr
@zengr: Masz na myśli klienta (nas) czy dla nich? ... Jak dla mnie działa bardzo szybko w Chrome, a ponieważ płacę za przepustowość, bez względu na to, czy go używam, czy nie, nie mam z tym problemu. Google twierdzi, że planują wyłączyć to automatycznie w przypadku wolnych połączeń internetowych.
Daniel Vassallo
1
@zengr: Tak, to interesujące pytanie. Jestem pewien, że to dodaje sporo obciążenia.
Daniel Vassallo
16

Jak powiedzieli inni, Google natychmiast zwraca wyniki dla najlepszego wyniku sugerowanego przez Google Suggest . Dlatego jeśli wpiszesz fac , Google Sugeruje, że piszesz na Facebooku . Co ciekawe, tylko częściowa wyszukiwana fraza, fac , jest wysyłana do Google w żądaniu JSON, więc Google Suggest jest używany na obu końcach.

W rzeczywistości wyszukiwania nie są wykonywane po każdym naciśnięciu klawisza. Jeśli piszesz wystarczająco szybko, niektóre mogą zostać pominięte.

Podejrzewam, że nie zwiększa to obciążenia serwerów Google tak bardzo, jak mogłoby się wydawać. Większość dodatkowych wyszukiwań dotyczy bardzo popularnych słów, gdy zaczynasz wpisywać rzeczy - jeśli zaczniesz szukać czegoś zaczynającego się na f , to wyszuka facebook , jeśli zaczniesz szukać czegoś zaczynającego się na ju , wyszuka justina biebera . Dzięki buforowaniu te wyszukiwania nie są zbyt drogie.

David Johnstone
źródło
7

To jest przewidywalne. Wyniki wyszukiwania pochodzą z pierwszej sugestii autouzupełniania (lub wybranej, jeśli naciśniesz strzałkę w dół lub najedziesz myszką na sugestię).

Innymi słowy, jeśli wpiszę „winyl s”, pierwsza sugestia autouzupełniania będzie brzmiała „siding winylowy”, a wyniki wyszukiwania wyraźnie pokazują „siding winylowy”. Jeśli wyszukam w Google zwykłe hasło „winyle”, wyniki wyszukiwania będą inne.

Tak więc wyszukiwanie błyskawiczne Google jest predykcyjne w taki sposób, że zwykłe wyszukiwania Google nie są… wyszukuje sugerowane autouzupełnianie zamiast dosłownego niedokończonego zapytania wyszukiwania.

Dagg Nabbit
źródło
4

Konwersja pierwszej wartości z klucza uw odpowiedzi Ajax odpowiedzi Daniela Vassallo daje adres URL , który następnie prowadzi do (nieprawidłowego) kodu JSON. Nie jestem jeszcze pewien, do czego służy ten kawałek.

dDaje pewne HTML, który zostanie wstawiony na stronę. Oto nieco zdekompresowana wersja . Jest to głównie tag skryptu, który przekazuje 2 kolejne fragmenty kodu HTML do funkcji je.pa(). Wydaje się, że te fragmenty są takie same, jak wyniki wyszukiwania, które nie są natychmiastowe.

dave1010
źródło
1

Jakiś czas temu napisałem dość popularny interfejs do natychmiastowego wyszukiwania dla wyszukiwarki Solr. To naprawdę proste, więc powinieneś być w stanie spojrzeć na kod i zrozumieć ogólne pojęcia http://fergiemcdowall.github.io/solrstrap/

Fergie
źródło