Как указать поле поиска в AWS CloudSearch (с помощью .net SDK)

У меня есть домен, в котором есть 2 поля для поиска (буквальное и текстовое), в основном категория и контент.

Как я могу указать конкретное поле для использования в поле? Насколько я могу судить, поиск по умолчанию будет выполняться во всех доступных для поиска полях, но это не то, чего я хочу (т. е. не хочу искать категорию «Кошки» и получать результат из другой категории только потому, что она включает слово «Кошка» в поле «Кошки»). содержание.)

Я использую .Net SDK и просматриваю их документацию, но не могу найти этот раздел.

Спасибо!


person Francisco Noriega    schedule 05.09.2014    source источник


Ответы (2)


Еще немного покопавшись, и что способ указать поле - использовать поле массива fields.

При использовании .Net SDK это можно сделать так:

new SearchRequest { 
   Query = query, 
   QueryOptions = @"{""fields"":[""field_name""]}" 
};

источник: https://docs.aws.amazon.com/cloudsearch/latest/developerguide/search-api.html#structured-search-syntax

person Francisco Noriega    schedule 06.09.2014
comment
Вы работали над облачным поиском. Я ищу код облачного поиска Java или C #. Не могли бы вы помочь мне с этим? - person Learning-Overthinker-Confused; 01.09.2015

Примеры кода для Cloudsearch на C# не распространены, однако вы можете попробовать этот, который я написал

public List<AdditionalFields> Search(string query)
    {
        var batch = new List<AdditionalFields>();
        query = query.Trim();
        try
        {
            // Configure the Client that you'll use to make search requests
            string queryUrl = @"http://search-********.cloudsearch.amazonaws.com";
            var awsCredentials = new Amazon.Runtime.BasicAWSCredentials();
            AmazonCloudSearchDomainClient searchClient = new AmazonCloudSearchDomainClient(queryUrl, awsCredentials);

            SearchRequest searchRequest = new SearchRequest();
            searchRequest.Query = query;
            //searchRequest.Facet =
            //searchRequest.QueryOptions.
            searchRequest.Return = "_all_fields";

            SearchResponse searchResponse = searchClient.SearchAsync(searchRequest).Result;

            foreach (var hit in searchResponse.Hits.Hit)
            {
                var fields = new AdditionalFields();
                var searchfields = new Fields();
                searchfields.content = hit.Fields["content"][0].ToString();
                searchfields.directory = hit.Fields["directory"][0].ToString();
                searchfields.resourcename = hit.Fields["resourcename"][0].ToString();
                searchfields.title = hit.Fields["title"][0].ToString();
                fields.abridgedContent = searchfields.content.Replace(searchfields.title, string.Empty);
                searchfields.version = hit.Fields["version"][0].ToString();
                fields.abridgedContent = Abridged(fields.abridgedContent, query);
                searchfields.description = hit.Fields["description"][0].ToString();
                searchfields.resourcename = hit.Fields["resourcename"][0].ToString();
                searchfields.resourcetype = hit.Fields["resourcetype"][0].ToString();
                fields.url = "/bookviewer?bookValue=" + searchfields.resourcename + "&version=" + searchfields.version + "&chapterFolder=" + searchfields.directory + "&firstChapterNo=" + searchfields.description + ".htm";
                fields.fields = searchfields;
                batch.Add(fields);
            }

            // return searchResponse.Status.ToString();
        }
        catch (AmazonCloudSearchDomainException ex)
        {
            var fields = new AdditionalFields();
            fields.error = "ERROR : " + ex.Message;

            batch.Add(fields);

        }
        catch (Exception ex)
        {
            var fields = new AdditionalFields();
            fields.error = "ERROR : " + ex.Message;
            batch.Add(fields);
        }

        return batch;
    }
person David Ade    schedule 05.06.2020
comment
вам следует установить пакет nuget cloudsearchdomain - person David Ade; 05.06.2020