自定义Google搜索(CSE):如何在结果链接的末尾添加查询字符串?

时间:2016-02-12 16:51:51

标签: google-custom-search

我正在寻找一种方法来配置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>

非常感谢! ; - ))

2 个答案:

答案 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>