2016-02-12 25 views
2

我正在尋找一種配置Google自定義搜索的方法,以便將所有搜索參數附加到搜索結果的生成網址上,以便在目標網頁上搜索參數已知。例如。如果查詢是「mot1 mot2」,那麼類似「?keyword = mot1 + mot2」的內容應該被添加到頁面url。自定義Google搜索(CSE):如何將查詢字符串添加到結果鏈接的末尾?

如果這是不可能的,我該如何確定用於查找某個頁面的搜索查詢,以便突出顯示該頁面上的搜索詞?

這裏是我的谷歌自定義搜索當前的腳本:

 <script> 
    (function() { 
    var cx = 'xxx:xxxx'; 
    var gcse = document.createElement('script'); 
    gcse.type = 'text/javascript'; 
    gcse.async = true; 
    gcse.src = (document.location.protocol == 'https:' ? 'https:' : 'http:') + '//cse.google.com/cse.js?cx=' + cx; 
    var s = document.getElementsByTagName('script')[0]; 
    s.parentNode.insertBefore(gcse, s); 

    // AJOUT: Create a Custom Search Element 
    var options = {} 
    options[google.search.Search.RESTRICT_EXTENDED_ARGS] = {'as_sitesearch' : 'www.monsite.org/rep1/'}; 
    var customSearchControl = new google.search.CustomSearchControl(cx, options); 
    })(); 
</script> 
<gcse:search></gcse:search> 

感謝的很多! ;-))

+0

語言修復。 – maxhb

回答

1

無論你想要做什麼,它可能是最好的(也是更可靠)使用Google CSE API實現。

特別是,請查看this answer瞭解如何使用prefillQueryexecute方法填充並觸發您的自定義查詢。

不過,如果你並不需要什麼都好,這裏是標準設置一個快速和骯髒的解決方案:

(function() { 
 
    var cx = '017643444788069204610:4gvhea_mvga'; // Insert your own Custom Search engine ID here 
 
    var gcse = document.createElement('script'); gcse.type = 'text/javascript'; gcse.async = true; 
 
    gcse.src = (document.location.protocol == 'https' ? 'https:' : 'http:') + 
 
     '//www.google.com/cse/cse.js?cx=' + cx; 
 
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(gcse, s); 
 
})(); 
 

 
function addExtraParams(){ 
 
    var searchBoxWords = $("input.gsc-input").val().split(' '), 
 
     appendToQueryStr=""; 
 
    for (i=0;i<searchBoxWords.length;i++){ 
 
    appendToQueryStr+="&word"+i+"="+searchBoxWords[i]; 
 
    } 
 
    setTimeout(
 
    function(){ 
 
     $("a.gs-title").each(function(){ 
 
     $(this).attr(
 
      "href", 
 
      $(this).attr("href")+appendToQueryStr 
 
     ); 
 
     }); 
 
    } 
 
    , 2000 
 
); 
 
}; 
 

 
$(document).ready(function(){ 
 
    setTimeout(
 
    function(){ 
 
     $('input.gsc-input').keyup(function(e){ 
 
     if (e.keyCode == 13) { 
 
      addExtraParams(); 
 
     } 
 
     }); 
 
     $('input.gsc-search-button').click(function(){ 
 
     addExtraParams(); 
 
     }); 
 
    } 
 
    , 1000 
 
); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<gcse:search></gcse:search>

(嵌入式片段不會捕獲介紹鍵,在this fiddle上運行代碼以獲得全部功能)

[編輯]爲了測試此代碼的正常工作,您需要移動加載jQuery的行,s啊,你會得到這樣的事情:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html><head><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Test</title> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
</head> 
<body> 
<div class="recherche">`enter code here` 
<script type="text/javascript"> 
    //var cx = '015556257213647319991:iyaymywao1c'; 

(function() { 
    var cx = '015556257213647319991:iyaymywao1c'; // Insert your own Custom Search engine ID here 
    var gcse = document.createElement('script'); gcse.type = 'text/javascript'; gcse.async = true; 
    gcse.src = (document.location.protocol == 'https' ? 'https:' : 'http:') + 
     '//www.google.com/cse/cse.js?cx=' + cx; 
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(gcse, s); 
})(); 

function addExtraParams(){ 
    var searchBoxWords = $("input.gsc-input").val().split(' '), 
     appendToQueryStr=""; 
    for (i=0;i<searchBoxWords.length;i++){ 
    appendToQueryStr+="&word"+i+"="+searchBoxWords[i]; 
    } 
    setTimeout(
    function(){ 
     $("a.gs-title").each(function(){ 
     $(this).attr(
      "href", 
      $(this).attr("href")+appendToQueryStr 
     ); 
     }); 
    } 
    , 2000 
); 
}; 

$(document).ready(function(){ 
    setTimeout(
    function(){ 
     $('input.gsc-input').keyup(function(e){ 
     if (e.keyCode == 13) { 
      addExtraParams(); 
     } 
     }); 
     $('input.gsc-search-button').click(function(){ 
     addExtraParams(); 
     }); 
    } 
    , 1000 
); 
}); 
</script> 

<gcse:search></gcse:search>  
</div> 
</body> 
</html> 
+0

謝謝你的幫助和善意! – Eric

+0

不錯。請始終記得通過接受適合您的答案來關閉您發佈的問題(綠色勾號);-) – NotGaeL

0
**To thank you I give for all my solution after many many search:** 
----------- 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
<title>www.religare.org</title> 

</head> 
<body> 
<style> 
/* Affichage des url long pour les livres trouvés */ 
.gs-webResult.gs-result .gs-visibleUrl { display:block; } 
.gs-webResult.gs-result .gs-visibleUrl-short { display:none; } 

/* Barre de recherche Google */ 
#cse { 
    max-width:600px; 
    } 

/* Enlever l'image du champ de saisie */ 
#gsc-i-id1 { 
    background-image: none !important; 
    } 
</style> 

<script src="http://www.google.com/jsapi" type="text/javascript"></script> 
<script> 
    // ID de mon CSE (Custom Search Engine) personnalisé chez Google: https://cse.google.com/cse 

    var cx = 'xxx:xxxx'; 


    // Création de la barre de recherche Google 

    (function() { 
    var gcse = document.createElement('script'); 
    gcse.type = 'text/javascript'; 
    gcse.async = true; 
    gcse.src = (document.location.protocol == 'https:' ? 'https:' : 'http:') + 
     '//cse.google.com/cse.js?cx=' + cx; 
    var s = document.getElementsByTagName('script')[0]; 
    s.parentNode.insertBefore(gcse, s); 
    })(); 

    // Configuration de la recherche (utilise la librairie http://www.google.com/jsapi ci-dessus) 
    google.load('search', '1'); 
    google.setOnLoadCallback(function(){ 
    var customSearchOptions ={}; 
    /* Add Custom Search Option: restrict directory */ 
    customSearchOptions [google.search.Search.RESTRICT_EXTENDED_ARGS]={"as_sitesearch": "www.religare.org/livre/christianisme/"}; 
    var customSearchControl = new google.search.CustomSearchControl(cx, customSearchOptions); 
    /* Add Custom Search Option: more result per page */ 
    customSearchControl.setResultSetSize(google.search.Search.FILTERED_CSE_RESULTSET); 
    customSearchControl.draw('cse'); 
    /* Add query addition: restrict filetype */ 
    customSearchControl.setSearchStartingCallback(this, function(control, searcher, query) { 
     searcher.setQueryAddition("filetype:htm OR filetype:html"); 
     } 
    ); 
    }, true); 

</script> 

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
<script type="text/javascript"> 

// Ajouter aux URL trouvées (TITRES et IMAGES) les mot-clés recherchés en paramètre ("?mot1=val1&mot2=val2") afin que les pages cibles puissent les surligner une fois ouvertes 
function addExtraParams(){ 

    var searchBoxWords = $("input.gsc-input").val().split(' '), 
    appendToQueryStr=""; 
    separator="?"; 

    for (i=0;i<searchBoxWords.length;i++){ 
    appendToQueryStr+=separator+"mot"+i+"="+searchBoxWords[i]; 
    separator="&"; 
    } 

    // Pour chaque URL des TITRES trouvés: ajouter la chaine de recherche en paramètre (+vider liens data inutiles préemptant href) 
    $("a.gs-title").each(function(){ 
    // On ne garde que la partie gauche de l'url avant le "?" (sans ses paramètres au cas où ils auraient déjà été ajoutés) 
    var searchURL = this.href.split('?'); 
    $(this).attr("href", searchURL[0]+appendToQueryStr); 
    $(this).attr("data-cturl", ""); 
    $(this).attr("data-ctorig", ""); 
    }); 

    // Pour chaque URL des IMAGES trouvées: ajouter la chaine de recherche en paramètre (+vider liens data inutiles préemptant href) 
    $("a.gs-image").each(function(){ 
    // On ne garde que la partie gauche de l'url avant le "?" (sans ses paramètres au cas où ils auraient déjà été ajoutés) 
    var searchURL = this.href.split('?'); 
    $(this).attr("href", searchURL[0]+appendToQueryStr); 
    $(this).attr("data-cturl", ""); 
    $(this).attr("data-ctorig", ""); 
    }); 
} 

// Actualiser automatiquement (chaque 500ms) l'ajout des mot-clés recherchés en paramètre des URL trouvées 
// (car les url de résultat ne seront générées par Google en asynchrones qu'après le submit du formulaire de recherche, et changent si on clic sur la pagination du résultat) 
// Utilise la librairie (pour les appel avec $): https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js 
$(document).ready(function(){ 
    setInterval(
    function(){ 
     addExtraParams(); 
    } , 500); 
}); 
</script> 

<div id="cse">Chargement de la barre de recherche Google en cours...</div> 

<script type="text/javascript"> 
// Focus automatiquement sur le chp de recherche au chargement de la page 
$(window).load(function() { 
    var input = $('#gsc-i-id1'); 
    input.focus(); 
    }); 
</script> 

</body> 
</html> 
相關問題