`
yydcj
  • 浏览: 61567 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

利用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.分词问题
国内有一些公开的分词组件,可以直接利用,当然有一些是商业化的,要真正好用的,得花一点钱,呵呵。

以上内容转自:http://www.cnblogs.com/yjmyzz/archive/2007/12/31/1021935.html 

分享到:
评论

相关推荐

    基于Lucene的WEB站内搜索引擎的研究与实现

    ### 基于Lucene的WEB站内搜索引擎研究与实现 #### 一、搜索引擎基本原理与Lucene概述 搜索引擎的基本原理涉及对大量文档或网页进行分析、索引和检索的过程。这一过程通常包括数据采集(爬虫)、预处理(如分词、...

    Lucene.Net站内搜索

    《Lucene.Net站内搜索:打造高效搜索引擎》 在互联网信息爆炸的时代,站内搜索成为网站提供用户体验的重要一环。Lucene.Net作为一款强大的全文搜索引擎库,被广泛应用于各类网站和应用中,帮助用户快速准确地找到所...

    lucene.net 打造全文搜索引擎

    在标题“lucene.net 打造全文搜索引擎”中,关键词“lucene.net”指代了我们讨论的核心技术,即Lucene.NET库。它是一个基于Java的Lucene项目在.NET Framework上的移植,提供了与Java版本相似的功能。全文搜索引擎则...

    lucene站内搜索引擎

    **Lucene:构建高效站内搜索引擎** Lucene是Apache软件基金会的一个开源全文检索库,它提供了高效的全文检索、分析和存储功能。作为一个Java库,Lucene可以被集成到各种Java应用中,帮助开发者轻松实现站内搜索引擎...

    lucene站内搜索

    Lucene是一个高性能、全文本搜索库,由Apache软件基金会开发,被广泛应用于各种搜索引擎和站内搜索解决方案中。它提供了丰富的文本分析、索引和搜索功能,使得开发者能够轻松地在自己的应用程序中实现复杂的全文检索...

    基于Lucene的搜索引擎的研究与应用

    文章主要研究和应用了基于Lucene的搜索引擎,其特点是利用开源网络爬虫工具抓取互联网信息,并通过Lucene的API对特定信息进行索引和搜索。下面详细介绍相关知识点。 1. Lucene基础 Lucene是由Apache软件基金会提供...

    lucene实现站内检索

    本文将深入探讨如何利用Lucene来构建一个站内检索系统,特别关注其索引和搜索功能,以及如何通过优化提高检索效率。 首先,我们需要了解Lucene的基本工作原理。Lucene通过建立倒排索引来实现全文检索。倒排索引是一...

    利用lucene做自己的搜索引擎

    ### 利用Lucene构建个性化搜索引擎的关键技术与实践 #### 概述 随着互联网的快速发展,搜索引擎已成为人们获取信息不可或缺的工具。当前市场上知名的搜索引擎如Google、Yahoo、百度等不仅推动了信息技术的进步,也...

    开发自己的搜索引擎 lucene + heritrix

    在这个过程中,Lucene 和 Heritrix 是两个非常关键的工具,它们分别在搜索引擎的构建中扮演着不同的角色。 首先,Lucene 是一个基于 Java 的开源信息检索库,它为开发者提供了一系列用于构建搜索引擎的工具和接口。...

    基于lucene的桌面搜索引擎

    本项目“基于Lucene的桌面搜索引擎”正是针对这一需求,利用开源全文搜索引擎库Lucene实现了一个桌面级别的搜索解决方案。 **一、Lucene简介** Lucene是Apache软件基金会的一个开放源代码项目,它是Java语言编写的...

    基于Lucene的中型搜索引擎(C#)

    **基于Lucene的中型搜索引擎(C#)** 在IT领域,搜索引擎是不可或缺的一部分,它们能够高效地处理海量数据,帮助用户快速找到所需信息。本文将深入探讨一个基于Apache Lucene的中型搜索引擎实现,该实现是由...

    lucene_heritrix 搜索引擎

    Lucene和Heritrix是两个在信息技术领域中用于搜索引擎构建的重要工具。Lucene是一个高性能、全文本搜索库,由Apache软件基金会开发,它提供了一个简单的API来索引和搜索大量文本数据。Heritrix,另一方面,是一个...

    LUCENE搜索引擎基本工作原理

    **LUCENE搜索引擎基本工作原理** Lucene是一个开源的全文搜索引擎库,被广泛应用于构建复杂的搜索引擎系统。它的设计目标是高效、灵活且可扩展。理解Lucene的工作原理有助于开发人员更好地利用这一强大的工具。 **...

    基于Lucene的搜索引擎

    在本项目中,我们看到的是一个专门针对财经类网页的搜索引擎,这展示了如何利用Lucene来处理特定领域信息的搜索需求。 ### Lucene基础知识 1. **索引构建**:Lucene的核心功能是创建索引。它将非结构化的文本数据...

    搜易站内搜索引擎(基于Lucene开发的,.NET平台下免费的站内搜索)

    搜易站内搜索引擎就是基于Lucene.NET构建的,它允许.NET开发者充分利用Lucene的强大搜索能力,而无需深入学习Java。 **搜易站内搜索引擎特性** 1. **简单易用**:搜易站内搜索引擎提供了一套直观的API,使得.NET...

Global site tag (gtag.js) - Google Analytics