Here is the link: http://www.google.com/coop/ Article: http://www.techcrunch.com/2006/10/23/google-custom-search-tomorrow/ My test search engine: http://www.google.com/coop/cse?cx=014993098406864043030%3Azyejoc4xdte This product rocks Has some very nifty features not available in Yahoo Search Builder and Live Macros With Co-op one can: - Make money (get a share off the ad clicks) - Multi-label sites - Have up to 5000 annotations per search engine - Can collaborate with friends to tag sites (just send an invite) - Can associate weights to results and have control over the rankings (in the XML config) - Completely brand the engine and customize the look and feel Ex. http://vik.singh.googlepages.com/techstuff - Can display refinements on the search results page Ex. http://vik.singh.googlepages.com/machinelearningsearch2 - Can upload xml/opml files filled with links - Can upload xml to configure the search engine labels/contexts - Can even nest label hierarchies on the refinements onebox Ex. http://vik.singh.googlepages.com/machinelearningsearch2 .. click on Sources - Can make the search ajax'y Ex. http://www.google.com/uds/samples/cse/index.html - Can combine results with another person's search results (by intersecting the background labels in the XML advanced configuration file) and much much more (especially for powered users) If you need a search engine for your site, and your content has been indexed by Google, then seriously consider using this rather buliding your own index or worse using the crappy full-text functions available in relational databases
Thanks, Heretic. The Custom Search Engine looks quite interesting. I've printed out the TOS and will read it over later today.
There are going to be so many ways this thing will be used very soon. Stuff no one has even thought of yet. I can't wait
is there a way you can change the url or get visitors to the site? i made one here but i dunno if people can find it. http://www.google.com/coop/cse?cx=015390553298372127550%3Alygnwkrkzzy
You can use your own domain / subdomain. Look in the settings. I am not sure if there is a way to make the urls look nicer though.
After reading this I setup my own as well. It is something I had been wanting to do since forever - but couldn't afford to build my own search engine (not got the knowledge or experience ), also every other option I had looked at there were too many drawbacks or lack of control. The Co-Op option is ideal in the sense pruning and refinement by the community can reap better results for all the community users - and exclude all the junk and spam that is normally returned. Adding adsense was also straightforward - but it would be nice to be able to choose from the 3 options for experimentation rather than being assigned the default top and bottom display when choosing just the search box.
There seems to be a way with AJAX and the API to mold it however you want. See this http://www.google.com/uds/samples/cse/index.html I can't seem to find the docs that explain how the CSE was tapped into though. Maybe I'm just blind.
Yea, I'm fighting with that one for over an hour now EDIT Ok, I figured it out: (...) <link href="http://www.google.com/uds/css/gsearch.css" type="text/css" rel="stylesheet"/> <script src="http://www.google.com/uds/api?file=uds.js&v=1.0&key=YOUR_GOOGLE_SEARCH_API" type="text/javascript"></script> <script type="text/javascript"> //<![CDATA[ function OnLoad() { // Create a search control var searchControl = new GSearchControl(); // site restricted web search using a custom search engine siteSearch = new GwebSearch(); siteSearch.setUserDefinedLabel("Custom Label"); // Your CSE API is at the bottom of the page with your CSE code siteSearch.setSiteRestriction("YOUR_CUSTOM_SEARCH_ENGINE_API"); searchControl.addSearcher(siteSearch); // Establish a keep callback searchControl.setOnKeepCallback(null, DummyClipSearchResult); // tell the searcher to draw itself and tell it where to attach searchControl.draw(document.getElementById("searchcontrol")); // execute an inital search searchControl.execute("Google"); } function DummyClipSearchResult(result) {} //]]> </script> </head> <body onload="OnLoad()"> <div id="searchcontrol"/> </body> </html> Code (markup): Hope this helps someone
Wow good deal. All those notes where not there the first time I looked. I posted something to Cutt's blog about needing docs. Maybe they saw and added the notes to the code. <script type="text/javascript"> // the cse class encapsulates a left and right search control // both controls are driven by a shared search form function cse() { var sFormDiv = document.getElementById("searchForm"); var leftScDiv = document.getElementById("leftSearchControl"); var rightScDiv = document.getElementById("rightSearchControl"); // create a left, right search control // create a custom search form this.leftControl = new GSearchControl(); this.rightControl = new GSearchControl(); this.searchForm = new GSearchForm(true, sFormDiv); // bind clear and submit functions this.searchForm.setOnSubmitCallback(this, cse.prototype.onSubmit); this.searchForm.setOnClearCallback(this, cse.prototype.onClear); // set up for small result sets this.leftControl.setResultSetSize(GSearch.SMALL_RESULTSET); this.rightControl.setResultSetSize(GSearch.SMALL_RESULTSET); var searcher; var options; // configure left control // Site Restrict to CSE ID for reviews searcher = new GwebSearch(); options = new GsearcherOptions(); searcher.setSiteRestriction("000455696194071821846:reviews"); searcher.setUserDefinedLabel("Product Reviews"); options.setExpandMode(GSearchControl.EXPAND_MODE_OPEN); this.leftControl.addSearcher(searcher, options); // configure right control for // -- cse for comparisons // -- cse for community // -- cse for shopping // -- blog search // -- video search searcher = new GwebSearch(); options = new GsearcherOptions(); searcher.setSiteRestriction("000455696194071821846:comparisons"); searcher.setUserDefinedLabel("Prices"); this.rightControl.addSearcher(searcher, options); searcher = new GwebSearch(); options = new GsearcherOptions(); searcher.setSiteRestriction("000455696194071821846:community"); searcher.setUserDefinedLabel("Forums"); this.rightControl.addSearcher(searcher, options); searcher = new GwebSearch(); options = new GsearcherOptions(); searcher.setSiteRestriction("000455696194071821846:shopping"); searcher.setUserDefinedLabel("Shopping"); this.rightControl.addSearcher(searcher, options); searcher = new GblogSearch(); this.rightControl.addSearcher(searcher); searcher = new GwebSearch(); this.rightControl.addSearcher(searcher); searcher = new GnewsSearch(); this.rightControl.addSearcher(searcher); // draw the left and right controls // the right control is drawn in tabbed mode var drawOptions = new GdrawOptions(); drawOptions.setDrawMode(GSearchControl.DRAW_MODE_TABBED); this.leftControl.draw(leftScDiv); this.rightControl.draw(rightScDiv, drawOptions); // bind in a videobar var videoBarDiv = document.getElementById("videoBar"); var videoPlayerDiv = document.getElementById("videoPlayer") var vboptions = { largeResultSet : false, horizontal : true } this.videoBar = new GSvideoBar(videoBarDiv, videoPlayerDiv, vboptions); // execute a starter search this.searchForm.execute("Apple iPod"); } // when the form fires a submit, grab its // value and call the left and right control cse.prototype.onSubmit = function(form) { var q = form.input.value; if (q && q!= "") { this.leftControl.execute(q); this.rightControl.execute(q); this.videoBar.execute(q); } return false; } // when the form fires a clear, call the left and right control cse.prototype.onClear = function(form) { this.leftControl.clearAllResults(); this.rightControl.clearAllResults(); this.videoBar.clearAllResults(); form.input.value = ""; return false; } function OnLoad() { new cse(); } </script> Code (markup):
Haha I was just looking at their code, wondering about the way they had the adsense ads displayed and I see this /* for demonstration purposes ONLY. This is not ok by the terms */ #rightSearchControl .gsc-ad-box { display : none; } Code (markup): They really should put up examples of stuff that's legal by their terms.