本人是新手,正在学习Lucene.net,需要Lucene.net对数据库百万条数据进行建索引,检索高亮分页返回Datatable的DEMO,求前辈们指点一下,我的QQ:362511544,
建索引和检索我会,我目前就是还没有开窍,需要一个Demo的例子让我开一下窍,这个Demo要包含检索高亮分页功能,更新,其实我目前困惑的就是检索后怎么进行高亮分页,和更新问题,由于我才刚进入这个行业,对这些困惑的很,需要高人指教一下.....
void Page_Load(object sender, EventArgs e) { KeyWord = Request["kw"]; if (string.IsNullOrEmpty(KeyWord) == false) { literalDissect.Text = string.Join(" ", DiscuzSearcher.Dissect(KeyWord).ToArray()); literalDissect.Visible = true; var pager = new SearchSite.Ctrls.RupengPager();protected pager.PageSize = 10; pager.TryParseCurrentPageIndex(Request["pagenum"]); Stopwatch stopwatch = new Stopwatch(); stopwatch.Start(); //启动搜索 DiscuzSearcher searcher = new DiscuzSearcher(); int startRowIndex = (pager.CurrentPageIndex-1) * pager.PageSize; var result = searcher.Search(KeyWord, startRowIndex, pager.PageSize); stopwatch.Stop(); pager.TotalCount = searcher.TotalCount; //显示统计结果 Stastics = String.Format("找到相关网页约{0}篇,用时{1}毫秒", searcher.TotalCount, stopwatch.ElapsedMilliseconds); repeatorResult.DataSource = result; repeatorResult.DataBind(); pager.UrlFormat = GetPageAbsolutePath()+"?pagenum={n}&kw=" + HttpUtility.UrlEncode(KeyWord); PagerHTML = pager.Render();//渲染页码条HTML this.Title = KeyWord + "-站内搜索"; log.Debug(string.Format("ip地址为{0}的用户搜索{1}", Request.UserHostAddress, KeyWord)); new So_KeywordLogBLL().InsertKeyWord(KeyWord, Request.UserHostAddress); } else { this.Title = "站内搜索"; } }
自己写了一个分页控件”需要可以给你。
能更具体点嘛,对数据库操作
IndexSearcher是进行搜索的类,构造函数传递一个IndexReader。IndexSearcher的void Search(Query query, Filter filter, Collector results)方法用来搜索,Query是查询条件, filter目前传递null, results是检索结果,TopScoreDocCollector.create(1000, true)方法创建一个Collector,1000表示最多结果条数,Collector就是一个结果收集器。
Query有很多子类,PhraseQuery是一个子类。 PhraseQuery用来进行多个关键词的检索,调用Add方法添加关键词,query.Add(new Term("字段名", 关键词)),PhraseQuery. SetSlop(int slop)用来设置关键词之间的最大距离,默认是0,设置了Slop以后哪怕文档中两个关键词之间没有紧挨着也能找到。
query.Add(new Term("字段名", 关键词))
query.Add(new Term("字段名", 关键词2))
类似于:where 字段名 contains 关键词 and 字段名 contais 关键词2
建立索引,高亮显示,搜索这些都比较容易实现的 分词器最好用盘古分词器。Lucene主要是分页没有给出实现,需要自己实现的 方案您可以参考http://wenku.baidu.com/view/72069ed97f1922791688e81b.html?from=rec&pos=0&weight=7&lastweight=2&count=4 有四种实现方案
实现您可以参考
http://wenku.baidu.com/view/10fc19360b4c2e3f572763e1.html
http://www.cnblogs.com/lonely7345/archive/2008/06/27/1231354.html
因为最近在做其它项目,站内搜索的项目分页还没有实现,在这也不多说 只给些我前一段时间浏览的文档 希望对您有帮助