Java 如何使用.net代码执行亚马逊云搜索?
我正在学习Amazon Cloud Search,但在C#或Java中都找不到任何代码(虽然我是用C#创建的,但如果我能用Java获得代码,那么我可以尝试用C#进行转换) 这只是我在C#::中找到的一段代码 这是我在此代码中找到的1种方法: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
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);