/// <summary> /// 向数据库中添加一条记录 /// </summary> /// <param name="model">要添加的实体</param> /// <returns>插入数据的ID</returns> public int Insert(CommentSet model) { #region SQL语句 const string sql = @" INSERT INTO [dbo].[CommentSet] ( [Content] ,[State] ,[Time] ,[Article_Id] ,[User_Id] ,[Source_Id] ,[Ip] ) VALUES ( @Content ,@State ,@Time ,@Article_Id ,@User_Id ,@Source_Id ,@Ip );select @@IDENTITY"; #endregion var res = SqlHelper.ExecuteScalar(sql, new SqlParameter("@Content", model.Content), new SqlParameter("@State", model.State), new SqlParameter("@Time", model.Time), new SqlParameter("@Article_Id", model.Article_Id), new SqlParameter("@User_Id", model.User_Id), new SqlParameter("@Source_Id", model.Source_Id), new SqlParameter("@Ip", model.Ip) ); return res == null ? 0 : Convert.ToInt32(res); }
/// <summary> /// 根据主键ID更新一条记录 /// </summary> /// <param name="model">更新后的实体</param> /// <returns>执行结果受影响行数</returns> public int Update(CommentSet model) { #region SQL语句 const string sql = @" UPDATE [dbo].[CommentSet] SET [Content] = @Content ,[State] = @State ,[Time] = @Time ,[Article_Id] = @Article_Id ,[User_Id] = @User_Id ,[Source_Id] = @Source_Id ,[Ip] = @Ip WHERE [Id] = @Id"; #endregion return SqlHelper.ExecuteNonQuery(sql, new SqlParameter("@Id", model.Id), new SqlParameter("@Content", model.Content), new SqlParameter("@State", model.State), new SqlParameter("@Time", model.Time), new SqlParameter("@Article_Id", model.Article_Id), new SqlParameter("@User_Id", model.User_Id), new SqlParameter("@Source_Id", model.Source_Id), new SqlParameter("@Ip", model.Ip) ); }
/// <summary> /// 从索引库中检索关键字 /// </summary> private static List<CommentSet> SearchFromIndexData(string IndexSavePath, string searchKey) { string indexPath = IndexSavePath; FSDirectory directory = FSDirectory.Open(new DirectoryInfo(indexPath), new NoLockFactory()); IndexReader reader = IndexReader.Open(directory, true); IndexSearcher searcher = new IndexSearcher(reader); //搜索条件 PhraseQuery query = new PhraseQuery(); //把用户输入的关键字进行分词 foreach (string word in Picture.Utility.SplitContent.SplitWords(searchKey)) { query.Add(new Term("content", word)); } //query.Add(new Term("content", "C#"));//多个查询条件时 为且的关系 query.SetSlop(100); //指定关键词相隔最大距离 //TopScoreDocCollector盛放查询结果的容器 TopScoreDocCollector collector = TopScoreDocCollector.create(1000, true); searcher.Search(query, null, collector);//根据query查询条件进行查询,查询结果放入collector容器 //TopDocs 指定0到GetTotalHits() 即所有查询结果中的文档 如果TopDocs(20,10)则意味着获取第20-30之间文档内容 达到分页的效果 ScoreDoc[] docs = collector.TopDocs(0, collector.GetTotalHits()).scoreDocs; //展示数据实体对象集合 var commontModels = new List<CommentSet>(); for (int i = 0; i < docs.Length; i++) { int docId = docs[i].doc;//得到查询结果文档的id(Lucene内部分配的id) Document doc = searcher.Doc(docId);//根据文档id来获得文档对象Document CommentSet commont = new CommentSet(); commont.Content = doc.Get("content"); //book.ContentDescription = doc.Get("content");//未使用高亮 //搜索关键字高亮显示 使用盘古提供高亮插件 //book.ContentDescription = Picture.Utility.SplitContent.HightLight(Request.QueryString["SearchKey"], doc.Get("content")); commont.Id = Convert.ToInt32(doc.Get("id")); commontModels.Add(commont); } return commontModels; }