盘古分词

下边代码为读取代码
  #region 搜索功能
        protected void btnSearch_Click(object sender, EventArgs e)
        {

            this.rpTestContentShow.DataSource = getInfo();
            this.rpTestContentShow.DataBind();
        } 
        #endregion


        protected void btnCreatIndex_Click(object sender, EventArgs e)
        {
            string path = Server.MapPath(@"/PanGu/Index");
            string title = btnTltle.Text.Trim();
            string summary = txtContent.Text.Trim();

            bool isNew = false;
            if (!IndexReader.IndexExists(path)) 
            {
                isNew = true;
            }
            Lucene.Net.Index.IndexWriter iw = new Lucene.Net.Index.IndexWriter(path, new PanGuAnalyzer(), isNew);
            #region 从数据库总读到数据
            DataSet ds = new DataSet();
            SqlParameter[] parameters = {
                    new SqlParameter("@tablename", SqlDbType.VarChar, 50),
                    new SqlParameter("@columns", SqlDbType.VarChar, 500),
                    new SqlParameter("@pagesize", SqlDbType.Int),
                    new SqlParameter("@currpage", SqlDbType.Int),
                    new SqlParameter("@order", SqlDbType.VarChar,2000),
                    new SqlParameter("@where", SqlDbType.VarChar,2000),
                    };
            parameters[0].Value = "VW_Product_ForSearch";
            parameters[1].Value = " *";
            parameters[2].Value = 1000;
            parameters[3].Value = 1;
            parameters[4].Value = " product_order asc";
            parameters[5].Value = " 1=1";
            using (SqlConnection conn = new SqlConnection(DBHelper.conStr))
            {
                using (SqlCommand cmd = new SqlCommand("JF_GetFinalPager", conn))
                {
                    cmd.Parameters.AddRange(parameters);
                    cmd.CommandType = CommandType.StoredProcedure;
                    conn.Open();
                    SqlDataAdapter da = new SqlDataAdapter(cmd);
                    da.Fill(ds);
                    conn.Close();
                }
            } 
            #endregion

            DataTable dt = ds.Tables[0];
            if (dt != null && dt.Rows.Count > 0)
            {
                foreach (DataRow dr in dt.Rows)
                {
                    Document doc = new Document();

                    doc.Add(new Lucene.Net.Documents.Field("title", dr["p_name"].ToString(), Lucene.Net.Documents.Field.Store.YES, Field.Index.ANALYZED));
                    doc.Add(new Lucene.Net.Documents.Field("summary", dr["c_name"].ToString(), Lucene.Net.Documents.Field.Store.YES, Field.Index.ANALYZED));
                    doc.Add(new Lucene.Net.Documents.Field("createTime", DateTime.Now.ToString("yyyy-MM-dd"), Lucene.Net.Documents.Field.Store.YES, Field.Index.ANALYZED));

                    iw.AddDocument(doc);
                }
            }
            iw.Optimize();
            iw.Close();
        }
View Code

下边代码为盘古分词创建索引

  public string Search = string.Empty;
        protected void btnSearch_Click(object sender, EventArgs e)
        {

            string path = Server.MapPath(@"/PanGu/Index");
            string keywords = this.btnTltle.Text.Trim();

            IndexSearcher searcher = new IndexSearcher(path);

            QueryParser parser = new QueryParser(Lucene.Net.Util.Version.LUCENE_29, "title", new PanGuAnalyzer());
            Query qq = parser.Parse(keywords);
            Hits hits=searcher.Search(qq);

            PanGu.HighLight.SimpleHTMLFormatter simpleHTMLFormatter = new PanGu.HighLight.SimpleHTMLFormatter("<span style="font-weight:bold;color:red;">", "</span>");
            PanGu.HighLight.Highlighter highlighter = new PanGu.HighLight.Highlighter(simpleHTMLFormatter, new Segment());

            highlighter.FragmentSize = 50;

            StringBuilder sb = new StringBuilder();

            DataTable dtTab = new DataTable();

            dtTab.Columns.Add("p_name");
            dtTab.Columns.Add("c_name");
           

            for (int i = 0; i < hits.Length(); i++) 
            {
                DataRow dr = dtTab.NewRow();
                Document doc = hits.Doc(i);
                dr[0] = highlighter.GetBestFragment(keywords, doc.Get("title"));
                dr[1] = doc.Get("summary");
                dtTab.Rows.Add(dr);
            }

            this.rpTestContentShow.DataSource = dtTab;
            this.rpTestContentShow.DataBind();
        }
View Code
原文地址:https://www.cnblogs.com/zhoulove/p/3592271.html