5

我有一个本地搜索引擎,由elasticsearch和一个用于搜索的瘦nodejs API支持。我希望能够直接从Google Chrome搜索这些文档(可以从Google获得,而不是Chromium)。在这个用例中,我将使用镀铬仅限于与此搜索引擎,所以我不想使用OmniBox关键字搜索API。我需要和在Chrome中选择默认搜索引擎时一样的行为。这是在Chrome中添加自定义搜索引擎的建议URL

  1. 开始在OmniBox中输入并显示建议列表。
  2. 回车,才能在搜索结果页面

我加入下设置一个新的搜索引擎,并提供了搜索API的URL得到了#2的工作。我无法获得#1的工作。

通过我的服务器暴露的这两个网址是:

  1. http://localhost:3000/complete?query=my(这将返回我想展示,而在网址列中输入搜索建议列表)。

  2. http://localhost:3000/results?query=my+sample+query(这将返回实际搜索结果的网页,这是工作)

的事情,我曾尝试:

  1. 新增搜索引擎使用window.externals。 AddSearchProvider与OpenSearchDescription.xml链接。 XML也有建议url。

  2. 试着写一个背景延伸与多功能框,但它不允许我不使用我通过铬所搜索的关键词

搜索,发现这个JSON文件

https://code.google.com/p/chromium/codesearch#chromium/src/components/search_engines/prepopulated_engines.json&q=prepopulated&sq=package:chromium&l=1

但我不知道如何使用它(或者如果它甚至可以在官方版本的Chrome中使用它)。

回答

0

有一个Setting Overrides机制的Chrome扩展,这并不广为人知,它可以达到你想要什么,但:

  • 至少根据文档,它仅适用于Windows
  • 除非您可以通过网站管理员工具验证网站,否则您将无法发布扩展程序。否则,你会被解压缩安装。
+0

谢谢!我不知道他们为什么不能在Mac上使用它。 – suparngp

+0

如果你想纯粹的推测:它是在Windows恶意软件发生打击时(和引入安全首选项)写的,所以这是一个解决合法用例的解决方法。 – Xan

+0

阿哈!这看起来很可能。看到我的答案一个解决方案。 – suparngp

3

我终于找到了解决方案。

opensearch.xml文档参考可以用作HTML页面头部的链接。它包含两个URL方案,一个用于搜索结果和其他建议。

详情可以在这里找到: Opensearch Document Specs

只要我更新我的index.html并在Chrome中打开该页面,Chrome会自动添加一个新的搜索引擎。它没有显示在设置>管理搜索引擎下有一个建议URL。

接下来,我选择我的引擎作为默认搜索引擎,点击默认并完成!现在,我可以在不使用关键字的情况下查看多功能框中的所有搜索建议。

+0

这是一个非常有用的发现 – Xan

+0

我运行了Charles Proxy,并注意到每次键入内容时都会有一个API调用,所以每个搜索引擎都有一个建议URL设置。当我检查DuckDuckGo网站的操作时,我偶然发现了这个特殊的解决方案。点击此处在Chrome浏览器上安装DDG。他们调用window.external.AddSearchProvider(“链接到ddg的opensearch.xml)。完成后,我得到了这个xml文件作为参考,用我的服务器信息编辑它,它工作。 – suparngp

相关问题