private ParsedArtistQuery ParseTextQuery(string query) { if (string.IsNullOrWhiteSpace(query)) { return(new ParsedArtistQuery()); } var trimmed = query.Trim(); var term = SearchWord.GetTerm(trimmed, "id"); if (term == null) { var trimmedLc = trimmed.ToLowerInvariant(); // Optimization: check prefix, in most cases the user won't be searching by URL if (trimmedLc.StartsWith("/ar/") || trimmedLc.StartsWith("http")) { var entryId = entryUrlParser.Parse(trimmed, allowRelative: true); if (entryId.EntryType == EntryType.Artist) { return new ParsedArtistQuery { Id = entryId.Id } } ; } if (trimmedLc.StartsWith("http") || trimmedLc.StartsWith("mylist/") || trimmedLc.StartsWith("user/")) { var extUrl = new ArtistExternalUrlParser().GetExternalUrl(trimmed); if (extUrl != null) { return new ParsedArtistQuery { ExternalLinkUrl = extUrl } } ; } } else { switch (term.PropertyName) { case "id": return(new ParsedArtistQuery { Id = PrimitiveParseHelper.ParseIntOrDefault(term.Value, 0) }); } } return(new ParsedArtistQuery { Name = trimmed }); }
private ParsedArtistQuery ParseTextQuery(SearchTextQuery textQuery) { if (textQuery.IsEmpty) { return(new ParsedArtistQuery()); } var trimmed = textQuery.OriginalQuery.Trim(); var term = SearchWord.GetTerm(trimmed, "id"); if (term == null) { var trimmedLc = trimmed.ToLowerInvariant(); // Optimization: check prefix, in most cases the user won't be searching by URL var result = FindInternalUrl(trimmed, trimmedLc); if (result != null) { return(result); } result = FindExternalUrl(trimmed, trimmedLc); if (result != null) { return(result); } } else { switch (term.PropertyName) { case "id": return(new ParsedArtistQuery { Id = PrimitiveParseHelper.ParseIntOrDefault(term.Value, 0) }); } } return(new ParsedArtistQuery { Name = textQuery.Query }); }
private SearchWord GetTerm(string query, params string[] testTerms) { return(SearchWord.GetTerm(query, testTerms)); }