ThorstenA
08-23-2009, 08:44 AM
This way you can include a free google search without showing ads on your page. Only 4 results are showed. Do you know a way how to fetch more results?
http://code.google.com/apis/ajax/playground/?exp=search#search_as_user_types
Found the solution: Add
webSearch.setResultSetSize(google.search.Search.LA RGE_RESULTSET);
Now you have an ad free automatic search for your whole site! Wonder how it really works out when using it intensively
The script is searching vbulletin.org, results are shown this way:
Site Title
Text from the page like you see it on google.com
(no url is shown!)
<script src="http://www.google.com/jsapi?key=ABQIAAAA1XbMiDxx_BTCY2_FkPh06RRaGTYH6UMl 8mADNa0YKuWNNa8VNxQEerTAUcfkyrr6OwBovxn7TDAH5Q"></script>
<script type="text/javascript">
google.load('search', '1');
var timerId;
var input;
var lastSearch = 0;
var contentDiv;
function search(query) {
lastSearch++;
webSearch = new google.search.WebSearch();
webSearch.setSearchCompleteCallback(this, searchComplete, [webSearch, lastSearch]);
webSearch.setResultSetSize(google.search.Search.LA RGE_RESULTSET);
webSearch.setSiteRestriction('www.vbulletin.org');
webSearch.execute(query);
}
function autoSearch() {
// we're in the event's scope, that means this keyword = the input box.
var query = this.value;
// clear timer if there is one, set a new timer to do a search
if (timerId) {
window.clearTimeout(timerId);
timerId = null;
}
timerId = window.setTimeout('search(\'' + query + '\')', 250);
}
function searchComplete(searcher, searchNum) {
// Only display results if this search was the last one done.
if (searchNum == lastSearch) {
// clear last search if it exists
var lastResults = document.getElementById('results');
if (lastResults) {
lastResults.parentNode.removeChild(lastResults);
}
var results = searcher.results;
var newResultsDiv = document.createElement('div');
newResultsDiv.id = 'results';
for (var i = 0; i < results.length; i++) {
var result = results[i];
var resultHTML = '<a href="' + result.unescapedUrl + '" target="_blank"><strong><u>' + result.title + '</u></strong></a><br />' + '<a href="' + result.unescapedUrl + '" target="_blank">' + result.content + '</a>' + '<br/><br/>';
newResultsDiv.innerHTML += resultHTML;
}
contentDiv.appendChild(newResultsDiv);
}
}
function OnLoad() {
contentDiv = document.getElementById('content');
input = new google.search.SearchForm(true, contentDiv);
input.input.onkeyup = autoSearch;
input.setOnSubmitCallback = function() {
search(input.input.value);
};
}
google.setOnLoadCallback(OnLoad);
</script>
<div id="content">Lade...</div>
http://code.google.com/apis/ajax/playground/?exp=search#search_as_user_types
Found the solution: Add
webSearch.setResultSetSize(google.search.Search.LA RGE_RESULTSET);
Now you have an ad free automatic search for your whole site! Wonder how it really works out when using it intensively
The script is searching vbulletin.org, results are shown this way:
Site Title
Text from the page like you see it on google.com
(no url is shown!)
<script src="http://www.google.com/jsapi?key=ABQIAAAA1XbMiDxx_BTCY2_FkPh06RRaGTYH6UMl 8mADNa0YKuWNNa8VNxQEerTAUcfkyrr6OwBovxn7TDAH5Q"></script>
<script type="text/javascript">
google.load('search', '1');
var timerId;
var input;
var lastSearch = 0;
var contentDiv;
function search(query) {
lastSearch++;
webSearch = new google.search.WebSearch();
webSearch.setSearchCompleteCallback(this, searchComplete, [webSearch, lastSearch]);
webSearch.setResultSetSize(google.search.Search.LA RGE_RESULTSET);
webSearch.setSiteRestriction('www.vbulletin.org');
webSearch.execute(query);
}
function autoSearch() {
// we're in the event's scope, that means this keyword = the input box.
var query = this.value;
// clear timer if there is one, set a new timer to do a search
if (timerId) {
window.clearTimeout(timerId);
timerId = null;
}
timerId = window.setTimeout('search(\'' + query + '\')', 250);
}
function searchComplete(searcher, searchNum) {
// Only display results if this search was the last one done.
if (searchNum == lastSearch) {
// clear last search if it exists
var lastResults = document.getElementById('results');
if (lastResults) {
lastResults.parentNode.removeChild(lastResults);
}
var results = searcher.results;
var newResultsDiv = document.createElement('div');
newResultsDiv.id = 'results';
for (var i = 0; i < results.length; i++) {
var result = results[i];
var resultHTML = '<a href="' + result.unescapedUrl + '" target="_blank"><strong><u>' + result.title + '</u></strong></a><br />' + '<a href="' + result.unescapedUrl + '" target="_blank">' + result.content + '</a>' + '<br/><br/>';
newResultsDiv.innerHTML += resultHTML;
}
contentDiv.appendChild(newResultsDiv);
}
}
function OnLoad() {
contentDiv = document.getElementById('content');
input = new google.search.SearchForm(true, contentDiv);
input.input.onkeyup = autoSearch;
input.setOnSubmitCallback = function() {
search(input.input.value);
};
}
google.setOnLoadCallback(OnLoad);
</script>
<div id="content">Lade...</div>