24

谷歌浏览器有一个功能,你可以点击标签来搜索网站。然后,Chrome 导航到该站点自己的搜索引擎并运行输入的查询。Chrome 文档表明,仅当 Google 在您尝试搜索的网站上检测到搜索引擎时,此功能才可用。

情况确实如此,因为写作stackoverflow.com<Tab>test<Enter>使 Chrome 浏览到这里,而facebook.com<Tab>test<Enter>因为 tab 键标签超出了地址行,所以什么也不做。

我想知道的是如何向谷歌表明我的网站有一个搜索引擎,以及谷歌需要如何格式化查询,以便在使用标签搜索功能时将 Chrome 用户正确重定向到我的网站。是元标签吗?它在 robots.txt 中吗?

4

2 回答 2

25

经过一番挖掘,我找到了描述这一点的页面。您还可以阅读 Stackoverflow 的源代码并找到这行代码:

<link rel="search" type="application/opensearchdescription+xml" title="Stack Overflow" href="/opensearch.xml">

它的作用是向谷歌表明如何在/opensearch.xml包含以下内容的文件中使用您的搜索引擎的描述:

<?xml version="1.0" encoding="UTF-8" ?>
<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/" xmlns:moz="http://www.mozilla.org/2006/browser/search/">
  <ShortName>Stack Overflow</ShortName>
  <Description>Search Stack Overflow: Q&amp;A for professional and enthusiast programmers</Description>
  <InputEncoding>UTF-8</InputEncoding>
  <Image width="16" height="16" type="image/x-icon">http://sstatic.net/stackoverflow/img/favicon.ico</Image>
  <Url type="text/html" method="get" template="http://stackoverflow.com/search?q={searchTerms}"></Url>
</OpenSearchDescription>
于 2012-12-29T14:25:52.357 回答
3

当我为我的在线克林贡词典实现搜索功能时,我发现 Chrome 不需要 OpenSearch 描述即可将其自动检测为搜索引擎。

注意:虽然这是一种更简单的方法,但它不允许使用高级功能,例如指定搜索模板、自定义网站图标(Chrome 自动使用网站的网站图标)等。它也可能不适用于 Chrome 以外的其他浏览器。

我从Search Engine Autodiscovery: Google Chrome Autodiscovery的说明开始,其中说:

有趣的是,自动发现仅在搜索引擎位于主页时才有效。您必须有一个类型的输入字段searchtext具有名称的类型s

<form>
  <input type="search" name="s" />
</form>

或者

<form>
  <input type="text" name="s" />
</form>

我让 Chrome 在我的网站klingonska.org上自动检测搜索引擎,而不使用 OpenSearch 描述。

但是我偏离了上面的描述,因为我发现我不需要调用s或使用字段type="search"。我的最终<form>外观是这样的(简化形式)。

<form method=get action="dict/">
  <input name=q placeholder="Search dictionary…">
  <button type=submit>Search</button>
</form>

关键因素似乎是表单位于根页面http://<domain>/页面(而不是子页面之类http://<domain>/<dir>/<something>.html)。而且,IIRC,搜索表单只包含一个字段。

于 2019-01-13T21:16:57.753 回答