RavenOverflow.Web.Controllers.HomeController.Search C# (CSharp) Method

Search() public method

public Search ( string term ) : System.Web.Mvc.ActionResult
term string
return System.Web.Mvc.ActionResult
        public ActionResult Search(string term)
        {
            IRavenQueryable<RecentPopularTags.ReduceResult> query = DocumentSession
                .Query<RecentPopularTags.ReduceResult, RecentPopularTags>()
                .Where(x => x.Tag == term);

            // Does this tag exist?
            RecentPopularTags.ReduceResult tag = query.FirstOrDefault();

            var results = new List<string>();

            if (tag != null)
            {
                results.Add(tag.Tag);
            }
            else
            {
                // No exact match .. so lets use Suggest.
                SuggestionQueryResult suggestedTags = query.Suggest();
                if (suggestedTags.Suggestions.Length > 0)
                {
                    results.AddRange(suggestedTags.Suggestions);
                }
            }

            return Json(results, JsonRequestBehavior.AllowGet);
        }

Usage Example

        public void GivenSomeQuestionsAndAnExistingPartialTag_Search_ReturnsAListOfTaggedQuestions()
        {
            IndexesToExecute = new List<Type> {typeof (RecentPopularTags)};

            // Arrange.
            const string tag = "ravne"; // Hardcoded Typo.
            var homeController = new HomeController(DocumentStore);
            ControllerUtilities.SetUpControllerContext(homeController);

            // Act.
            var result = homeController.Search(tag) as JsonResult;

            // Assert.
            Assert.NotNull(result);

            dynamic model = result.Data;
            Assert.NotNull(model);
            Assert.Equal(1, model.Count);
            Assert.Equal("ravendb", model[0]);
        }
All Usage Examples Of RavenOverflow.Web.Controllers.HomeController::Search