利用Lucene打造站内搜索引擎的思路

1.为什么要用Lucene,而不用直接从数据库里搜索记录?
主要是考虑到几个因素:(1)性能问题,Lucene是基于文件索引的搜索机制,性能要比数据库里检索更快,特别是数据量大的时候两者区别比较明显。数据库用Select检索时,默认在执行sql语句时,会对表锁定,直到查询完成;(2)目前很多网站,都已经将页面静态化,这种情况下,直接用生成的文件编制索引,再利用Lucene来检索,可以不用查询数据库,减轻了数据库的压力;(3)Lucene可以更方便的进行分词,支持多个关键字检查等操作,在实现上要比Sql方便;(4)直接基于文件系统的检索,不会有SQL注入风险

2.创建索引
基本上有二种思路,适用于不同的情况
(1)如果网站本身就是静态化的,可以直接读取静态Html文件,来创建索引。注意:如果要实现特定标签的搜索(比如要按产品价格,产品编号,产品摘要,发布时间等精确搜索产品信息),在读取文件内容时,需要利用正则表达式对Html文件进行匹配分析,得到各个标签的值,再创建Field,加入Document,最后调用IndexWriter的相应方法创建索引
(2)也可以直接从数据库里查询各标签的值,再按(1)的方法,生成Field-->Document-->加入IndexWriter

3.索引的维护
显然,不可能每次查询都全部将索引生成一次,这里的索引维护主要是索引更新和索引删除,也有两种思路:
(1)找个访问比较少的时段,比如每天晚上0点,做一个C/S程序放在服务器上,用定时器或计划任务全部重新生成索引
(2)更合理有效的方式,是当信息发生修改或删除时,索引维护程序能得到通知,仅更新特定信息的索引就可以了。这里建议用消息队列机制,网站上有信息发生增,删,改时,将唯一标识值,发送到消息队列,然后索引维护程序监听消息队列,一有消息了,马上根据唯一标识,到数据库里取出修改的信息(或读取修改过的Html文件),更新指定索引即可

4.分词问题
国内有一些公开的分词组件,可以直接利用,当然有一些是商业化的,要真正好用的,得花一点钱,呵呵 

时间: 2024-08-03 03:40:29

利用Lucene打造站内搜索引擎的思路的相关文章

轻松拥有自己的站内搜索引擎

搜索引擎 提示:请把全角状态下的<>改成半角状态下的<>使用 很多个人网站的站长都希望为自己的网站建立一个站内搜索引擎,但一不熟悉ASP.PHP.JSP等动态开发技术,另外自己建立站内搜索也需要空间支持相应的动态技术,所以常不得已放弃.其实,何不借用Google打造站内搜索引擎,来方便网友对自己网站的内容进行查找. 若想在某特定网站内搜索特定的内容(如搜索www.cfan.com.cn中包含关键字"网络"的内容),只需要在Google的搜索栏里输入:"

轻轻松松为自己建一个站内搜索引擎

提示:请把全角状态下的<>改成半角状态下的<>使用 很多个人网站的站长都希望为自己的网站建立一个站内搜索引擎,但一不熟悉ASP.PHP.JSP等动态开发技术,另外自己建立站内搜索也需要空间支持相应的动态技术,所以常不得已放弃.其实,何不借用Google打造站内搜索引擎,来方便网友对自己网站的内容进行查找. 若想在某特定网站内搜索特定的内容(如搜索www.cfan.com.cn中包含关键字"网络"的内容),只需要在Google的搜索栏里输入:"网络 si

利用FrontPage制作站内信息搜索平台

frontpage 对于个人网站,随着网站信息量的增加,我们也需要为网站增设站内.站外搜索引擎方便浏览者的访问和信息检索,不仅如此,增加了站内.站外搜索引擎还可以有效提高网站的档次,使个人网站更具大站风范. 但很多站长都很"畏惧"添加搜索引擎,因为在他们心目中制作一个搜索引擎不仅需要专业的编程知识还要高深的数据库技术等等,其实不然,相信你在看了本文后,一定会觉得:搜索引擎其实很简单! 做信息搜索网站需要什么 1.了解服务器支持的语言,如服务器是否支持FrontPage扩展模块,是否支持

利用FrontPage2003制作站内信息搜索平台

frontpage FrontPage不仅可以帮助我们迅速入门网页制作,还可以利用它为网站制作一个简单的站内搜索引擎,可谓是网页制作.站内搜索一气呵成.当然在制作站内信息搜索平台前你应该已经建立了一个网站. 步骤: 第一步,打开FrontPage2003,执行"文件→打开网站",指定要设置站内搜索引擎的网站目录.然后在"网站"文件夹内双击打开需要添加站内搜索引擎入口的页面(一般是网站的首页)进入编辑状态. 第二步,根据页面布局将鼠标移到添加搜索入口的位置,执行&qu

轻松利用FrontPage做站内搜索

  FrontPage不仅可以帮助我们迅速入门网页制作,还可以利用它为网站制作一个简单的站内搜索引擎,可谓是网页制作.站内搜索一气呵成.当然在制作站内信息搜索平台前你应该已经建立了一个网站. 步骤: 第一步,打开FrontPage2003,执行"文件→打开网站",指定要设置站内搜索引擎的网站目录.然后在"网站"文件夹内双击打开需要添加站内搜索引擎入口的页面(一般是网站的首页)进入编辑状态. 第二步,根据页面布局将鼠标移到添加搜索入口的位置,执行"插入→We

关于lucene.net站内搜索的简单问题

问题描述 关于lucene.net站内搜索的简单问题 我做了一个简单的站内搜索,但是创建索引后无法搜索到数据,不知道为什么 #region 创建索引 public void createIndex() { SqlConnection conn = new SqlConnection("server=localhost;database=news;uid=sa;pwd=intellitrans"); FSDirectory directory; IndexWriter writer; s

lucene.net站内搜索找不到数据

问题描述 lucene.net站内搜索找不到数据 不知道哪里错了,就是搜索的时候找不到数据.求大神帮忙看一下哪错了

想在用VB6.0制作的软件调用tom365和skyme站内搜索引擎,请问各位大虾该如何实现 0分

问题描述 想在用VB制作的软件调用tom365和skyme影视站内搜索引擎,请问各位大虾该如何实现我最近想制作一个集web浏览器盒与搜索框于一体的搜索类工具,可当我想直接调用tom365和skyme影视网站站内搜索引擎时,却无论如何也不知道其调用参数,就比如在搜索框可以直接输入http://www.baidu.coms?wd=待搜索关键字,然后浏览器就可以直接调用百度搜索引擎进行关键字的搜索,直接把百度搜索结果页面给打开(为什么baidu可以这样调用,而tom365和skyme却不能呢,希望这个

王通:站内搜索引擎的SEO策略

越来越多的大中型网站都有了站内搜索引擎,站内搜索引擎如果采用正确的SEO策略,可以产生大量非常合理的关键词页面,可以从各大搜索引擎中带来巨大的流量.站内搜索引擎该如何SEO呢?很简单,只需要做好以下三步工作. 第一步:关键词的布局: 搜索结果页面中,关键词的密度是非常合理的,只要按照SEO的标准,合理的在网页中六个关键的地方把关键词布局好就OK. &http://www.aliyun.com/zixun/aggregation/37954.html">nbsp; 这类个地方分别是: