设为首页收藏本站

LUPA开源社区

 找回密码
 注册
文章 帖子 博客

AWS云搜索的使用:极简Java API

2013-7-19 12:07| 发布者: joejoe0332| 查看: 5532| 评论: 0|原作者: Boris Lublinsky|来自: InfoQ

摘要:   当前,许多应用重度依赖于搜索功能。从电子商务网站中寻找合适的产品,到社交网络中搜索寻人,再到地图网站中寻找POI和地址,依赖于搜索的应用非常广泛。   亚马逊新推出的云搜索服务,为自行实现搜索功能或定 ...

  该测试获得的结果(列表9),和直接通过亚马逊REST API获得的结果相同。

SearchResults
[ID=6ddcaa561c05c4cc3dae0f2d67b89419fbfea467ac6292b612dfb3a4a547692c6bea0194d6d37630b171b100197578dc, hitcount=1942, start=0, expression=(and (or title:'star' (not title:'war')) year:..2000), execution time=35ms, cpu execution time=0ms
Hit [ID=tt0092493, values={title:['Crocodile' Dundee II]year:[1988]actor:[Blinco, Maggie,Dingo, Ernie,Hogan, Paul,Holt, Jim,Kozlowski, Linda,Meillon, John,Mercurio, Gus,Rackman, Steve,Scavone, Anthony,Skilton, Gerry,Wilson, Alec]director:[Cornell, John]}]
Hit [ID=tt0078718, values={title:[...And Justice for All.]year:[1979]actor:[Bryggman, Larry,{敏感词}, Robert,Forsythe, John,Lahti, Christine,Levene, Sam,Pacino, Al,Strasberg, Lee,Tambor, Jeffrey,Waites, Thomas G.,Warden, Jack,Williams, Jonathan]director:[Jewison, Norman]}]
Hit [ID=tt0078721, values={title:[10]year:[1979]actor:[Andrews, Julie,Crosby, Denise,Daly, Rad,Dennehy, Brian,Derek, Bo,Haven, Annette,Jones, Sam J.,LeMay, Dorothy,Money, Constance,Moore, Dudley,Royalle, Candida,Serena,Showalter, Max,Volz, Nedra,Wallace, Dee,Webber, Robert]director:[Edwards, Blake]}]
Hit [ID=tt0147800, values={title:[10 Things I Hate About You]year:[1999]actor:[Babin, Michelle,Bennett, Tim,Blake, Shelsie,Gordon-Levitt, Joseph,Junger, Gil,Keegan, Andrew,Kountz, Daniel,Krumholtz, David,Ledger, Heath,Magnuson, Katy,Matthews, Amber,Miller, Larry,Mitchell, Daryl,O'Neill, Bridget,Oleynik, Larisa,Pratt, Susan May,Snider, Tommy,Stiles, Julia,Union, Gabrielle,Zorich, Jay]director:[Junger, Gil]}]
Hit [ID=tt0214388, values={title:[100 Girls]year:[2000]actor:[Billman, Ange,Chriqui, Emmanuelle,DeBello, James,Graham, Aimee,Grant, Tanisha,Green, Johnny,Heigl, Katherine,Hiraizumi, Gina,Musiala, Agnieszka,Oleynik, Larisa,Pressly, Jaime,Ribisi, Marissa,Tucker, Jonathan]director:[Davis, Michael]}]
Hit [ID=tt0115433, values={title:[101 Dalmatians]year:[1996]actor:[Close, Glenn,Daniels, Jeff,Fielder, Harry,Fraser, Hugh,Laurie, Hugh,McInnerny, Tim,Mullard, Arthur,Plowright, Joan,Richardson, Joely,Richardson, Laurence,Shrapnel, John,Weiss, Zohren,Welker, Frank,Williams, Mark]director:[Herek, Stephen]}]
Hit [ID=tt0050083, values={title:[12 Angry Men]year:[1957]actor:[Balsam, Martin,Begley, Ed,Binns, Edward,Bond, Rudy,Cobb, Lee J.,Fiedler, John,Fonda, Henry,Kelly, James,Klugman, Jack,Marshall, E.G.,Nelson, Billy,Savoca, John,Sweeney, Joseph,Warden, Jack]director:[Lumet, Sidney]}]
Hit [ID=tt0103594, values={title:[1492: Conquest of Paradise]year:[1992]actor:[Assante, Armand,Dean, Loren,Depardieu, Gérard,Dunn, Kevin,Karyo, Tchéky,Langella, Frank,Molina, Ángela,Montero, Silvia,Rey, Fernando,Weaver, Sigourney,Wincott, Michael]director:[Scott, Ridley]}]
Hit [ID=tt0078723, values={title:[1941]year:[1979]actor:[Aykroyd, Dan,Beatty, Ned,Belushi, John,Caan, James,Cheshire, Denise,Gary, Lorraine,Hamilton, Murray,Lassick, Sydney,Lauren, Mo,Lee, Christopher,Marshall, Penny,Matheson, Tim,Mifune, Toshirô,Moriarty, Steve,Oates, Warren,Robinson, Hank,Rothstein, Debbie,Stack, Robert]director:[Spielberg, Steven]}]
Hit [ID=tt0046672, values={title:[20000 Leagues Under the Sea]year:[1954]actor:[Cooper, Ted,Daheim, John,Douglas, Kirk,Gargan, Jack,Graham, Fred,Harvey, Harry,Helton, Percy,Kerrigan, J.M.,Lorre, Peter,Lukas, Paul,Lummis, Dayton,Marr, Eddie,Mason, James,Mitchell, Laurie,Pall, Gloria,Pennick, Jack,Vigran, Herb,Wilke, Robert J.,Young, Carleton,de Corsia, Ted]director:[Fleischer, Richard]}]
Facet [name=genre, values={(Sci-Fi,237},(Drama,1063}}]

]
列表9 搜索API测试结果

第二次测试(列表10)用来验证文档的添加和删除。

public class DocumentAPITester extends TestCase {

	    private static final String DocumentURL = "doc-imdb-movies-ab4fpqw4eocczpgsnrtlu4rn7i.us-east-
 1.cloudsearch.amazonaws.com";
	    private CloudSearchDocumentClient client;
	    private BatchType batch;
	    
	    protected void setUp() throws Exception {
	        client = new CloudSearchDocumentClient(DocumentURL);
	        
	        FieldType title = new FieldType();
	        title.setName("title");
	        title.setValue("The Seeker: The Dark Is Rising");
	        FieldType director = new FieldType();
	        director.setName("director");
	        director.setValue("Cunningham, David L.");
	        FieldType genrea = new FieldType();
	        genrea.setName("genre");
	        genrea.setValue("Adventure");
	        FieldType genred = new FieldType();
	        genred.setName("genre");
	        genred.setValue("Drama");
	        FieldType genref = new FieldType();
	        genref.setName("genre");
	        genref.setValue("Fantasy");
	        FieldType genret = new FieldType();
	        genret.setName("genre");
	        genret.setValue("Thriller");
	        FieldType actor1 = new FieldType();
	        actor1.setName("actor");
	        actor1.setValue("McShane, Ian");
	        FieldType actor2 = new FieldType();
	        actor2.setName("actor");
	        actor2.setValue("Eccleston, Christopher");
	        FieldType actor3 = new FieldType();
	        actor3.setName("actor");
	        actor3.setValue("Conroy, Frances");
	        FieldType actor4 = new FieldType();
	        actor4.setName("actor");
	        actor4.setValue("Conroy, Frances");
	        FieldType actor5 = new FieldType();
	        actor5.setName("actor");
	        actor5.setValue("Ludwig, Alexander");
	        FieldType actor6 = new FieldType();
	        actor6.setName("actor");
	        actor6.setValue("Crewson, Wendy");
	        FieldType actor7 = new FieldType();
	        actor7.setName("actor");
	        actor7.setValue("Warner, Amelia");
	        FieldType actor8 = new FieldType();
	        actor8.setName("actor");
	        actor8.setValue("Cosmo, James");
	        FieldType actor9 = new FieldType();
	        actor9.setName("actor");
	        actor9.setValue("Hickey, John Benjamin");
	        FieldType actor10 = new FieldType();
	        actor10.setName("actor");
	        actor10.setValue("Piddock, Jim");
	        FieldType actor11 = new FieldType();
	        actor11.setName("actor");
	        actor11.setValue("Lockhart, Emma");
	        AddType add = new AddType();
	        add.setId("tt0484562");
	        add.setVersion(1l);
	        add.setLang("en");
	        add.getField().add(title);
	        add.getField().add(director);
	        add.getField().add(genrea);
	        add.getField().add(genred);
	        add.getField().add(genref);
	        add.getField().add(genret);
	        add.getField().add(actor1);
	        add.getField().add(actor2);
	        add.getField().add(actor3);
	        add.getField().add(actor4);
	        add.getField().add(actor5);
	        add.getField().add(actor6);
	        add.getField().add(actor7);
	        add.getField().add(actor8);
	        add.getField().add(actor9);
	        add.getField().add(actor10);
	        add.getField().add(actor11);
	        
	        DeleteType delete = new DeleteType();
	        delete.setId("tt0301199");
	        delete.setVersion(1l);
	        
	        batch = new BatchType();
	        batch.getAdd().add(add);
	        batch.getDelete().add(delete);

	    }

	    protected void tearDown() {
	        client.close();
	    }

	    public void testSearch() throws Exception{

	        try {
	            System.out.println("Test 1 ");
	            ResponseType result = client.index(batch);
	            System.out.println("Status " + result.getStatus() + " Added " + result.getAdds() + " Deleted " +
result.getDeletes());
	        } catch (Exception e) {
	            e.printStackTrace();
	        }
	   }
}

Listing 10 Document upload tester

测试也获得了预期的结果(列表11)

Status SUCCESS Added 1 Deleted 1
Listing 11 Document upload test results


  总结


  上面这些简单的Java API实现了亚马逊云搜索的功能,显著简化了亚马逊云搜索功能在已有Java应用中的使用,必然会扩大应用的影响范围。


  关于作者


  Boris Lublinsky博士是诺基亚首席架构师,主要从事大数据、SOA、BPM、中间件的实现。在此之前Boris曾经是 Herzum软件公司的首席架构师,为客户设计大规模的SOA系统,曾负责CNA保险公司的企业架构,参与了CNA的系统集成与SOA策略的设计和实现, 构建了应用框架并实现了面向服务的架构。Boris在企业、技术架构,软件工程方面有超过25年的经验。他还是OASIS SOA参考模型技术委员会的活跃会员,也是《Applied SOA:Service-Oriented Architecture and Design Strategies》,一书的共同作者。他还发表了大量架构、编程、大数据、SOA、BPM的相关文章。


  查看英文原文:Using AWS Cloud Search


酷毙
2

雷人

鲜花

鸡蛋
1

漂亮

刚表态过的朋友 (3 人)

  • 快毕业了,没工作经验,
    找份工作好难啊?
    赶紧去人才芯片公司磨练吧!!

最新评论

关于LUPA|人才芯片工程|人才招聘|LUPA认证|LUPA教育|LUPA开源社区 ( 浙B2-20090187 浙公网安备 33010602006705号   

返回顶部