ImageVerifierCode 换一换
格式:DOCX , 页数:17 ,大小:23.60KB ,
资源ID:13119525      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-13119525.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(AWS云搜索的使用极简Java API.docx)为本站会员(b****8)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

AWS云搜索的使用极简Java API.docx

1、AWS云搜索的使用极简Java APIAWS云搜索的使用:极简Java API 当前,许多应用重度依赖于搜索功能。从电子商务网站中寻找合适的产品,到社交网络中搜索寻人,再到地图网站中寻找POI和地址,依赖于搜索的应用非常广泛。 亚马逊新推出的云搜索服务,为自行实现搜索功能或定制安装Apache Lucene、Apache Solr和elasticsearch等流行产品提供了可行的替代方式。他们这样描述该服务:“它是一个完全托管的云搜索服务,该服务允许用户十分方便地在应用中集成快速且高度可扩展的搜索功能。【它】让用户摆脱了运营和扩展搜索平台的负担。用户不用再去关心硬件配置、数据分区和软件补丁的问

2、题了。”这个实现方式中,我们发现的唯一缺点是缺乏用于上传数 据和实现搜索的Java API。虽然亚马逊提供的REST API也能达到上述的目的,但是在Java代码中使用它们并不方便。为了简化搜索调用和数据上传功能,我们开发了一些简单的Java API,将在本文中逐一介绍。 数据定义 尽管亚马逊提供了数据上传和搜索响应的数据定义(以XML和JSON两种方式),但数据上传的文档中仅定义了Relax NG 模式,而搜索响应则未定义任何模式。 在我们的实现方式中,我们决定使用XML数据格式而不是JSON,这是因为进行XML数据封装更加简单XML使用规范的数据格式,而JSON则是动态的(JSON的标签是

3、动态定义,每个请求各异)。我们分别用下边的两种模式(列表1和列表2)来上传数据和搜索结果。 . Listing 1 Upload data schema Listing 2 Search results data schema 我们使用xjc binding compiler 生成上述的两种模式的Java类,这样就能通过Java Architecture for XML Binding (JAXB)进行自动封装/解封装。 查询定义除了数据定义,实现搜索API还需要查询定义。我们已经创建了一组类,用来实现亚马逊的查询定义。这个搜索查询的核心是过滤器。我们引入了SearchQueryFilter

4、接口,并提供了两种实现方式Search Query Value Filter(列表3)和Search Query Filter Operation(列表4)。public class SearchQueryValueFilter implements SearchQueryFilter private String _field; private String _value; private boolean _isExclude; private boolean _isNumeric; public SearchQueryValueFilter() public SearchQueryValu

5、eFilter(String field, String value, boolean isNumeric, boolean isExclude) _field = field; _value = value; _isExclude = isExclude; _isNumeric = isNumeric; public String getField() return _field; public void setField(String field) _field = field; public String getValue() return _value; public void set

6、Value(String value) _value = value; public boolean isExclude() return _isExclude; public void setExclude(boolean isExclude) _isExclude = isExclude; public boolean isNumeric() return _isNumeric; public void setNumeric(boolean isNumeric) _isNumeric = isNumeric; Override public String toString() String

7、Buffer sb = new StringBuffer(); if(_isExclude) sb.append(not ); if(_field != null) sb.append(_field); sb.append(:); if(!_isNumeric) sb.append(); sb.append(_value); if(!_isNumeric) sb.append(); if(_isExclude) sb.append(); return sb.toString(); Listing 3 Value filter implementationpublic class SearchQ

8、uery FilterOperation implements SearchQueryFilter List _filters; FilterOperation _operation; public SearchQueryFilterOperation() _operation = FilterOperation.and; _filters = new LinkedList(); public List getFilters() return _filters; public void setFilters(List filters) _filters = filters; public vo

9、id addFilters(SearchQueryFilter filter) _filters.add(filter); public FilterOperation getOperation() return _operation; public void setOperation(FilterOperation operation) _operation = operation; Override public String toString() StringBuffer sb = new StringBuffer(); sb.append(); sb.append(_operation

10、); for(SearchQueryFilter f : _filters) sb.append( ); sb.append(f); sb.append(); return sb.toString(); public enum FilterOperation and, or Listing 4 Operation filter implementationSearch Query Value Filter类支持开发者使用等于、小于、大于、区间(同样支持负值比较)等运算符设置单个字段的限制。而Search Query Filter Operation类还支持开发者使用AND/OR操作符,将多个S

11、earch Query Value Filters和Search Query Filter Operations组合使用。通过这两个类的组合使用,就能实现亚马逊云搜索所支持的任意查询过滤器的表达式了。 亚马逊云搜索支持分面分类(Faceted classification): “分面分类系统支持对一个对象赋予多个特征(属性),支持按照多种方式对分类排序,而非按照单一的、预定的分类顺序。一个分面包括定义清晰、相互独立、完全穷尽的方面,某类属性、特征或是特定的主题。【1】例如,藏书可以按照作者,主题,日期等归类。” 分面分类应用于分面搜索系统,用户在这种系统中能够从多方面进行信息的导航(译者注:如

12、书籍可以从作者、主题、出版日期等不同的分面),多方面对应于不同顺序的分面。 AWS支持按分面控制搜索执行以及对搜索结果排序。同时还支持开发者控制返回的搜索结果中包含的分面数量。所有的分面操作由Search Query Facet(列表5)这个类来实现。public class SearchQueryFacet private String _name; private int _maxFacets; private List _constraints; private FacetSort _sort; public SearchQueryFacet(String name) _name = n

13、ame; _maxFacets = -1; _constraints = null; _sort = FacetSort.none; public SearchQueryFacet(String name, int maxFacets) _name = name; _maxFacets = maxFacets; _constraints = null; _sort = FacetSort.none; public SearchQueryFacet(String name, int maxFacets, FacetSort sort) _name = name; _maxFacets = max

14、Facets; _constraints = null; _sort = sort; public SearchQueryFacet(String name, int maxFacets, List constraints) _name = name; _maxFacets = maxFacets; _constraints = constraints; _sort = FacetSort.none; public SearchQueryFacet(String name, List constraints) _name = name; _maxFacets = -1; _constraint

15、s = constraints; _sort = FacetSort.none; public SearchQueryFacet(String name, FacetSort sort, List constraints) _name = name; _maxFacets = -1; _constraints = constraints; _sort = sort; public SearchQueryFacet(String name, FacetSort sort) _name = name; _maxFacets = -1; _constraints = null; _sort = sort; public String getName() return _name;

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2