using Masuit.LuceneEFCore.SearchEngine; using Masuit.LuceneEFCore.SearchEngine.Interfaces; using Microsoft.AspNetCore.Mvc; using System.Collections.Generic; using WebSearchDemo.Database; namespace WebSearchDemo.Controllers { [Route("[controller]/[action]")] public class HomeController : Controller { private readonly ISearchEngine _searchEngine; public HomeController(ISearchEngine searchEngine) { _searchEngine = searchEngine; } /// /// 搜索 /// /// 关键词 /// 第几页 /// 页大小 /// [HttpGet] public IActionResult Index(string s, int page, int size) { var result = _searchEngine.ScoredSearch(new SearchOptions(s, page, size, typeof(Post))); return Ok(result); } /// /// 创建索引 /// [HttpGet] public void CreateIndex() { //_searchEngine.CreateIndex();//扫描所有数据表,创建符合条件的库的索引 _searchEngine.CreateIndex(new List() { nameof(Post) });//创建指定的数据表的索引 } /// /// 添加索引 /// [HttpPost] public void AddIndex(Post p) { // 添加到数据库并更新索引 _searchEngine.Context.Post.Add(p); _searchEngine.SaveChanges(); //_luceneIndexer.Add(p); //单纯的只添加索引库 } /// /// 删除索引 /// [HttpDelete] public void DeleteIndex(Post post) { //从数据库删除并更新索引库 Post p = _searchEngine.Context.Post.Find(post.Id); _searchEngine.Context.Post.Remove(p); _searchEngine.SaveChanges(); //_luceneIndexer.Delete(p);// 单纯的从索引库移除 } /// /// 更新索引库 /// /// [HttpPatch] public void UpdateIndex(Post post) { //从数据库更新并同步索引库 Post p = _searchEngine.Context.Post.Find(post.Id); // update... _searchEngine.Context.Post.Update(p); _searchEngine.SaveChanges(); //_luceneIndexer.Update(p);// 单纯的更新索引库 } } }