谷歌自定义搜索引擎多参数查询

google custom search engine multiple parameters query

本文关键字:参数 查询 搜索引擎 自定义 谷歌      更新时间:2023-09-26

Sry,对于这个问题的标题不清楚,我希望有人能纠正得更准确。

情况:

我使用的是谷歌自定义搜索引擎,它设置为只搜索两个网站,只显示结果。在GSE的控制面板中,当我进入搜索功能的高级选项卡时,我可以指定它将要查找的查询参数。完成后,我会得到一个javascript代码粘贴到我的页面代码中。

我相信这个javascript代码会监听$_GET['q']变量,然后根据它生成结果。

问题:

我在一个页面中有四个字段,并设置了一个php表单来显示其他网站的结果,最终结果是带有四个get变量的URL,如$_get['q1']到$_get['q4']。我在页面或其他任何地方都没有$_GET['q']。

我尝试了什么:

  1. 我只是无法使早期表单将另一个或组合的get参数打印为$_get['q']。我想我将不得不添加很多JS和一个隐藏的输入字段。

  2. 我尝试将php中的$_GET['q']设置为$_GET['q']=$_GET[q1];,然后为自定义搜索引擎添加javascript。

  3. 我尝试添加一个链接来更新或设置GET <a href="myurl.com?q=searchthis">anything</a>,但这似乎不起作用。

我认为原因可能是缺乏关于GSE如何获得关键字、搜索和返回结果的知识,以及缺乏关于$_GET参数的知识。

问题:

  1. 无论如何,我可以在我的php脚本中设置$_GET['q'](动态?),谷歌自定义搜索引擎javascript将理解并流利地工作
  2. 还有其他更好的方法吗

这不需要我显示代码,但这里有一些可能与问题相关的代码:

谷歌自定义JAVASCRIPT

<script>
  (function() {
    var cx = '010474608308939830468:6s3kklfffuu';
    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);
  })();
</script>
<gcse:searchresults-only></gcse:searchresults-only>

这是我的php方法:

$_GET['q'] = $_GET['q1'] ;

我们将非常感谢您的任何帮助,并希望您也能为其他读者了解GSE的功能。谢谢,提前

因此,我不清楚您的问题是否需要搜索所有查询,或者用户是否只填写其中一个表单。如果用户只填写一个表单,那么应该可以使用PHP检查使用了哪个查询变量,然后让CSE查看该参数。

<?php
    if (isset($_GET['q1'])  && $_GET['q1'])
       {$param = 'q1';
       } elseif (isset($_GET['q2'])) {
      $param = 'q2';
       }
    echo "<gcse:search queryParameterName='".$param."'></gcse:search>";
?>

如果您需要将所有查询连接到一个查询中,最好的选择可能是在URL到达页面之前使用htaccess重写URL,以便在页面加载之前将所有参数连接到一个子查询参数中。然后将queryParameterName设置为您调用该变量的任何值。

如果您没有在服务器上创建重写规则的权限,您可以探索这个答案:在不重新加载页面的情况下更改查询字符串。只需在标记之前执行此操作,标记会评估查询字符串以确定您要搜索的内容。