Как выполнить Amazon Cloud Search с помощью кода.net?
Я изучаю Amazon Cloud Search, но я не смог найти ни кода на C#, ни на Java (хотя я создаю на C#, но если я могу получить код на Java, я могу попробовать конвертировать в C#).
Это всего лишь 1 код, который я нашел в C#: https://github.com/Sitefinity-SDK/amazon-cloud-search-sample/tree/master/SitefinityWebApp.
Это 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);
}
Я уже создал домен в Amazon Cloud Search, используя консоль AWS, и загрузил документ, используя опцию предопределенной конфигурации Amazon, которая представляет собой jd- файл фильма Imdb, предоставленный Amazon для демонстрации.
Но в этом методе я не понимаю, как использовать этот метод, например, если я хочу найти имя директора, то как мне передать этот метод, потому что этот параметр метода имеет тип ISearchQuery?
1 ответ
Я бы предложил использовать официальный AWS CloudSearch.NET SDK. Библиотека, на которую вы смотрели, выглядит неплохо (хотя я не рассматривал ее подробно), но официальная версия с большей вероятностью представит новые функции CloudSearch, как только они будут выпущены, и будет поддерживаться, если вам нужно поговорить с AWS. поддержка и т. д. и т. д.
В частности, взгляните на класс SearchRequest - все его параметры являются строками, поэтому я думаю, что это избавит вас от вопроса о ISearchQuery.
Я не смог найти пример запроса в.NET, но это показывает, что кто-то загружает документы с помощью AWS .NET SDK. По сути, это та же процедура, что и для запросов: создание и настройка объекта Request и передача его клиенту.
РЕДАКТИРОВАТЬ: Так как вы все еще испытываете трудности, вот пример. Имейте в виду, что я незнаком с C# и не пытался запустить или даже скомпилировать это, но я думаю, что он должен быть по крайней мере близок к работе. Он основан на просмотре документов по адресу http://docs.aws.amazon.com/sdkfornet/v3/apidocs/
// 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);