Google I/O 2009 – Advanced Custom Search Configuration

Weininger: Okay, so let’s get started Thanks, everyone, for coming Um, I’m Nick Weininger I’m an engineer on the Google Custom Search team And I’m going to be talking about advanced Custom Search configuration So I’ll start out by giving a very brief background on what Custom Search is In a nutshell, the idea of Custom Search is to bring the quality and the reliability and the speed of Google search results to search boxes on sites all over the Web And what that means to you as a site owner, as a webmaster, as a developer, is that it enables you to create a contextual search experience that’s right for you, your audience You can define the scope over which you want your search box to search, whether that be just your site or a collection of hundreds or thousands of sites or small parts of sites or even a long list of individual URLs You can customize the way the search works, the ranking, and the navigational experience that your users have And you can present results with a configurable-looking feel so that you can integrate that search better with your site And finally you can monetize that Custom Search by displaying relevant ads through AdSense And what you may not know is that Custom Search can do all of this in a very sophisticated way as a developer platform You may have seen the Web-based configurator that we have for Custom Search engines, but you may not know that we also have APIs that allow you to programmatically create Custom Search engines and to tweak very considerably both the ranking and the content and the appearance of search results to create a search experience that’s very tightly integrated into your site And to give you an example, here is the search on The New York Times’ website It doesn’t look immediately like a Custom Search– a Google Custom Search You couldn’t tell immediately, “Oh, these must be Google search results.” And that’s because The New York Times has used our APIs and a good deal of their own data to create a search experience that makes sense for New York Times users So I’m gonna talk about the key tools that Custom Search provides for doing things like that I’m gonna describe the XML format that defines a Custom Search engine I’m going to talk about the ways in which you can programmatically create CSEs either by uploading them to our servers, or by defining them on the fly by files that you host on your servers, or even by provisioning them on behalf of others And I’m gonna talk about some of the more advanced presentation options that you have, including some that we’ve just released in the last few weeks, that allow you to include rich, structured metadata in your search results, to present your search results using the new Custom Search element that DeWitt mentioned in his keynote presentation, and to use server-side XML even to configure your results using what’s known as Google Site Search So, as always, we should start with an example And, as always, we should motivate the example by doing something familiar and easy So I’m going to do something familiar and easy I’m going to create a new Google Custom Search engine Uh, I’m going to call it the CSE I/O demo I’m going to say, man, this is a cool demo I have to decide just one thing in the simplest version: what sites do I want to search? Let’s say I–for instance, I want to search And I click Next And my search engine exists I can try out a query and get relevant results from Now when I finish, I go to the Web control panel And if I click through on that control panel, I see a whole bunch of options, various tabs, which I can use to configure graphically, wizardly, various features of the Custom Search engine But this is an advanced custom search configuration talk, so I’m going to go straight to the Advanced tab And here I see a couple of things I see stuff about annotations and context You might say, “Hmm, I wonder what exactly these things are.” Well, I can view this in the browser I’m gonna view the XML for this context in the browser And I have this annotations thing too I’m not quite sure what that is, so I’m gonna view them both in the browser

Now I look at these, and what do I see? I see, aha, I have an ID string from my Custom Search engine, there’s a creator ID here And I see the title and the description that I put in the wizard I see this BackgroundLabel thing that I may not understand but that I can at least associate with the idea of my created Custom Search engine And I see a LookAndFeel section that I haven’t configured yet because this is a very simple, very easy Custom Search engine And then I go to the annotations, and I see, aha, now here I start to see the sites that I put in I have And it’s labeled with this label that refers back to the Custom Search engine ID that I saw in this context And so that’s the heart of it That’s the heart of what we do to enable developers to programmatically create Custom Search engines We simply define this XML format, which is just the same XML format that we use under the hood, and it gets modified when you modify Custom Search engines in the graphical wizard And that Custom Search engine takes sites and relates them to a sort of frame called a context And those sites and the context together define the operation of your search engine So to say in a little more detail what this means, the context tells you about the basic settings for the Custom Search engine It tells you, in particular, what you can do if you create refinements for faceted search So you may want your search engine to have options to drill down into different parts of your site, for example, so that your users can navigate your search by doing a little browsing and not just by entering keywords And refinements allow you to do that It also allows you to do custom things to queries For instance, you might have synonyms, which make sense only in the context of your domain of search You can define those in the context And so we see an example here where we have a refinement label that’s going to correspond to a refinement link with the title “Lectures.” I’m sorry And those lectures are– aah– those lectures are going to be boosted with a certain weight And they’re going to cause the query to be rewritten in a certain way And now you see this background label thing What that means is simply the background label is the label that defines the Custom Search engine It’s the label such that any annotations, which I define over any sets of URLs or URL patterns, can be hooked in to the Custom Search engine, included in its scope by labeling them with that link And so if I look at the annotations for this sample CSE, I can see, aha, I’ve included this– oops– I’ve included a couple of different URL patterns and a couple of different ones of my labels So I’ve hooked them in to my CSE in a couple of different ways Now that’s sort of the classic Custom Search engine feature I want to also call out a new feature that we just released a couple of weeks ago called Promotions And what Promotions are, are they’re completely custom results And you’ll see an example and some screenshots later on Which you can define, simply by saying, “Okay, for thus and such a query, “I want this kind of result to show “I want a result with this link “and that URL and this little text snippet to show And, you know, I can even include a thumbnail image.” And the Promotions, like everything else about the CSE, are defined in XML format And it’s a very simple XML format Each Promotion says what queries it should display on, what title it should show, what URL it should show, and so on And if I don’t want to interact with the control panel, if I don’t want to manually upload and download these XML files in order to create or to modify my Custom Search engine, all I have to do is use our RESTful URL patterns to do these creations and modifications And you can see the full list of RESTful URL patterns in the Custom Search engine developer docs But they’re pretty simple To create a new CSE context, there’s just this URL pattern with CSE in it, and you create it with a CSE ID The one other thing worth mentioning, though, is that there are a number of advanced features which are available, at least for now,

only in the XML API, and which you might not notice, therefore, if you’ve been creating Custom Search engine with the wizard I mentioned, one, at the beginning, you can create user-defined synonyms Another is that you can boost and demote different sites with different weights So, suppose you have a Custom Search engine that searches over ten different sites and you want to say, “I want to tweak the ranking as follows “I want this site to be strongly boosted relative to other results And I want this other site to be mildly demoted relative to other results because I think site one is really good and site two is sort of slightly bad You can configure that in the XML using labels and annotations You can even force results to come from a certain site whenever they’re available by specifying what are known as top N results You can affect ranking in a number of other ways For instance, you can bias results by date The New York Times Site Search actually uses this to enable you to get recent news articles And, as I said, there’s this Custom Search developer guide which documents fully all of these things which you can do So there’s our API There’s the basis of it But now we have this thing called linked CSEs And the reason we created linked CSEs was as follows: People said to us, well, I don’t want to have to interact with this control panel at all, and I don’t want to have to interact with this Google account at all that I used to create my CSE Because, in this example, you’ll note I had to go through a Google account in order to log into the control panel and do the wizard operations I want to be able to handle a CSE as an object which is totally independent from any Google account membership that I might have And the reason is that I want to define my CSE on the fly I have some data about what sites are good and what sites are bad I have some data about how my users want a search experience to look And that data is changing all the time And I don’t want to have to push an update to Google every time I change the definition of my search engine I want Google to come to me and get that definition So a linked CSE enables you to do just that The way you define it is you write out the definition of a CSE in that same XML format I just showed you, you host it at some URL on your site, and then in your search box, you tweak the URL of search command just a little to point to that URL And the semantics of that is Google, go get this search engine definition file right when the user queries it, parse it out into a definition of a Custom Search engine, and give the user a search on that Custom Search engine which I’ve just defined And if the contents of that file changes, change the search engine automatically for me And the power of this is not only that you can refresh it on demand The power of it is, number one, that you can make the contents of that Custom Search engine logically dependent on something else The first great use case we had for this was, suppose I have a site that’s a directory of links and I’m constantly modifying that, adding sites to the directory, deleting them from the directory And I want a search, which is just, “search all the sites in this directory.” So the way I want to create the Custom Search engine at any one time is I want to scrape that page, and I want to take all the links on it, and I want to say, “Oh, okay, “all the sites that this links to, those are the sites that are included in the search.” So it’ll link to CSE You can easily do that And the other thing that it empowers you to do is to create on the fly very, very large numbers of different Custom Search engines with different annotations for different sections of a site, for different individual pages, for whatever different applications you may have So let’s see a couple of examples of this One of our biggest users of linked CSEs is is a site which provides encyclopedic information on thousands and thousands of different topics And for each one of those topics, they have a sort of subsite There’s There’s a politics site at There’s sites for every special interest you can think of And every one of those needs its own search experience because, if you’re on and you go and search on carburetor or Corvette for that matter, you want search results that reflect your interest in that particular vertical And so what does is they dynamically create

a Custom Search engine definition for every single vertical that changes as their vertical changes And so here’s a screenshot of custom Web results on the “Student Travel” site And you’ll notice–again I’ll talk more about this later– that the look and feel of those results is very much customized to the look and feel of And in this case, they’ve done that using server-side XML results and their own rendering Another example: the Blogger gadget, which we just– we just today moved from draft to live status, just launched on Blogger today And what this is is a dynamic CSE for searching your blog and the context of your blog Because, again, suppose you have a blog and it links to lots of other blogs It’s linked to lots of other articles you found interesting, and you have a blogroll with perhaps 100 other blogs that you like That is a logical set of information over which your blog’s readers should be able to search And that information– that set of information gets updated all the time And you want the search engine to automatically update whenever you update your blog in a way that changes that set And so Blogger, using linked CSEs, provides a feature that does exactly that And to give you an example of what this looks like and some of the power that it uses, here is the XML source for a Custom Search engine definition on one particular blog It includes here an URL of a special format Notice the makeannotations in that URL What this is is the tool that I talked about before It goes on a page, it extracts all the links from that page, and it makes annotations out of all of them to say, “These are all sites I want included in my Custom Search engine.” It includes all of those, it adds a couple of actual blogs manually to the example And then it defines a Custom Search engine, again just as in a prior example, with a title and a description and a refinement facet and some labels And that all shows up within the context of the blog as a customized search experience over that particular blog And in this case, we’re using another very powerful, very configurable rendering method, namely the AJAX API, which I will also talk about One other thing I want to mention in terms of the APIs for provisioning Custom Search engines– the examples I gave with the control panel, uploading and downloading those XML files, those are all examples of creating CSEs on your own behalf, on behalf of your own account But we also have an API that allows you to programmatically create a Custom Search engine on behalf of another Now why would you want to do that? Well, suppose you have– you have a business where you have clients who host some content on your site And you manage that business, that client relationship through Google Apps for your domain So you have programmatically created Google Apps accounts in a Google Apps domain for them And you know by virtue of what content they have uploaded what their Custom Search experience should look like And you want to set it up for them without requiring them to do any work But you want to set it up in a way such that they own it under their account so that, if they want to modify it later, they can So this is exactly what our provisioning API does It’s part of a suite of tools that do provisioning things like this called Google Services for Websites And that suite of tools includes other things like submission of site maps so that when your clients, again, upload content to your site, you can submit URLs on their behalf to be indexed by Google And here’s an example of one hoster that is using this It’s a web hosting company called FatCow, and it has just a whole suite of tools that enable its clients with a push of the button to add Site Search automatically under their accounts So that’s how you can create and tweak the definitions of a search engine as a developer What can you do to change the presentation? Well, again, one very recently launched thing that I want

to highlight is our support for structured metadata The idea is that if you have structured date on your page, then, in a Custom Search engine that searches over pages like that, you may very well want to include that structured data in the result block And if we parse and index that metadata, we can return it to you in a format that allows you to do just that: customize your results so that they don’t look like plain, vanilla Google results They have the content that matters to your users, to your audience, to your domain And we support several different formats for encoding that structured data on your site There’s a format called PageMaps We support several popular microformats And there’s an RDFa parser coming soon as well And if you provide data on your site in any of these formats, we will index it for you, and, using these XML and soon the AJAX presentation methods that I had mentioned, you can return it and display it in your CSE And the return format is extremely simple In XML results, in this example, it’s essentially just a dictionary of name value pairs So your interpretation of the structured data is up to you You can render it how you choose But we just provide it to you as we’ve seen– as we’ve parsed it And you take it from there Another thing, great new thing, launched just today is the Custom Search element And this allows a combination of ease of use and configurability that I think is really a great step forward It allows you to do full UI styling with CSS on the client side It includes special CSE features, like those refinements that I talked about, like those Promotions It includes the ability to monetize with AdSense ads And you can configure Custom Search element very easily based on any existing custom search engine you’ve created Now DeWitt in his keynote gave an example of something that’s even easier You don’t even need a Custom Search engine set up to configure an element You just copy and paste a slice of code onto your page, and we automatically make one for you But if you have created one, if you have tweaked and specialized your Custom Search engine to be exactly the way you want, how do you get the element? Well, if you go back to this control panel here and you look at “My search engines,” you see a handy little link that says Custom Search element And you click on that And it looks just like the zero configuration example from this morning, except in the snippet of code If you look closely, there is this one parameter, and that one parameter is the ID of the Custom Search engine you’ve created And this will work with any of the APIs that I’ve talked about So far it will work with AP–Custom Search engines you’ve programmatically created on your own behalf or on other’s behalf It will work with linked CSEs Any CSE has some ID You put that ID into the code snippet, you drop the Custom Search element on your site, and it works And a couple of screenshots here There’s a Macworld example where you’ve got ads here with all sorts of refinements showing up as tabs And here is the example, which showed at the keynote, with it coexisting with a number of other elements on the page And note this completely custom result here, this promotion with a custom link and a custom snippet and a custom thumbnail icon all specified by the user And finally there is this option to get XML results And the way you get XML results is that you use a version of a product called Google Site Search And this has a flat fee pricing model starting at 100 bucks a year for certain chunks of queries and page limits And it basically allows you to take that XML on the server side and do whatever you want with it You can mash it up with other content You can reorder the results You can configure the look and feel to match your site You can display it without ads if you choose And we have a whole bunch of sites–again, eHealthInsurance is an example of a site using Google Site Search

Uh, and they have a custom result here and a number of refinements So again this is an advanced user that uses these features to create a sophisticated search experience tailored to their user alliance And, so to summarize, these are the various features of the presentation options We offer just standard HTML rendered for you displayed in a separate page or an iframe where you can do a Custom Search element, or with the Google Site Search product you can get XML results And for the next part of this presentation, I’d like to invite up on stage, um, a couple of folks from Adobe, one of our largest Site Search partners, which has used Site Search in some very innovative ways to serve their customers, and they’ll talk a little bit about how they do that Thanks a lot, Nick Nichoson: My name is Mark Nichoson I’m a product manager for Community Help at Adobe Systems I’m just– being a product manager in a room full of developers, I’m gonna be really brief and invite my colleague in just a moment, Joel Brandt, who’s gonna talk about some of the more exciting work that we’re doing, but Nick in particular wanted me to talk a little bit about our use case of the CSE, so we’ve been using Custom Search as part of a service called Community Help for about a year now Um, and it’s something that we launched with the last round of Creative Suite 4 Um, our use case is a little bit unique in that one of the things that we’ve been really trying to do over the last year and a half, two years, is really embrace some of the new content community models that have been enabled, you know, via Web 2.0 and find out how to best leverage those models within the context of Help and Support with our products So one of the great things about Adobe is that our customers are just incredibly passionate, so people love Photoshop, they love blogging about Photoshop, they love writing tips about Photoshop Um, and they love helping each other That’s very visible to anyone who’s visited our product forums, things like that Um, or anybody who’s been a part of our developer community And so really, for us, the real challenge that we were trying to solve was how do we bring all this great wealth of community content– I call it, sort of, the community ecosystem– how do we bring that all directly into the user experience when somebody’s actually working in one of our applications and has a problem? So how do we, you know– it’s a tremendous aggregation problem really And at the end of the day, working with Google– um, you know, Search became a really natural, really simple metaphor for solving that entire problem So we partnered with Google about a year ago And we use, you know, a lot of the features that we use are the ones that Nick described So we actually use the XML results For us, that’s incredibly important because, you know, Adobe, you know, the brand and the experience of our products is very, very important to our users, so being able to maintain that consistent brand experience when somebody’s working directly inside Photoshop and then taking them to, you know, a branded experience, maintaining that is incredibly important We also really appreciate that it was a hosted solution, that it wasn’t anything that we were gonna have to really, you know, keep up with, from a development perspective Let’s let Google do all the heavy lifting Um, and for us, that was– that was really important So one of the key things that we did with Custom Search in the CS4 timeframe was we actually integrated it in with the products So if you open up Dreamweaver CS4 or Illustrator CS4 right now, you’ll find actually a little search widget that’s embedded in the application itself Um, and what that search widget is doing is it’s going out and sending, via an API, calls for a Custom Search engine and bringing those community results directly back into– into that– into the user experience So right now we have about 2,400 community URLs included in our Custom Search engine This has been a very successful service for our customers We’re doing some data analysis on that right now I’m sure Nick and Rajat would be very curious to see the data, and I’ll definitely be sharing it with them as soon as possible And, you know, that data’s definitely gonna be influencing how we are thinking about Custom Search going forward So right now, as I said, if you open up any creative Suite 4 product, if you are a developer working with Flex or AIR or ColdFusion, uh, you’ll come across some of these Community Help search results So I’m gonna invite up Joel Brandt, who’s gonna tell you about some of the exciting things that his team’s been working on and some of the success that they’ve been building upon with the Custom Search engine Brandt: Thanks, Mark

Uh, so I’m Joel Brandt, I’m a researcher at Adobe and also a PhD candidate at Stanford And I want to talk briefly about another tool we’re building called Blueprint And if you like what you see in this talk, you can come visit us at the Developer Sandbox and take it for a spin So the work we’re doing right now is motivated by a really simple observation Programmers use the Web A lot In fact, we ran a recent study, and in this study we were looking at how people learn to use new libraries In that study, over 33% of the code these people produced over several months was produced– was lines of code that were taken from the Web and modified So what’s really crazy about that is that, despite the fact that programming languages are designed to be read by computers and our development tools don’t know anything about the fact that, you know, we’re using the Web to produce this code And our Web browsers and search engines don’t know anything about the rest of the code we’ve written Our editor simply thinks we’re typing everything we write So our idea was can we leverage Google Custom Search to bring search inside the development environment? So Blueprint is a tool that explores this idea And let me give you a quick demo of that, and then we can talk about how it works So in Blueprint– Blueprint is built as a plug-in for Adobe’s Flex Builder, which is a development environment for Flex and Flash applications A lot of times, programmers are in situations where, here they have some code that they want to visualize In this case, they want to put it in a chart And creating a chart’s very easy to do, but it takes about 20 lines of code, and it’s probably not code you can write from scratch So it’d be great if you could initiate a search for example code that would help you learn how to do that right from your development environment In fact, that’s what Blueprint allows you to do You can hit a quick hot key to bring up a search box that’s sort of like AutoComplete You can type natural language into this, something like barchart, and that presents you with results that present example code first So this is an example of us customizing the search results Here we present the example code immediately, and you can scroll through this to see running examples of that code Once you select some code you like, uh, perhaps after performing another search, you can immediately put that code into your development environment A few modifications of that code and very quickly you have something up and running So how is Blueprint built? As I mentioned, we’re leveraging the Google Custom Search suite of tools But in order to do that custom work of presenting examples themselves rather than the entirety of the web pages, we have to build on top of Google Custom Search So there’s three components in what you saw here today There’s the Blueprint client, which is what lives inside Flex Builder There’s the Blueprint server, which sits on Adobe’s infrastructure It sits on top of the Google Custom Search engine When a user makes a query, we gather contextual information from their programming environment, so the versions of frameworks they’re using, things that are in scope and so forth, and send that along with the query Our server uses that information to augment the query and produce a better query to send off to Google We then send that search off to Google and get back a set of results We parse these pages that come back to Google for the actual examples in running code And then we send those back to the user So this is all well and good Now you know how it works But is this actually effective? So we ran a laboratory study to get at answering this question, see if we were really benefiting by sitting on top of Google Custom Search results and providing this tool to users So first we found that participants found code twice as fast, which is a big step in producing the code quickly In fact, if you look at the ranking of all 20 participants, you see that the majority of those, here presented in blue boxes, that were using Blueprint fell toward the fast end of the spectrum But even more importantly than writing the code quickly, they wrote significantly better code And this is even more striking You see almost all of the people who used Blueprint were on the side where they produced the best code We think this is probably because we are able to present the search results in a very customized manner that helps evaluate code quickly So in one of the tasks, the best results didn’t have a very good standard Google results snippet, and so they normally wouldn’t click on that page, but because we were extracting the code specifically and they were to evaluate that code rather than the English on the page, they were able to select a great example and get a really good result So we just launched Blueprint as a plug-in that you can download for free at today So I’d love it if you could all take a look at that if you do Flex development And with that, I’ll pass things back to Nick to complete Thanks a lot [applause] Weininger: Thank you, Mark Thank you, Joel Um, I don’t have a lot more to say after that other than that’s a really great and innovative use of search in a context where I would never have thought it could be used Um, I want to call out one thing that’s something you might think about as developers

I think the feature of contextually rewriting the query based on what they know about the user’s context, that they’re searching within a particular product and so forth, is really powerful We provide a number of hooks to allow you to do this And I think you should consider, as search designers, the extent to which your users can benefit from this ’cause it’s a really great thing to do And Adobe is an example of one of our largest partners, but we have a very, very long list of partners In fact, we recently passed– not so recently any more– passed quite a while ago a million registered CSEs And we’re still growing fast And we’d love to have your Custom Searches hosted on our platform And so that users all across the Web can get better search So thank you, and I’ll take questions Any questions? Yes man: So– [feedback] Weininger: Whoo man: Wow Weininger: You happen to be mic’d? man: Should still be mic’d So let’s say I’ve got a set of– a website that I don’t want indexed in the regular, standard Google results Weininger: Right man: So I have, let’s say, a robots.txt file that says, “Don’t index this, Google.” Is that still something that I can use in Google Custom Search engines or Google Site Search? Weininger: So currently the answer to that is no because we–the Custom Search index follows– it follows the same crawling rules and, well, ultimately, mostly, Custom Search index just is the Google Search index We do have some extensions to it As you know, you can submit site maps to be indexed in a special CSE index n-tier But even that index respects the same robots.txt crawling rules as any other Google crawl So–but it’s a good question We should think about whether to do that man: You mentioned something about AJAX APIs Weininger: Mm-hmm man: And I didn’t see it Weininger: Oh, so the Custom Search element that I discussed is built on the AJAX Search API, and the full power of the underlying Search API is available in that element That’s what AJAX refers to man: If I have a custom content site, and it gets crawled by Google every two or three days Weininger: Sure man: And right now I have my own Custom Search If I want to use your engine, can your content somehow be indexed more frequently? Or how do you approach that? Weininger: Yes, in fact, we have a feature design to help you do just that Um, it is called On-Demand Indexing And the way that it works is you– if you’ve submitted site maps already to Webmaster Tools, you can pick one of those site maps as containing your freshest and highest priority pages And you can actually go and click where there’s also an API that you can issue a request to that says index this now And we will, again, use our special Custom Search index and capabilities to go out and recrawl those pages and index them again within 24 hours So you can at least get that increase in speed and freshness man: So Google keeps almost everything that’s crawled, but occasionally we know that stuff falls out of the Google index If we have a CSE, is there anything that says that our content that’s in the CSE will be somehow more sticky? Weininger: Well, again, this is what our Custom Search-specific indexing capabilities are designed for Um, you can submit– you submit site maps to Webmaster Tools, and we either can implicitly, automatically learn that those site maps are included in your CSE, or in the On-Demand Indexing feature I described, you can actually, explicitly tell us this site map is for my CSE And, you know, when we go and do those on-demand crawls, those pages will be, as you say, sticky man: And you said for the XML results, the price is starting at $100? Weininger: Yes man: Um, okay Then what? What’s the real range? Weininger: Okay So there are a number of different pricing tiers based on two factors Number one is the number of pages that you want to include in your Custom Search And number two is the number of queries you want per year I think the, sort of, online tiers go up to about $2,000 something, $2,250 a year, which gives you up to 100,000 pages and a 1/2 million queries a year Um, the $100-a-year level gives you, I think, 1,000 pages and a 1/4 million queries a year

And if you have needs for Site Search over a really large corpus or with a really high traffic level, then you can contact one of our sales representatives man: I have a question about– so I think it’s great that you guys are, like, indexing the microformat stuff Is there a way you can search against that? You know, so if you wanted to, say, put an author, you know, as a micro– you know, as a vCard or an hCard, as they call it, I guess, in the microformat scene Is there a way you can sort of search against that? Weininger: You mean to filter the search or to re-rank the search based on structured data? man: Yeah, like, so if I wanted to, say, you know, search a website full of documents, and I just want to search by author or something Weininger: That’s a very good question The answer is “Stay tuned We’re working on it.” Um, so actually our product manager is here and is more qualified to speak to that than I am Mukherjee: I don’t know about more qualified, but I can take a shot at it Uh, so in terms of terms of service, so as I said– as Nick mentioned, there are various offerings There’s the online offering where you basically get the vanilla product, and you’re off and running We also announced elements today, so that’s another kind of turn-key kind of thing, which is you take it and go The terms of service, they are typically, you know, what the online terms of service are When you license Site Search or if you’re a direct partner and, you know, you’re actually driving a huge amount of traffic, there are typically special relationships we have with our partners And in some of those cases, there are special sort of agreements that we have with those partners At that point, there’s a lot more flexibility So, for example, Site Search customers like Adobe, you know, they have special, sort of, contracts with– with Google, and we have a lot more, sort of, control In general, Site Search customers have a lot more branding controls because that’s one of the requirements of the enterprise, sort of, offering But in general, the online, sort of, customers go with the online terms of service, which we typically don’t, kind of, negotiate on a one-by-one basis So does that answer your question? man: Yes, it does Mukherjee: Absolutely So on the online version, you need to use the Custom Search branding, and there are various options there as well So you can actually choose the one that works for you You can still customize it in terms of look and feel and colors and stuff like that so it doesn’t kind of– so it matches up with the rest of your site But you absolutely need to use the Custom Search branding And typically online customers use ads as well So monetization with ads is on by default And Site Search customers have the option to turn off ads Weininger: Hi man: I was wondering if you could speak to– we’d all love to have all of our content indexed by Google, but in those cases where we can’t or it isn’t indexed, the search appliance and the integration between Custom Search and the search appliances, if there’s any pending, future thing where you can have results coming from the search appliance that show up in the Custom Search results as well? Weininger: That’s an interesting– that’s an interesting question Um, we understand that, yes, there are cases where you don’t have all of your content indexed by Google Um, we have, as I’ve mentioned for a couple of prior questioners, we have these features based on, you know, CSE associations with site maps and On-Demand Indexing designed to improve coverage of your content specifically for customers of Custom Search engine Um, I recommend that you try those and see if they do what you need If even those don’t do what you need, please let us know why Because we want to make sure that, wherever possible, we do manage to get in all the content in any given Custom Search engine And, as to your specific question of search appliance and Custom Search engine integration, we don’t have anything like that now, but it’s an interesting possibility Oh, ah, yes Rajat has an additional comment on this Mukherjee: So in terms of actually getting Custom Search results into your appliance in the intranet, I think there have been some widgets and federated capabilities that have been built so that if you, for example, are using the appliance in your intranet and you also have a Custom Search engine for your website, you are able to basically pull those results in because they use the standard XML formats

that the appliance uses and honors, so you can actually have federation where you can actually bring those external results into your intranet But the reverse is typically not done Weininger: Let me get that Thanks–thank Rajat for the reminder If you’re familiar with the appliance in particular, there’s this API called the Enterprise OneBox API that allows you to integrate many other kinds of content into Google Search Appliance Search results And one of the clients that you could integrate into would be Custom Search results So you could do the combination that you’re looking for that way Correct Oh, so just to say again, there’s an API at the appliance level that would allow you to take appliance-rendered search results and include in those results from a hosted-by-Google Custom Search engine But we don’t have the capability yet to go the other way, to have a Custom Search engine’s hosted results include results from a GSA Other questions? Well, okay If there are no other questions, then thank you all very much for coming [applause]