0

我的网站目前使用以下代码向 chrome 添加了一个自定义 Omnibox 搜索引擎:

ombnibox.xml

<?xml version="1.0"?>
<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/">
  <ShortName>Example </ShortName>
  <Description>Example Search</Description>
  <Url type="text/html" template="http://Example.com /search.aspx?searchVal=    {searchTerms}"></Url>
</OpenSearchDescription>

我的网站母版页包括:

<link type="application/opensearchdescription+xml" title="Example" rel="search" href="/omnibox.xml" />

这很好用,用户可以毫无问题地进入我的搜索结果页面。我想将搜索建议集成到这个自定义搜索引擎中,但我什至不知道从哪里开始。我找到了一堆返回 JSON 的 PHP 示例,但我找不到 ASP.net 的示例或从数据库中检索结果建议的示例。

任何帮助都是极好的。

4

2 回答 2

0

您需要将以下行添加到您的 xml 文件中

<Url type="application/x-suggestions+json" method="get" template="http://www.domain.co.uk/autocomplete" />

并得到以下格式的结果:

["bm",["BMW","BMW X5","BMW X3","BMW 5 Series","BMW 1 Series","BMW 1 Series Cabriolet","BMW 3 Series","BMW Z4","BMW 3 Series Compact","BMW 116i"]]

查看Mozilla 的文档

我希望这对你有帮助。

于 2013-05-10T16:54:09.253 回答
0

我对此进行了更多研究,并且能够创建一个 Web 服务,该服务返回格式正确的 JSON 值以供 Omnibox 使用!!但是!多功能框代码要求调用“GET”请求来访问默认情况下被 ASP.net 阻止的 Web 服务。一旦我覆盖了 ASP.NET 的默认设置以允许 GET 请求,它将只允许我返回 XML 格式的值。

我目前的假设是,除非我创建非 ASP.net Web 服务,否则不能选择使用 Omnibox 预先输入功能。

更新

我能够使用 ASP.NET MVC WebAPI 和以下代码来解决这个问题:

public object Get(string id)
    {
        List<ResultObject> resultValues = new List<ResultObject>();

        foreach (string val in ***SQLQUERYRESULTS***)
        {
            test singleResult = new ResultObject();
            singleResult.Name = val;
            singleResult.Description = "Server";
            singleResult.Url = "***CUSTOMURL***?ServerName=" + val;
            resultValues.Add(singleResult);

        }
        var entities = resultValues;
        var names = entities.Select(m => m.Name);
        var description = entities.Select(m => m.Description);
        var urls = entities.Select(m => m.Url);
        var entitiesJson = new object[] { id, names, description, urls };

        return entitiesJson;
    }
}


public class ResultObject
{
    public string Name { get; set; }
    public string Description { get; set; }
    public string Url { get; set; }

}
于 2013-09-17T18:34:16.720 回答