首推的当然时lucene了,先介绍这个吧
lucene : 是一个文件搜索工具包,包括了完整的查询引擎和索引引擎及部分的分析引擎。为apache下的开源子项目。
特点:
1.索引文件独立于操作系统,自己定义了一套8字节为基础的索引文件格式
2.在传统倒排索引的基础上,实现了分块索引,对于新增的文件建立小索引,并能提供索引合并以提升效率。
3.强大的查询引擎。
4.设计了独立于语言和文件格式的文件分析接口,通过接收 token流解析文件,方便扩展。
倒排序算法:
传统的记录方式是 文件 --- > 关键词 的索引方式。
倒排序 关键词 --- > 文件 的索引方式
lucene 还增加了两个位置:
字符位置:在文章中出现的位置
关键词位置:是文章中的第几个关键词
针对这两种情况出现了:出现频率和出现位置。详细如下
关键词 文章号 出现频率 出现位置 。lucene的索引文件就是如下所示。
haha 1[2],2[1] 2,6,8
haha 这个关键词在文件1中出现两次,在文章2中出现1次。在文章1中出现的位置是2,6 。在文章2中出现的位置8。
以上就分出了三个文件 : 辞典文件(存放关键词,同时保存了指向频率文件和位置文件的指针,取得具体出现的频率和位置) 频率文件 位置文件
具体采用的算法是:二元搜索算法。
field : 这个概念来描述存放位置,例如标题中还是URL,还是内容中。该信息也记录在辞典文件中,一个关键词必定属于一个或是多个field.
solr:这个是基于lucene开发的一个企业级搜索应用服务器。提供web-service,restful-api ,普通http-get请求的。简化了lucene的API,是一个完整的搜索引擎框架。
nutch:一个开源的基于lucene 开发的搜索引擎,包含了所有的搜索引擎的功能。
安装分为三个层次:基于本地文件系统,基于局域网,基于internet,用户根据自己需求来选择不同的层次。
架构上分为两个部分:数据的抓取和索引的创建。有一套非常良好的数据抓取工具包。
nutch和lucene选择区别,可以简单的话,nutch除了封装了lucene的索引部分外,还提供了一套数据抓取的工作,所以若是你的数据源来源于你自己,那么完全采用lucene即可,若是你的数据源依赖于外部网络。那么采用nutch是一个很好的选择。
compass:也是一个java开源框架。包含了所有搜索引擎的基本功能,但是提供了很多特性,例如强大的O/R mapping。搜索部分也是基于lucene
可以容易同hibernate集成,并将数据进行索引。
同时支持一些分布式框架的集成,例如:terracotta
总结:
lucene:基本的搜索和索引工具。
compass:简化API,轻松的将java对象映射到搜索引擎中。
SOLR:简化API,暴露一个http服务来进行搜索和索引。
nutch:简化API,同时提供丰富的数据抓取工具。
分享到:
相关推荐
Paperwork 是一个开源网络云笔记系统,是 Evernote、Microsoft OneNote 和 Google Keep 的开源替代品。Paperwork 采用 PHP 开发,使用 Laravel 4 框架,提供一个很流行的 Web UI,基于 AngularJS 和 Bootstrap 3 ...
`gtest` 是 Google 开源的一款强大的 C++ 测试框架,用于编写单元测试。这篇学习笔记主要介绍了 `gtest` 的基本使用方法,包括编译、测试原理、断言、层次结构和测试夹具。 首先,要使用 `gtest`,你需要从 GitHub ...
以下是对“Python面试数据库框架笔记总结”的详细解读。 首先,我们要了解Python中的主要数据库接口标准——DB-API,它是Python官方定义的一个规范,用于与各种数据库进行交互。这个接口定义了一系列的函数和对象,...
懒人笔记,作为一个曾经活跃的iOS开源项目,为开发者提供了一个便捷的、可定制化的笔记应用框架。虽然它已不再维护,但其代码库仍能为我们揭示iOS应用开发的一些关键知识点,尤其是对于初学者和希望了解iOS开发的人...
SSH框架是Java开发中常见的三大开源框架Struts、Spring和Hibernate的简称,它们一起构成了强大的企业级应用开发解决方案。这篇笔记将主要介绍SSH中的Struts框架,帮助初学者理解其核心概念和工作流程。 Struts是一...
Struts2是一个开源的Web应用程序框架,基于MVC(Model-View-Controller)架构模式。它为Java Web开发者提供了一个强大的平台来构建高度可扩展的应用程序。Struts2的核心组件包括Action、Interceptor、Result等。 ##...
### Django框架学习笔记 #### 软件框架概述 软件框架是软件开发中的一种结构化设计,它提供了一种组织代码、数据和其他资源的方式,使得开发者可以更容易地构建应用程序。框架通常包含了一些预设的解决方案,这些...
本笔记主要涵盖了Spring、SpringMVC、Mybatis(SSM)以及Struts、Hibernate、Spring(SSH)框架的核心概念、配置及实战应用。 **Spring框架** Spring是一个开源的应用上下文框架,它为Java应用程序提供了全面的依赖...
[硕士论文]_基于MapReduce的分布式智能搜索引擎框架研究.pdf [硕士论文]_基于Nutch的垂直搜索引擎的分析与实现.pdf 一个例子学懂搜索引擎(lucene).doc 中文搜索引擎技术揭密.doc 九大开源搜索引擎介绍.txt 基于Nutch...
Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作Expert One-On-One J2EE Development and Design中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的...
Spring框架是一款分层的Java SE/EE全栈轻量级开源框架,其设计目的是为了简化企业级应用程序的开发。Spring的核心优势在于它的轻量级特性,即它是一个非侵入式的框架,不会强迫开发者遵循某种特定的设计模式或架构。...
《若依RuoYi框架剖析笔记》是基于江南一点雨的课程并结合个人理解整理而成,涵盖了项目改造、框架结构分析以及多个关键功能模块的深入探讨。以下将逐一解析这些知识点。 1、**项目改造**:首先,从源代码仓库获取...
读书笔记:用于构建高效且可扩展的交易程序的渐进式Node.js开源量化框架
### RTSP Live555开源框架源码阅读笔记 #### 概述 Live555是一个广泛使用的开源项目,主要用于实现实时流协议(RTSP)。该项目支持多种媒体格式和编码方式,如H.264、MPEG-4等,并提供了丰富的API供开发者进行二次...
### RiceQuant开源框架RQAlpha知识点总结 #### RQAlpha框架概述 RQAlpha是一款由RiceQuant(米筐科技)开发的开源量化交易平台框架,主要用于帮助用户进行量化投资策略的研究与开发。它提供了一套完整的环境用于...
1. **Hibernate定义**:Hibernate是一个开源的、轻量级的框架,它为Java应用程序提供了对JDBC的高级抽象封装。通过这种封装,开发人员能够以更简洁、面向对象的方式进行数据库交互。 2. **ORM概念解析**:ORM...
SSM框架是Spring、SpringMVC和MyBatis三个开源框架的组合。在实际应用中,这三个框架各自解决不同的问题,但通常会一起被使用来构建Java Web应用程序。下面我们将详细介绍这三个框架的基本概念以及它们之间的集成...
包括发布版本、源代码、说明文档,初学者好的指导,高级程序员标准规范的标尺。
【元天天三大框架笔记】 本笔记详尽地探讨了服务器端开发中三个核心的开源框架:Hibernate、Struts2和Spring。这些框架在Java企业级应用中占据着至关重要的地位,为开发者提供了强大的数据持久化、MVC架构以及全面...