Beispiel #1
0
        public ActionResult Search(SearchFormViewModel searchParameters)
        {
            if (ModelState.IsValid == false)
            {
                this.Flash(Toastr.ERROR, "Error", "Enter search pattern!");
                return(RedirectToAction("SearchForm", "Search"));
            }

            string[] phrases = searchParameters.SearchPattern.Split('"');

            //svaki neparni index u phrases je razmak, pa ga mičemo
            IEnumerable <string[]> removeBlank = phrases.Select((item, index) => index % 2 == 0 ?
                                                                item.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries)
                                                            : new[] { item });
            List <string> pattern = removeBlank.SelectMany(element => element).ToList();

            string tsPattern = ConvertTo.LogicalPattern(pattern, searchParameters.LogicalOperator == (int)Operator.Or ? Operator.Or : Operator.And);

            string queryString;
            List <MovieViewModel> movies = TextSearch.MorphologySemantic(tsPattern, out queryString);

            var viewModel = new SearchFormViewModel()
            {
                SearchPattern   = searchParameters.SearchPattern,
                LogicalOperator = searchParameters.LogicalOperator,
                QueryString     = queryString,
                Movies          = movies
            };

            UpdateSearchHistory(tsPattern);

            ModelState.Clear(); //bez ovoga ne bi se mijenjao QueryString
            return(View("SearchForm", viewModel));
        }