来自Java的OpenSearch兼容响应

时间:2013-10-22 15:35:08

标签: java opensearch

以下是OpenSearch描述文件的示例:

http://webcat.hud.ac.uk/OpenSearch.xml

当我发送查询时:

http://webcat.hud.ac.uk/perl/opensearch.pl?keyword=new&startpage=1&itemsperpage=20

我得到的回复与OpenSearch兼容。如何在Java上实现OpenSearch规范,或者是否有任何库,或者是否有可以从中生成Java代码的xsd?

2 个答案:

答案 0 :(得分:2)

根据“阅读OpenSearch”的OpenSearch website部分,有一个Java库可以做到这一点,称为Apache Abdera。我自己没有使用它,所以我不能评论它的质量,但它值得研究 - 显然它可以解释和创建OpenSearch响应,所以这可能正是你正在寻找的。

或者,有很多非常好用于Java的XML解析器(请参阅this question以获取一些建议),因此为简单的OpenSearch XML文件编写自己的解析器不应该 很难,因为full specification可以在线获得。

对于XSD,我找不到“正式”的,但是在各种开源项目中有OpenSD的XSD已经过测试并可以使用,例如this one,这是一部分一个名为“OpenSearch Validator”的项目。

编写OpenSearch结果的另一个可能选择是非常成熟且广泛使用的Apache Lucene库,该库位于以前链接的OpenSearch网站中“编写OpenSearch结果”的软件列表中。

答案 1 :(得分:0)

ROME还支持OpenSearch及其ROME Module A9 OpenSearch

样本用法:

SyndFeed feed = new SyndFeedImpl();
feed.setFeedType(feedType);

// Add the opensearch module, you would get information like totalResults from the
// return results of your search
List mods = feed.getModules();
OpenSearchModule osm = new OpenSearchModuleImpl();
osm.setItemsPerPage(1);
osm.setStartIndex(1);
osm.setTotalResults(1024);
osm.setItemsPerPage(50);

OSQuery query = new OSQuery();
query.setRole("superset");
query.setSearchTerms("Java Syndication");
query.setStartPage(1);
osm.addQuery(query);

Link link = new Link();
link.setHref("http://www.bargainstriker.com/opensearch-description.xml");
link.setType("application/opensearchdescription+xml");
osm.setLink(link);

mods.add(osm);

feed.setModules(mods);
// end add module