public ActionResult GetHint(string term) { if (!string.IsNullOrEmpty(term)) { var seacher = new Seacher(dataFolder); WildcardQuery nameQuery = new WildcardQuery(new Term("Name", "*" + term + "*")); var Result = seacher.Search(nameQuery, 5); Result.SearchResultItems.OrderBy(x => x.Type); if (Result.SearchResultItems.Count > 0) { Result.SearchResultItems.OrderBy(x => x.Type); return Json(Result.SearchResultItems); } } return new JsonResult { Data = new { OK = false } }; }
public ActionResult OnSearch(string searchString) { if (!string.IsNullOrEmpty(searchString)) { var finalQuery = new BooleanQuery(); string[] terms = searchString.Split(new[] { " " }, StringSplitOptions.RemoveEmptyEntries); for (int i = 0; i < terms.Count(); i++) { terms[i].Replace("~", ""); finalQuery.Add(new WildcardQuery(new Term("FilmName", "*" + terms[i] + "*")), Occur.SHOULD); finalQuery.Add(new WildcardQuery(new Term("FilmGenre", "*" + terms[i] + "*")), Occur.SHOULD); finalQuery.Add(new WildcardQuery(new Term("FilmCompany", "*" + terms[i] + "*")), Occur.SHOULD); } var seacher = new Seacher(dataFolder); var Result = seacher.Search(finalQuery, 25, "FilmName", OnSeachSort()); if (Result.SearchResultItems.Count > 0) { var film_ids = Result.SearchResultItems.Select(item => item.Id).ToArray(); var idToIndexMap = film_ids.Select((i, v) => new { Index = i, Value = v }) .ToDictionary( pair => pair.Index, pair => pair.Value ); var searchedFilms = GetFilms<Film>(film => film_ids.Contains(film.Id)) .OrderBy(film => idToIndexMap[film.Id]); return Json(searchedFilms); } } return new JsonResult { Data = new { OK = false}, }; }