怎么使用LuceneNet技术实现伪静态列表

上传人:沈*** 文档编号:157948359 上传时间:2022-10-02 格式:DOC 页数:5 大小:53.50KB
返回 下载 相关 举报
怎么使用LuceneNet技术实现伪静态列表_第1页
第1页 / 共5页
怎么使用LuceneNet技术实现伪静态列表_第2页
第2页 / 共5页
怎么使用LuceneNet技术实现伪静态列表_第3页
第3页 / 共5页
点击查看更多>>
资源描述
怎么利用Lucene.Net搜索结果,实现伪静态的文章列表大家都知道Lucene.Net是一款优秀的开源全文搜索引挚,笔者发现很多网站项目都使用该引挚,特别是开源的项目更是,显然Lucene.Net有着比其它开源全文搜索引挚更多的优势。具体的优势,网上有很多例子,这里就不谈了,有兴趣的网友可以自己搜索了解一下。今天的目的是:怎么把高性能的Lucene.Net全文搜索引挚和显示新闻列表结合起来,组成使用Lucene.Net技术,实现伪静态列表。实现之前先了解一下为什么要这样做?笔者就先从静态页面与伪静态页面谈起。第一:使用Lucene.Net实现伪静态的前提问题?大家都知道为了更好的被各大搜索引挚更好的收录,都会把网站内容生成静态页面或伪静态页面。其中的静态与伪静态页面的优缺点,各位站长朋友都非常了解,这里笔者也深有体会,就简单谈一下。1、静态页面访问快,收录效果也好,特别像我们这种苦逼站长,要自己托管服务器,相信很多站长和我一样,没有资金,网站能不能盈利还不知道!唉,那只能买虚拟空间,想提高访问速度快,就只能在程序上下点功夫,所以最好全站全部生成静态页面。但生成静态页面的首要条件是必须有能生成静态页面的功能程序,虽然市面上有很多CMS但,能满足个性化、专业化的,还是要自己动手写。我的上一篇文章也提到,像我的医院导航网就是自己手写代码,而非使用目录程序或CMS生成。任何事情有优势,必有劣势。如果数据量大,全站静态页面,需要空间更大,生成速度也会慢。例如:导航网站,还得分一些属性生成,按科室、地区、医院等级、医院类型、医院大全等,这都将生成庞大的静态页面,所以笔者网站除首页、医院地区导航、医院科室导航每天更新,其他页面只能一个星期更新一次,明显信息更新不及时。于是乎想起了伪静态,即能最更新及时,又能满足SEO的要求,接下谈一下我对伪静态的实践。2、伪静态页面,优点笔者就不谈了,谈一下劣势。伪静态就是假的静态,通过重写组件实现。但还是要读取数据库中的数据,打开页面明显比纯静态页面慢了很多,用户体验不好。怎么才能更好的解决伪静态的劣势,笔者想了很多方法,像:升级空间、换空间商等等。升级空间,现在的主机商唉,站长朋友都深有体会吧,像40人合租的服务器,其实早就超过40人了。换空间商,现在网站备案,虽然不用再次备案,但还得邮寄资料等等,也很麻烦。怎么解决这些劣势呢?接下来笔者将使用Lucene.Net实现网站的伪静态列表,既能更新及时(前提是索引及时更新),打开速度又快,何乐而不为呢?第二:Lucene.Net实现的方法1、Lucene.Net生成索引这个如果不懂的,请大家参看我的博文,怎么使用Lucene.Net生成索引。2、怎么实现伪静态列表a、首先实现新闻列表示例(News表)从索引查询出来的动态页面功能,该表有以下字段(classid,tilte,content,adddate,author)。一般全文搜索是只有一个关键字,如果列表显示,还需加上除标题,还有更新日期、新闻类型的搜索条件。那就需要使用Lucene.Net搜索传递几个关键字,本示例传递(classid,keyword)有二个关键字,看以下后台代码:本示例使用的Lucene.Net版本:2.0.0.4。需要引用的命名空间有:using Lucene.Net.Index;using Lucene.Net.Documents;using Lucene.Net.Analysis.Standard;using Lucene.Net.Search;using Lucene.Net.QueryParsers;using Lucene.Net.Analysis;protected List SearchResult = null;/定义显示列表SearchResult =Search(classid, title, psize, currentpage, out totalcount);请看Search功能定义:/ / 检索(新闻信息列表)主要参数有:类型id,标题/ / 新闻类型id/ 关键字(可查询标题)/ 分页大小/ 当前页码/ 返回总记录数/ / public List Search(string classid, string keyword, int pagesize, int pageno, out int totalcount) int _type_num = types.Length; IndexSearcher searchers = new IndexSearcher1; /可以直接指定索引存储目录路径! searchers0 = new IndexSearcher(HttpContext.Current.Server.MapPath(索引存储目录); MultiSearcher search = new MultiSearcher(searchers); BooleanQuery bq = new BooleanQuery(); if (classid!= 0) Term Term_class = new Term(classid, classid); /这是特定的搜索,将显示指定的类型新闻内容 var termQuery = new TermQuery(Term_class); bq.Add(termQuery, BooleanClause.Occur.MUST); string fields = title ; /定义需要查询的字段 Query query = MultiFieldQueryParser.Parse(keywords, fields, flags, new StandardAnalyzer(); /parser.Parse(keywords); bq.Add(query, BooleanClause.Occur.MUST);/添加到条件 Hits hits = search.Search(bq); List result = new List(); totalcount = hits.Length(); if (totalcount 0) int i = (pageno - 1) * pagesize; while (i totalcount & result.Count pagesize) SearchItem news = null; news = new SearchItem(); news.Id = hits.Doc(i).Get(id); news.Title = hits.Doc(i).Get(title);news.Url = hits.Doc(i).Get(url); news.AddDate = hits.Doc(i).Get(adddate); result.Add(news); i+; search.Close(); return result; else return null; 再看前台aspx文件代码:全    部分类下有 条新闻 %if (SearchResult != null) for (int i = 0; i a href= title= target=_blankupdate: 以上显示的列表就是从索引文件读取的,这种速度比从数据库获取快,接下来怎么实现伪静态的方法。B、伪静态规则与实现伪静态规则: 综合A与B两个地方就能实现利用Lucene.Net搜索结果,组成文章列表的伪静态功能完成。本文为医院导航网原创,并首发地址医院导航网博客:
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!