Пример #1
0
 /// <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);
 }
Пример #2
0
 /// <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)
         );
 }
Пример #3
0
        /// <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;
        }