public IActionResult SearchPosts([FromRoute] string terms, int page = 0, int pageSize = 5, bool firstPage = false, string orderBy = "ranking")
        {
            if (firstPage)
            {
                _dataService.AddHistory(terms);
            }
            var posts = _dataService.SearchPosts(terms, page, pageSize, orderBy, out var totalResults);

            posts.ForEach(post => post.Url = Url.Link(nameof(PostsController.GetPost), new { id = post.Id }));

            var result = new PaginatedResult <RankedSearchQuestion>
            {
                TotalResults   = totalResults,
                ShowingResults = "Showing results ordered by " + orderBy + " " + (page * pageSize + 1) + "-" + (page + 1) * pageSize + ".",
                PreviousPage   = page > 0
                    ? Url.Link(nameof(SearchPosts), new { page = page - 1, pageSize, orderBy })
                    : null,
                NextPage = (page + 1) * pageSize < totalResults
                    ? Url.Link(nameof(SearchPosts), new { page = page + 1, pageSize, orderBy })
                    : null,
                Results = posts
            };

            return(Ok(result));
        }
        public IActionResult GetPostsWords(string name, int page = 0, int pageSize = 5, bool firstPage = false)
        {
            if (firstPage)
            {
                _dataService.AddHistory(name);
            }

            var posts = _dataService.GetWeightedWordList(name, page, pageSize, out var totalResults);

            var result = new PaginatedResult <RankedWord>
            {
                TotalResults   = totalResults,
                ShowingResults = "Showing results " + (page * pageSize + 1) + "-" + (page + 1) * pageSize + ".",
                PreviousPage   = page > 0
                    ? Url.Link(nameof(GetPostsWords), new { page = page - 1, pageSize })
                    : null,
                NextPage = (page + 1) * pageSize < totalResults
                    ? Url.Link(nameof(GetPostsWords), new { page = page + 1, pageSize })
                    : null,
                Results = posts
            };

            return(Ok(result));
        }