我的网站目前使用以下代码向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的示例或从数据库中检索结果建议的示例。
任何帮助都会很棒。
答案 0 :(得分: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"]]
我希望这对你有所帮助。
答案 1 :(得分:0)
我更多地研究了这个,我能够创建一个Web服务,返回正确格式化的JSON值,供Omnibox使用 !!但是! Omnibox代码需要“GET” “调用request来访问默认情况下被ASP.net阻止的Web服务。一旦我覆盖了ASP.NET的默认设置以允许GET请求,它只允许我返回XML格式的值。
我目前的假设是,除非我创建一个nonASP.net网络服务,否则不能使用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; }
}