【问题标题】:Custom google search does not return any results自定义谷歌搜索不返回任何结果
【发布时间】:2013-09-10 12:58:59
【问题描述】:

我对自定义谷歌搜索有疑问。 我从自定义谷歌搜索引擎复制代码并将其粘贴到我的项目中。 对于一个域它可以工作并返回结果,但对于另一个子域它不能工作并且没有返回任何结果

有人知道为什么吗?

一个页面只有一个带有代码的搜索框:

<div  id="cse-search-form"  dir="<%= MyBase.UserPreferences.DisplayDir%>" style="width:500px;"></div>
                           <script>
                               (function () {
                                   var cx = '017015442779235202717:g8u07nzbkmi';
                                   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);
                               })();
                        </script>
                        <gcse:searchbox-only resultsUrl="SearchResults.aspx"></gcse:searchbox-only>

结果显示在另一个页面上,带有代码:

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

此外, 我尝试使用以下代码将搜索框和结果放在同一页面上:

 <div>Compact Layout Demo</div>
 <div id="cse-search-form" style="width: 500px;">Loading</div>

<script src="http://www.google.com/jsapi" type="text/javascript"></script>
<script type="text/javascript">
   google.load('search', '1', { language: 'en' });
   google.setOnLoadCallback(function () {
   var customSearchControl = new google.search.CustomSearchControl   ('017015442779235202717:g8u07nzbkmi');
    customSearchControl.setResultSetSize(google.search.Search.SMALL_CSE_RESULTSET);
    customSearchControl.draw('cse-search-form');

    // var options = new google.search.DrawOptions();
    // options.enableSearchboxOnly("http://www.tiemponeto.com/All/searchresults3.asp");
    // customSearchControl.draw('cse-search-form', options)
}, true);

搜索仍然无法正常工作,也没有看到结果

请问,谁能帮帮我?

【问题讨论】:

  • 可能是 google 尚未抓取您的第二个域?
  • 您从哪里获得这些代码。据我使用,谷歌迷你搜索仅适用于特定域搜索。您需要单独注册第二个域才能获得结果。

标签: javascript google-custom-search


【解决方案1】:

您的搜索引擎的公共网址会带来结果,例如对于查询“办公室”: https://www.google.com/cse/publicurl?cx=017015442779235202717:g8u07nzbkmi

这意味着引擎正常工作。

首先,检查 CSE 控制面板的“外观”选项卡。您正在尝试让搜索框和搜索结果分别显示,因此您需要选择“两页”选项(一页显示搜索框,第二页显示结果)并保存新配置。

其次,确保您的 SearchResults.aspx 脚本在将用户重定向到结果页面时附加“q=”参数(例如 ?q=office)。该页面上的元素从 url 读取此参数并显示包含的查询(“office”)的结果。

【讨论】:

  • 网站还不够完善。
  • 我的帐户中有两个域。其中一个有效,另一个无效。我为搜索测试定义了两个域。您看到的关于测试域和 mysite 搜索的所有结果都不起作用。
  • 脚本很好。查询“短​​信”的网址:SearchResults.aspx?%D7%97%D7%A4%D7%A9=sms。
  • 我已将 plus.google.com、facebook.com、twitter.com、linkedin.com 网址添加到自定义搜索中。如果在 google 中搜索查询,我会从 google.but 自定义获取所有正确结果搜索引擎我不能。请让我知道@Devnook
【解决方案2】:

您正在搜索的域的名称在自定义搜索引擎选项中设置。您需要创建 第二个 自定义搜索引擎,进入 设置 并在 Sites to Search 标题下设置域名。然后,您将代码用于您的子域的第二个搜索引擎。

第二个搜索引擎的代码会略有不同,这一行会有不同的搜索引擎 ID:

var cx = '017015442779235202717:g8u07nzbkmi';

你可以告诉第一个搜索引擎是受限的,而不是搜索所有的互联网,因为 office 返回结果,但其他词不返回,例如 chair

【讨论】:

    猜你喜欢
    • 2018-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多