public string CitySuggest(string tryValue, string[] additionalParams) { List <SuggestionItem> items = new List <SuggestionItem>(); List <string> surname = new List <string>(); FAbonent fa = new FAbonent(); FAbonentDO fado = new FAbonentDO(); UniversalEntity ue = new UniversalEntity(); ue = fado.RetrieveLikeSurname(tryValue); if (ue.Count > 0) { for (int i = 0; i < ue.Count; i++) { fa = (FAbonent)ue[i]; //create SuggestionItem SuggestionItem suggestionItem = new SuggestionItem(); suggestionItem.Title = fa.Surname; suggestionItem.Description = SuggestionTools.HighLight(fa.FirstName + " " + fa.LastName, tryValue) + fa.ID.ToString(); suggestionItem.Id = fa.ID.ToString(); //add item to the list items.Add(suggestionItem); } } //create result Item SuggestionResult suggestionResult = new SuggestionResult(); suggestionResult.Items = items.ToArray(); suggestionResult.Header = new BasicSuggestionTemplate("Please select your city."); suggestionResult.Footer = new BasicSuggestionTemplate("Powered by ConvincingMail"); return(suggestionResult.ToJSON(tryValue)); }
private static void Write(Document doc, SuggestionResult result) { if (result == null) { return; } var sec = doc.Sections.Last; var par = (Paragraph)null; var tun = (Textrun)null; //var hyp = (Hyperlink)null; par = sec.AddParagraph(); par.Style.Spacings.SpacingAfter = 15F; tun = par.AddTextrun(RtfUtility.unicodeEncode("Suggestions Result")); tun.Style.FontSize = 24F; tun.Style.TextColor = PrimaryColor; par = sec.AddParagraph(); tun = par.AddTextrun(RtfUtility.unicodeEncode("SUGGESTIONS")); tun.Style.FontStyle.Bold = true; int count = 1; foreach (var suggest in result.Suggestions) { par = sec.AddParagraph(RtfUtility.unicodeEncode(string.Format("{0}. {1}", count, SynUtility.Text.UppercaseFirstLetter(suggest)))); count++; } sec.AddParagraph(); }
public IQueryResultItem Search(InputQuery query) { SuggestionResult finalResult = new SuggestionResult(); finalResult.SuggestionType = SuggestionType.Baidu; Encoding gb2312 = Encoding.GetEncoding("gb2312"); Encoding utf8 = Encoding.UTF8; string url = "http://suggestion.baidu.com/su?wd=" + HttpUtility.UrlEncode(query.Text, gb2312) + "&action=opensearch&ie=gb2312&from=ie8"; finalResult.SearchUrl = url; if (query == null || query.QueryType != SmartMe.Core.Data.InputQueryType.Text || query.Text == null || query.Text == "") { return(finalResult); } string html = SmartMe.Web.Crawl.Crawler.Crawl(url, gb2312); if (html == null || html == "") { return(finalResult); } Regex p = new Regex("\\[.+\\]"); string jsonResult = p.Match(html).Value; if (jsonResult == null || jsonResult == string.Empty) { return(finalResult); } DataContractJsonSerializer jsonSerializer = new DataContractJsonSerializer(typeof(object)); object rawResults = jsonSerializer.ReadObject(new MemoryStream(Encoding.Convert(gb2312, utf8, gb2312.GetBytes(jsonResult)))); if (rawResults != null) { object[] preResults = rawResults as object[]; if (preResults != null && preResults.Length == 2) { object[] results = preResults[1] as object[]; if (results != null && results.Length > 0) { for (int i = 0; i < results.Length; ++i) { SuggestionResult.ResultItem item = new SuggestionResult.ResultItem(); string temp = results[i] as string; if (temp != null) { item.Suggestion = temp; //Console.WriteLine( temp ); finalResult.Results.Add(item); } } } } } return(finalResult); }
/// <summary> /// Attempts to find translation suggestions based the specified options in SuggestionRequest object. /// </summary> /// <param name="request">Suggestion Parameters</param> /// <returns>A list of suggestion result</returns> public SuggestionResult[] Suggest(SuggestionRequest request) { Logger.Log($"SYSTRAN8TranslationProvider Suggest start request:{request.Source} source:{mSelectedLanguagePair?.Source} target:{mSelectedLanguagePair?.Target}"); if (request == null) { throw new ArgumentNullException(nameof(request)); } if (string.IsNullOrWhiteSpace(request.Source)) { throw new ArgumentException("SuggestionRequest.Source"); } if (mSelectedLanguagePair == null) { throw new InvalidProviderConfigurationException("No language pait selected"); } if (mSupportedLanguagePairs == null) { throw new InvalidProviderConfigurationException("supported language pairs has not been initialized"); } var suggestResult = new SuggestionResult { RequestId = request.RequestId, Source = request.Source, ProviderName = Localizable.ProviderDisplayName, TranslationState = new TranslationState { State = TransState.NoMatch, SubState = "no match found" }, TranslationType = new TranslationType { Type = TransType.MachineTranslation } }; try { var target = mService.TranslateAsync(mSelectedLanguagePair.Source, mSelectedLanguagePair.Target, null, request.Source).ConfigureAwait().Result; suggestResult.Target = target; suggestResult.TranslationState = new TranslationState { State = TransState.NeedsReview }; suggestResult.Confidence = 100; //suggestResult.Properties = GetMetadata(trans); } catch (Exception exception) { suggestResult.TranslationState = new TranslationState { State = TransState.Fail }; suggestResult.Errors.Add(new ProviderErrorLog() { Category = ErrorCategory.Translation, InnerException = exception, Severity = ErrorSeverity.Error }); } Logger.Log($"SYSTRAN8TranslationProvider Suggest end request:{request.Source} source:{mSelectedLanguagePair?.Source} target:{mSelectedLanguagePair?.Target} result:{suggestResult?.Target}"); return(new[] { suggestResult }); }
public static void Test( ) { GoogleSuggestion engine = new GoogleSuggestion(); InputQuery query = new InputQuery("baim"); query.QueryType = InputQueryType.Text; SuggestionResult item = engine.Search(query) as SuggestionResult; Console.WriteLine(item); }
/// <summary> /// Queries the provider for matching translation suggestions /// </summary> /// <param name="srcCulture">Culture of the requested string</param> /// <param name="trgCulture">Culture of the resulting strings</param> /// <param name="srcString">String to translate</param> /// <param name="maxResults">Maximum allowed results</param> /// <returns>Zero to maxResult of SuggestionResult[]</returns> /// <remarks> /// Multiple results are returned, so this filters it down to the maximum allows results. /// </remarks> internal static SuggestionResult[] GetSegmentSuggestions(CultureInfo srcCulture, CultureInfo trgCulture, string srcString, int maxResults) { var encodedSource = srcString.Replace(' ', '+'); var urlString = string.Format("https://www.tausdata.org/api/segment.xml?source_lang={0}&target_lang={1}&q={2}&fuzzy=false", srcCulture.Name, trgCulture.Name, encodedSource); var httpRequest = (HttpWebRequest)WebRequest.Create(urlString); httpRequest.Credentials = CredCache; // Set default result var suggestResults = new List <SuggestionResult>(); // Read the contents of the response and load it into an XDocument var docResponse = GetXmlFormatResponse(httpRequest); if (docResponse != null) { foreach (var trans in docResponse.Descendants("segment")) { var source = trans.Element("source").Value; var target = trans.Element("target").Value; var suggestResult = new SuggestionResult() { Source = source, Target = target, ProviderName = l10n.ProviderDisplayName, TranslationState = new TranslationState() { State = TransState.NeedsReview }, TranslationType = new TranslationType() { Type = TransType.TranslationMemory } }; suggestResult.Confidence = CalculateConfidence(srcString, suggestResult.Source); suggestResult.Properties = GetMetadata(trans); suggestResults.Add(suggestResult); if (suggestResults.Count >= maxResults) { break; } } } // The code assumes the result are in best to worst matching order. var sortedResults = suggestResults.ToArray(); Array.Sort(sortedResults, new SuggestionConfidenceComparer()); return(sortedResults); }
public SuggestionResult Suggestions(IndexQueryServerSide query, SuggestionField field, JsonOperationContext documentsContext, CancellationToken token) { var options = field.GetOptions(documentsContext, query.QueryParameters) ?? new SuggestionOptions(); var terms = field.GetTerms(documentsContext, query.QueryParameters); var result = new SuggestionResult { Name = field.Alias ?? field.Name }; result.Suggestions.AddRange(terms.Count > 1 ? QueryOverMultipleWords(field, terms, options) : QueryOverSingleWord(field, terms[0], options)); return(result); }
public void SuggestionsTest(string searchTerm, string expectation) { //Setup Fakes & dummies var serviceFake = A.Fake <ISearchQueryService <JobProfileIndex> >(ops => ops.Strict()); var loggerFake = A.Fake <IApplicationLogger>(); var spellcheckerServiceFake = A.Fake <ISpellcheckService>(ops => ops.Strict()); var fakeAsyncHelper = new AsyncHelper(); var webAppContext = A.Fake <IWebAppContext>(ops => ops.Strict()); var mapperCfg = new MapperConfiguration(cfg => { cfg.AddProfile <JobProfilesAutoMapperProfile>(); }); var dummySuggestResult = new SuggestionResult <JobProfileIndex>(); dummySuggestResult.Results = new List <SuggestionResultItem <JobProfileIndex> > { new SuggestionResultItem <JobProfileIndex> { MatchedSuggestion = expectation.ToLower() } }; //Set-up calls A.CallTo(() => serviceFake.GetSuggestion(A <string> ._, A <SuggestProperties> ._)).Returns(dummySuggestResult); //Instantiate var searchController = new JobProfileSearchBoxController(serviceFake, webAppContext, mapperCfg.CreateMapper(), loggerFake, fakeAsyncHelper, spellcheckerServiceFake); var result = searchController.WithCallTo(c => c.Suggestions(searchTerm, 5, true)); if (string.IsNullOrWhiteSpace(searchTerm)) { result.ShouldReturnEmptyResult(); A.CallTo(() => serviceFake.GetSuggestion(A <string> ._, A <SuggestProperties> ._)).MustNotHaveHappened(); } else { result.ShouldReturnJson(json => { var suggestions = json as IEnumerable <Suggestion>; suggestions.First().label.Should().Be(expectation); }); A.CallTo(() => serviceFake.GetSuggestion(A <string> .That.Matches(m => m == searchTerm), A <SuggestProperties> ._)) .MustHaveHappened(Repeated.Exactly.Once); } }
public void WhenITypeTheTerm(string suggestionTerm) { OutputHelper.WriteLine($"The suggestion term is '{suggestionTerm}'"); try { results = searchQueryService.GetSuggestion( suggestionTerm, new SuggestProperties { UseFuzzyMatching = true, MaxResultCount = 5 }); } catch (Exception ex) { OutputHelper.WriteLine($"Exception in When:- {ex}"); } //Log results var actual = results?.Results.Select(r => r.Index); OutputHelper.WriteLine($"Actual order {actual?.ToJson()}"); }
public static void Test() { QueryResultRecordManager manager = new QueryResultRecordManager("data", new TimeSpan(0, 1, 0)); Pipeline.Pipeline pipeline = new Pipeline.Pipeline(); pipeline.QueryResultSubscriberManager.AddSubscriber(manager); QueryResult result = new QueryResult(new InputQuery("Bill Gates")); SearchEngineResult resultItem = new SearchEngineResult(); resultItem.SearchEngineType = SearchEngineType.Google; resultItem.SearchUrl = "http://www.google.com/query.jsp"; SearchEngineResult.ResultItem item = new SearchEngineResult.ResultItem(); item.Title = "ddd"; item.Url = "http://www.gfw.com/"; item.SimilarUrl = "http://www.g.com/ddd"; item.CacheUrl = "http://www.g.com/cache"; item.Description = "Who cares?"; resultItem.Results.Add(item); SuggestionResult resultItem1 = new SuggestionResult(); resultItem1.SuggestionType = SuggestionType.Google; resultItem1.SearchUrl = "json"; SuggestionResult.ResultItem item1 = new SuggestionResult.ResultItem(); item1.Index = "1"; item1.Number = "2"; item1.Suggestion = "haha"; resultItem1.Results.Add(item1); result.SearchEngineResultItems.Add(resultItem); result.SuggestionResultItems.Add(resultItem1); pipeline.OnQueryResultReady(result); Thread.Sleep(1000); List <QueryResult> resultList = manager.GetResultList(DateTime.Today, DateTime.Today); foreach (QueryResult queryResult in resultList) { Console.WriteLine(queryResult); } Console.WriteLine("----------------------------------------------"); manager.RemoveAllResultList(); resultList = manager.GetResultList(DateTime.Today, DateTime.Today); foreach (QueryResult queryResult in resultList) { Console.WriteLine(queryResult); } Console.WriteLine("----------------------------------------------"); result = new QueryResult(new InputQuery("Bill Gates")); resultItem = new SearchEngineResult(); resultItem.SearchEngineType = SearchEngineType.Google; resultItem.SearchUrl = "http://www.google.com/query.jsp"; item = new SearchEngineResult.ResultItem(); item.Title = "ddd"; item.Url = "http://www.gfw.com/"; item.SimilarUrl = "http://www.g.com/ddd"; item.CacheUrl = "http://www.g.com/cache"; item.Description = "Who cares?"; resultItem.Results.Add(item); result.Items.Add(resultItem); pipeline.OnQueryResultReady(result); Thread.Sleep(1000); manager.RemoveResultListFromDate(DateTime.Today); resultList = manager.GetResultList(DateTime.Today - new TimeSpan(1, 0, 0, 0), DateTime.Today); foreach (QueryResult queryResult in resultList) { Console.WriteLine(queryResult); } Console.WriteLine("----------------------------------------------"); manager.RemoveResultListFromDate(DateTime.Today + new TimeSpan(1, 0, 0, 0)); resultList = manager.GetResultList(DateTime.Today - new TimeSpan(1, 0, 0, 0), DateTime.Today); foreach (QueryResult queryResult in resultList) { Console.WriteLine(queryResult); } Console.WriteLine("----------------------------------------------"); }
public IQueryResultItem Search(InputQuery query) { SuggestionResult finalResult = new SuggestionResult(); finalResult.SuggestionType = SuggestionType.Google; string url = "http://suggestqueries.google.cn/complete/search?q=" + HttpUtility.UrlEncode(query.Text, Encoding.UTF8); finalResult.SearchUrl = url; if (query == null || query.QueryType != SmartMe.Core.Data.InputQueryType.Text || query.Text == null || query.Text == "") { return(finalResult); } string html = SmartMe.Web.Crawl.Crawler.Crawl(url, Encoding.UTF8); if (html == null || html == "") { return(finalResult); } Regex p = new Regex("\\[.+\\]"); string jsonResult = p.Match(html).Value; if (jsonResult == null || jsonResult == string.Empty) { return(finalResult); } DataContractJsonSerializer jsonSerializer = new DataContractJsonSerializer(typeof(object)); object rawResults = jsonSerializer.ReadObject(new MemoryStream(Encoding.UTF8.GetBytes(jsonResult))); if (rawResults != null) { object[] tmpResults = rawResults as object[]; if (tmpResults != null && tmpResults.Length == 2) { object[] results = tmpResults[1] as object[]; if (results != null && results.Length > 0) { for (int i = 0; i < results.Length; ++i) { bool success = true; SuggestionResult.ResultItem item = new SuggestionResult.ResultItem(); object[] triple = results[i] as object[]; if (triple != null && triple.Length == 3) { string temp = triple[0] as string; if (temp != null) { item.Suggestion = temp; } else { success = false; } temp = triple[1] as string; if (temp != null) { item.Number = temp; } else { success = false; } temp = triple[2] as string; if (temp != null) { item.Index = temp; } else { success = false; } if (success) { finalResult.Results.Add(item); } } } } } } return(finalResult); }
public static void WriteSuggestionResult(this BlittableJsonTextWriter writer, JsonOperationContext context, SuggestionResult result) { writer.WriteStartObject(); writer.WritePropertyName(nameof(result.Name)); writer.WriteString(result.Name); writer.WriteComma(); writer.WriteArray(nameof(result.Suggestions), result.Suggestions); writer.WriteEndObject(); }