`

开源搜索框架笔记

 
阅读更多

首推的当然时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.zip

    Paperwork 是一个开源网络云笔记系统,是 Evernote、Microsoft OneNote 和 Google Keep 的开源替代品。Paperwork 采用 PHP 开发,使用 Laravel 4 框架,提供一个很流行的 Web UI,基于 AngularJS 和 Bootstrap 3 ...

    gtest开源框架使用笔记

    `gtest` 是 Google 开源的一款强大的 C++ 测试框架,用于编写单元测试。这篇学习笔记主要介绍了 `gtest` 的基本使用方法,包括编译、测试原理、断言、层次结构和测试夹具。 首先,要使用 `gtest`,你需要从 GitHub ...

    python面试数据库框架笔记总结

    以下是对“Python面试数据库框架笔记总结”的详细解读。 首先,我们要了解Python中的主要数据库接口标准——DB-API,它是Python官方定义的一个规范,用于与各种数据库进行交互。这个接口定义了一系列的函数和对象,...

    懒人笔记 一个 iOS 开源笔记 App.zip

    懒人笔记,作为一个曾经活跃的iOS开源项目,为开发者提供了一个便捷的、可定制化的笔记应用框架。虽然它已不再维护,但其代码库仍能为我们揭示iOS应用开发的一些关键知识点,尤其是对于初学者和希望了解iOS开发的人...

    SSH框架学习笔记

    SSH框架是Java开发中常见的三大开源框架Struts、Spring和Hibernate的简称,它们一起构成了强大的企业级应用开发解决方案。这篇笔记将主要介绍SSH中的Struts框架,帮助初学者理解其核心概念和工作流程。 Struts是一...

    MyEclipse 搭建SSH框架 笔记

    ### MyEclipse 搭建SSH框架笔记 #### 一、前言 SSH框架是指Struts、Spring和Hibernate这三个开源框架的集成应用。利用MyEclipse自带工具搭建SSH框架能够大大提高开发效率,使开发者能够专注于业务逻辑的实现,而...

    Struts2框架笔记

    Struts2是一个开源的Web应用程序框架,基于MVC(Model-View-Controller)架构模式。它为Java Web开发者提供了一个强大的平台来构建高度可扩展的应用程序。Struts2的核心组件包括Action、Interceptor、Result等。 ##...

    Django框架学习笔记

    ### Django框架学习笔记 #### 软件框架概述 软件框架是软件开发中的一种结构化设计,它提供了一种组织代码、数据和其他资源的方式,使得开发者可以更容易地构建应用程序。框架通常包含了一些预设的解决方案,这些...

    传智播客--黑马程序员 ssm+ssh 框架笔记

    本笔记主要涵盖了Spring、SpringMVC、Mybatis(SSM)以及Struts、Hibernate、Spring(SSH)框架的核心概念、配置及实战应用。 **Spring框架** Spring是一个开源的应用上下文框架,它为Java应用程序提供了全面的依赖...

    基于lucene和nutch的开源搜索引擎资料集合

    [硕士论文]_基于MapReduce的分布式智能搜索引擎框架研究.pdf [硕士论文]_基于Nutch的垂直搜索引擎的分析与实现.pdf 一个例子学懂搜索引擎(lucene).doc 中文搜索引擎技术揭密.doc 九大开源搜索引擎介绍.txt 基于Nutch...

    Springs框架笔记.zip

    Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作Expert One-On-One J2EE Development and Design中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的...

    Spring框架笔记

    Spring框架是一款分层的Java SE/EE全栈轻量级开源框架,其设计目的是为了简化企业级应用程序的开发。Spring的核心优势在于它的轻量级特性,即它是一个非侵入式的框架,不会强迫开发者遵循某种特定的设计模式或架构。...

    读书笔记:用于构建高效且可扩展的交易程序的渐进式Node.js开源量化框架.zip

    读书笔记:用于构建高效且可扩展的交易程序的渐进式Node.js开源量化框架

    RTSP Live555开源框架源码阅读笔记

    ### RTSP Live555开源框架源码阅读笔记 #### 概述 Live555是一个广泛使用的开源项目,主要用于实现实时流协议(RTSP)。该项目支持多种媒体格式和编码方式,如H.264、MPEG-4等,并提供了丰富的API供开发者进行二次...

    若依RuoYi框架剖析笔记,该笔记是在学习江南一点雨所录课程再结合自己的理解所写

    《若依RuoYi框架剖析笔记》是基于江南一点雨的课程并结合个人理解整理而成,涵盖了项目改造、框架结构分析以及多个关键功能模块的深入探讨。以下将逐一解析这些知识点。 1、**项目改造**:首先,从源代码仓库获取...

    RiceQuant开源框架RQAlpha阅读笔记.docx

    ### RiceQuant开源框架RQAlpha知识点总结 #### RQAlpha框架概述 RQAlpha是一款由RiceQuant(米筐科技)开发的开源量化交易平台框架,主要用于帮助用户进行量化投资策略的研究与开发。它提供了一套完整的环境用于...

    Hibernate框架笔记

    1. **Hibernate定义**:Hibernate是一个开源的、轻量级的框架,它为Java应用程序提供了对JDBC的高级抽象封装。通过这种封装,开发人员能够以更简洁、面向对象的方式进行数据库交互。 2. **ORM概念解析**:ORM...

    SSM框架笔记

    SSM框架是Spring、SpringMVC和MyBatis三个开源框架的组合。在实际应用中,这三个框架各自解决不同的问题,但通常会一起被使用来构建Java Web应用程序。下面我们将详细介绍这三个框架的基本概念以及它们之间的集成...

    25个微软经典开源项目框架源码(二)BlogEngine.NET

    包括发布版本、源代码、说明文档,初学者好的指导,高级程序员标准规范的标尺。

    Vue技术栈实现的云笔记项目,印象笔记的功能基本都实现.zip

    - **组件化**:Vue.js的核心是组件系统,项目中的每个功能模块,如笔记列表、编辑器、搜索等,都可以封装为一个独立的组件,方便复用和组合。 - **指令系统**:Vue.js的指令如`v-if`、`v-for`、`v-bind`、`v-on`等...

Global site tag (gtag.js) - Google Analytics