public SingleSearchResult GetSongInfo(string searchQuery) { var result = new SingleSearchResult { ResultCode = ResultCode.Successful }; try { logger.LogDebug("GetSongInfo start, use search query: {query}", searchQuery); var query = Parser.Parse(searchQuery); var songs = LucenePool.SearchSongs(musicConfiguration.IndexPath, query, 10); result.SongInfos = songs; logger.LogDebug("GetSongInfo ended, use search query: {query}, find {Length} results", searchQuery, songs.Length); } catch (Exception ex) { result.ResultCode = ResultCode.Exception; result.ExtraMessage = "Error occur"; logger.LogError(ex, "GetSongInfo Error Occur"); } return(result); }
public BatchSearchResult GetSongInfos(BatchSearchRequest searchRequest) { var result = new BatchSearchResult { ResultCode = ResultCode.Successful }; if (searchRequest.SearchRequestItems.Count > Common.Constants.MaxRequestForOneBatch) { result.ResultCode = ResultCode.Failed; result.ExtraMessage = $"Too many request items, maxinum {Common.Constants.MaxRequestForOneBatch}."; } else if (searchRequest.SearchRequestItems?.Any() ?? false) { foreach (var item in searchRequest.SearchRequestItems) { var batchItem = new BatchSearchResultItem { ResultCode = ResultCode.Successful, SearchRequestItem = item }; try { logger.LogDebug("{Method} start for {item}", nameof(GetSongInfos), item); var searchStr = GetSearchQueryStr(item); if (!string.IsNullOrWhiteSpace(searchStr)) { var query = Parser.Parse(searchStr); var songs = LucenePool.SearchSongs(musicConfiguration.IndexPath, query, 10); batchItem.SongInfos = songs; logger.LogDebug("{Method} ended for {item}, find {count} results.", nameof(GetSongInfos), item, songs.Length); } else { batchItem.ResultCode = ResultCode.Failed; batchItem.ExtraMessage = "No valid info to generate search query"; logger.LogWarning("{Method} ended for no valid search information", nameof(GetSongInfos)); } } catch (Exception ex) { batchItem.ResultCode = ResultCode.Exception; batchItem.ExtraMessage = "Error occur"; logger.LogError(ex, "GetSongInfo Error Occur"); } result.SearchResults.Add(batchItem); } } return(result); }