Java 如何使用.net代码执行亚马逊云搜索?

Java 如何使用.net代码执行亚马逊云搜索?,java,c#,amazon-web-services,cloud,amazon-cloudsearch,Java,C#,Amazon Web Services,Cloud,Amazon Cloudsearch,我正在学习Amazon Cloud Search,但在C#或Java中都找不到任何代码(虽然我是用C#创建的,但如果我能用Java获得代码,那么我可以尝试用C#进行转换) 这只是我在C#::中找到的一段代码 这是我在此代码中找到的1种方法: public IResultSet Search(ISearchQuery query) { AmazonCloudSearchDomainConfig config = new AmazonCloudSearchD

我正在学习Amazon Cloud Search,但在C#或Java中都找不到任何代码(虽然我是用C#创建的,但如果我能用Java获得代码,那么我可以尝试用C#进行转换)

这只是我在C#::中找到的一段代码

这是我在此代码中找到的1种方法:

 public IResultSet Search(ISearchQuery query)
        {
            AmazonCloudSearchDomainConfig config = new AmazonCloudSearchDomainConfig();
            config.ServiceURL = "http://search-index2-cdduimbipgk3rpnfgny6posyzy.eu-west-1.cloudsearch.amazonaws.com/";
            AmazonCloudSearchDomainClient domainClient = new AmazonCloudSearchDomainClient("AKIAJ6MPIX37TLIXW7HQ", "DnrFrw9ZEr7g4Svh0rh6z+s3PxMaypl607eEUehQ", config);
            SearchRequest searchRequest = new SearchRequest();
            List<string> suggestions = new List<string>();
            StringBuilder highlights = new StringBuilder();
            highlights.Append("{\'");

            if (query == null)
                throw new ArgumentNullException("query");

            foreach (var field in query.HighlightedFields)
            {
                if (highlights.Length > 2)
                {
                    highlights.Append(", \'");
                }

                highlights.Append(field.ToUpperInvariant());
                highlights.Append("\':{} ");
                SuggestRequest suggestRequest = new SuggestRequest();
                Suggester suggester = new Suggester();
                suggester.SuggesterName = field.ToUpperInvariant() + "_suggester";
                suggestRequest.Suggester = suggester.SuggesterName;
                suggestRequest.Size = query.Take;
                suggestRequest.Query = query.Text;
                SuggestResponse suggestion = domainClient.Suggest(suggestRequest);
                foreach (var suggest in suggestion.Suggest.Suggestions)
                {
                    suggestions.Add(suggest.Suggestion);
                }
            }

            highlights.Append("}");

            if (query.Filter != null)
            {
                searchRequest.FilterQuery = this.BuildQueryFilter(query.Filter);
            }

            if (query.OrderBy != null)
            {
                searchRequest.Sort = string.Join(",", query.OrderBy);
            }

            if (query.Take > 0)
            {
                searchRequest.Size = query.Take;
            }

            if (query.Skip > 0)
            {
                searchRequest.Start = query.Skip;
            }

            searchRequest.Highlight = highlights.ToString();
            searchRequest.Query = query.Text;
            searchRequest.QueryParser = QueryParser.Simple;

            var result = domainClient.Search(searchRequest).SearchResult;

            //var result = domainClient.Search(searchRequest).SearchResult;

            return new AmazonResultSet(result, suggestions);
        }
公共IResultSet搜索(ISearchQuery) { AmazonCloudSearchDomainConfig=新建AmazonCloudSearchDomainConfig(); config.ServiceURL=”http://search-index2-cdduimbipgk3rpnfgny6posyzy.eu-west-1.cloudsearch.amazonaws.com/"; AmazonCloudSearchDomainClient domainClient=新的AmazonCloudSearchDomainClient(“AKIAJ6MPIX37TLIXW7HQ”,“DnrFrw9ZEr7g4Svh0rh6z+s3PxMaypl607eEUehQ”,配置); SearchRequest SearchRequest=新的SearchRequest(); 列表建议=新列表(); StringBuilder highlights=新建StringBuilder(); 突出显示。追加(“{\'”); if(查询==null) 抛出新的ArgumentNullException(“查询”); foreach(query.HighlightedFields中的var字段) { 如果(highlights.Length>2) { 突出显示。追加(“,\”); } highlights.Append(field.toupper不变量()); 突出显示。追加(“\”:{}”); SuggestRequest SuggestRequest=新建SuggestRequest(); Suggester Suggester=新的Suggester(); suggester.SuggesterName=field.toupper不变量()+“\u suggester”; suggestRequest.Suggester=Suggester.SuggesterName; suggestRequest.Size=query.Take; suggestRequest.Query=Query.Text; SuggestResponse suggestion=domainClient.suggestion(suggestRequest); foreach(var建议中的建议。建议。建议) { 建议。添加(建议。建议); } } 突出显示。追加(“}”); if(query.Filter!=null) { searchRequest.FilterQuery=this.BuildQueryFilter(query.Filter); } if(query.OrderBy!=null) { searchRequest.Sort=string.Join(“,”,query.OrderBy); } 如果(query.Take>0) { searchRequest.Size=query.Take; } 如果(query.Skip>0) { searchRequest.Start=query.Skip; } searchRequest.Highlight=highlights.ToString(); searchRequest.Query=Query.Text; searchRequest.QueryParser=QueryParser.Simple; var result=domainClient.Search(searchRequest.SearchResult); //var result=domainClient.Search(searchRequest.SearchResult); 返回新的AmazonResultSet(结果、建议); } 我已经使用AWS控制台在Amazon云搜索中创建了域,并使用Amazon预定义配置选项上传了文档,该选项是Amazon为演示提供的电影Imdb json文件


但是在这个方法中,我不知道如何使用这个方法,比如如果我想搜索导演的名字,那么我如何传入这个方法,因为这个方法参数的类型是ISearchQuery

我建议使用官方的。您正在查看的库似乎很好(虽然我没有查看任何详细信息),但官方版本更有可能在新的CloudSearch功能发布后立即公开,如果您需要与AWS支持人员交谈,将支持这些功能,等等

具体地说,看看这个类——它的所有参数都是字符串,所以我认为这样就省去了关于ISearchQuery的问题

我在.NET中找不到一个查询示例,但显示有人使用AWS.NET SDK上传文档。这与查询的过程基本相同:创建和配置请求对象并将其传递给客户端

编辑: 因为你仍然有困难,这里有一个例子。请记住,我对C#并不熟悉,也没有尝试运行甚至编译过它,但我认为它至少应该可以工作。这是基于查看网站上的文档

//配置用于发出搜索请求的客户端
字符串queryUrl=@”http://search--xxxxxxxxxxxxxxxxxxxxxxxxxx.us-east-1.cloudsearch.amazonaws.com";
AmazonCloudSearchDomainClient searchClient=新的AmazonCloudSearchDomainClient(queryUrl);
//使用查询配置搜索请求
SearchRequest SearchRequest=新的SearchRequest();
searchRequest.Query=“马铃薯”;
//TODO设置其他参数,如解析器、建议器等
//通过客户端提交请求并返回包含搜索结果的响应
SearchResponse SearchResponse=searchClient.Search(searchRequest);

感谢您的回复,但您是否检查了我在问题中提供的链接?我知道,他实际上在使用AWS SDK,但它是一个非常旧的版本。ISearchQuery不是最新API的一部分,因此如果使用最新的API,则可以将查询项作为字符串传递。我对该ISearchQuery进行了很多搜索,但它只是一个接口。是否有链接?最新的AWS SDK中没有ISearchQuery。使用它,您就不必担心了。添加了一个示例(请参阅“注意事项,我不懂C#,也没有测试过它”)。希望能有帮助。祝你好运
// Configure the Client that you'll use to make search requests
string queryUrl = @"http://search-<domainname>-xxxxxxxxxxxxxxxxxxxxxxxxxx.us-east-1.cloudsearch.amazonaws.com";
AmazonCloudSearchDomainClient searchClient = new AmazonCloudSearchDomainClient(queryUrl);

// Configure a search request with your query
SearchRequest searchRequest = new SearchRequest();
searchRequest.Query = "potato";
// TODO Set your other params like parser, suggester, etc

// Submit your request via the client and get back a response containing search results
SearchResponse searchResponse = searchClient.Search(searchRequest);