我正在寻找一种方法来配置Google自定义搜索,以将所有搜索参数附加到搜索结果的生成网址,以便在目标网页上搜索参数是已知的。例如。如果查询是“mot1 mot2”,则应将“?keyword = mot1 + mot2”等内容添加到页面网址。
如果无法做到这一点,我如何确定用于查找特定网页的搜索查询,以便突出显示该网页上的搜索字词?
以下是我目前的Google自定义搜索脚本:
<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 :(得分:1)
无论你想做什么,使用Google CSE API可能最好(也更可靠)。
特别是,请查看this answer,了解如何使用...
$con = new mysqli("localhost","root","","kluby ranking");
...
// select record from mysql
$sql="SELECT * FROM europa";
$result=$con->query($sql);
...
while($rows=$result->fetch_array()){
...
和prefillQuery
方法填充和触发自定义查询。
然而,如果你不需要更好的东西,这里有一个快速而又脏的标准设置解决方案:
execute
(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
);
});
(嵌入代码段不捕获简介密钥,在this fiddle上运行代码以获取完整功能)
[编辑]为了测试此代码是否有效,您需要移动加载jQuery的行,这样您就可以得到类似的内容:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<gcse:search></gcse:search>
答案 1 :(得分: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>