public IEnumerable <Suggestion> GetSuggestions(SuggesterModel model, out XA.Foundation.Search.Timer queryTimer, out string indexName)
        {
            bool         fuzzy       = Configuration.Settings.GetBoolSetting("AzureSearchSuggesterFuzzy", false);
            bool         highlights  = Configuration.Settings.GetBoolSetting("AzureSearchSuggesterHighlight", false);
            ISearchIndex searchIndex = IndexResolver.ResolveIndex(!model.ContextItemID.IsNull ? ContentRepository.GetItem(model.ContextItemID) : null);

            indexName = searchIndex.Name;
            searchIndex.Initialize();
            using (IProviderSearchContext searchContext = searchIndex.CreateSearchContext(SearchSecurityOptions.Default))
            {
                SuggestParameters sp = new SuggestParameters()
                {
                    UseFuzzyMatching = fuzzy, Top = 5
                };
                if (highlights)
                {
                    string tag = Configuration.Settings.GetSetting("AzureSearchSuggesterHighlightTag");
                    sp.HighlightPreTag  = $"<{tag}>";
                    sp.HighlightPostTag = $"</{tag}>";
                }

                AzureSuggestQuery term = model.Term;
                DocumentSuggestResult <Document> handlerQueryResults;
                using (queryTimer = new XA.Foundation.Search.Timer())
                    handlerQueryResults = searchContext.Suggest(term, Configuration.Settings.GetSetting("AzureSearchSuggesterName"), sp);
                return(handlerQueryResults.Results.Select(a => new Suggestion()
                {
                    Term = a.Text,
                    Payload = JsonConvert.SerializeObject(a.Document)
                }));
            }
        }
Exemplo n.º 2
0
        public AutocompleteResult Autocomplete(AzureSuggestQuery q, string suggester, AutocompleteParameters options)
        {
            ISearchService availableSearchService = GetAvailableSearchService();

            if (availableSearchService != null)
            {
                return(((SearchService)availableSearchService).Autocomplete(q, suggester, options));
            }
            SearchLog.Log.Error("Search request cannot be processed. No search services are available. Please try again later.", null);
            return(null);
        }
 public AutocompleteResult Autocomplete(AzureSuggestQuery q, string suggester, AutocompleteParameters options)
 {
     try
     {
         Microsoft.Azure.Search.SearchServiceClient _searchClient = new Microsoft.Azure.Search.SearchServiceClient(_searchService.Replace("https://", "").Replace(".search.windows.net", ""), new SearchCredentials(_apiKey));
         ISearchIndexClient _indexClient = _searchClient.Indexes.GetClient(IndexName);
         return(_indexClient.Documents.Autocomplete(q.Query, suggester, options));
     }
     catch (Exception e)
     {
         throw e;
     }
 }
Exemplo n.º 4
0
 public AutocompleteResult Autocomplete(AzureSuggestQuery q, string suggester, AutocompleteParameters options)
 {
     EnsureSearchServiceAvailable();
     return(((ISearchServiceDocumentOperationsProvider)DocumentOperations).Autocomplete(q, suggester, options));
 }
Exemplo n.º 5
0
 public DocumentSuggestResult <Document> Suggest(AzureSuggestQuery q, string suggester, SuggestParameters options)
 {
     EnsureSearchServiceAvailable();
     return(((ISearchServiceDocumentOperationsProvider)DocumentOperations).Suggest(q, suggester, options));
 }