Lucene 4 和 Solr 4 学习笔记(3)

lucene、solr区别 Lucene是一个开放源代码的全文检索引擎工具包,即它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎(英文与德文两种西方语言)。Lucene的目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能,或者是以此为基础建立起完整的全文检索引擎. Solr是一个高性能,采用Java5开发,基于Lucene的全文搜索 阅读详情

    当初说要写写lucene和solr的学习笔记,写了两个后就懒得写了。最近想做个lucene和solr的中文学习网站,翻译一些lucene和solr的英文资料,并提供一个中文的交流学习平台。所以想把这个系列继续下去。

    言归正传,上面说到我们的目标是学习和修改lucene/solr的源代码。不过如果我们从没有用过,那是不可能读懂源代码的。这里推荐《lucene in action》第二版,中文版也有,网上能够下载到英文版的,建议阅读英文版。这本书的第一作者Michael McCandless是现在Lucene PMC的成员,他的blog可以关注一下

http://blog.mikemccandless.com,另外两个作者是本书第一版的作者,好像现在在lucene和solr的开发中不是特别活跃,在lucene和solr的邮件列表中没怎么见过。

   下面我们简单的学习(或者复习)一下Lucene的建索引过程,我们将给出lucene 2.x/3.x 和 最新trunk正在开发的4.0的建立索引的方法,尤其是它们的区别。

    Lucene 2.x/3.x里建立索引并进行简单搜索的例子

	Directory dir=FSDirectory.open(new File("./testindex"));
	for(String fn:dir.listAll()){
	    dir.deleteFile(fn);
	}
	IndexWriter writer=new IndexWriter(dir,new WhitespaceAnalyzer(Version.LUCENE_36),IndexWriter.MaxFieldLength.UNLIMITED);
	Document doc=new Document();
	doc.add(new Field("id","0001",Field.Store.YES,Field.Index.NOT_ANALYZED));
        doc.add(new Field("body","hello world, this is text body part. ",Field.Store.NO,Field.Index.ANALYZED));
        doc.add(new Field("clickCount","10",Field.Store.YES,Field.Index.NO));
        writer.addDocument(doc);
	    
        doc=new Document();
	doc.add(new Field("id","0002",Field.Store.YES,Field.Index.NOT_ANALYZED));
        doc.add(new Field("body","good bye. that is it. ",Field.Store.NO,Field.Index.ANALYZED));
	doc.add(new Field("clickCount","3",Field.Store.YES,Field.Index.NO));
	writer.addDocument(doc);
	    
	writer.close();
	    
	IndexReader reader=IndexReader.open(dir);
	IndexSearcher searcher=new IndexSearcher(reader);
	Query q=new TermQuery(new Term("body","is"));
	TopDocs docs=searcher.search(q, 10);
	for(int i=0;i<docs.totalHits;i++){
	      int docId=docs.scoreDocs[i].doc;
	      float score=docs.scoreDocs[i].score;
	      doc=searcher.doc(docId);

	      System.out.println("id="+doc.get("id")+", clickcount="+doc.get("clickCount"));
	}
	reader.close();
   

Lucene 4 里建立索引并进行简单搜索的例子

    Directory dir=FSDirectory.open(new File("./testindex"));
    IndexWriterConfig cfg=new IndexWriterConfig(Version.LUCENE_40,new WhitespaceAnalyzer(Version.LUCENE_40));
    cfg.setOpenMode(OpenMode.CREATE);
    IndexWriter writer=new IndexWriter(dir,cfg);
    Document doc=new Document();
    doc.add(new Field("id","0001",StringField.TYPE_STORED));
    doc.add(new TextField("body","hello world, this is text body part. "));
    doc.add(new DocValuesField("clickcount",10,DocValues.Type.FIXED_INTS_8));
    writer.addDocument(doc);
    
    doc=new Document();
    doc.add(new Field("id","0002",StringField.TYPE_STORED));
    doc.add(new TextField("body","good bye. that is it. "));
    doc.add(new DocValuesField("clickcount",3,DocValues.Type.FIXED_INTS_8));
    writer.addDocument(doc);
    
    writer.close();
    
    IndexReader reader=DirectoryReader.open(dir);
    IndexSearcher searcher=new IndexSearcher(reader);
    Query q=new TermQuery(new Term("body","is"));
    TopDocs docs=searcher.search(q, 10);
    DocValues docValues = MultiDocValues.getDocValues(reader, "clickcount");
    Source source = docValues.getSource();
    for(int i=0;i<docs.totalHits;i++){
      int docId=docs.scoreDocs[i].doc;
 
Elasticsearch、Solr、Lucene 深度对比:架构解析、性能实战与选型指南 Elasticsearch、Solr、Lucene 深度对比:架构解析、性能实战与选型指南。 阅读详情

相关推荐

Elasticsearch 和 solr 的区别

Elasticsearch 和 solr 的区别 背景:它们都是基于Lucene搜索服务器基础之上开发,一款优秀的,高性能的企业级搜索服务器。【是因为他们都是基于分词技术构建的倒排索引的方式进行查询】 开发语言:java语言开发 诞生时间: Solr :2004年诞生。 Es:2010年诞生。 Es 更新【功能越强大】 区别: 当实时建立索引的时候,solr会产生io阻塞,而...

龚道松 3366

第1篇:SOLR 简介与源码环境搭建

它不仅继承了 Lucene 强大的全文搜索能力,还通过封装和扩展,提供了企业级的功能,比如分布式搜索(SolrCloud)、RESTful API、动态 Schema 管理等。Lucene 提供了底层的索引和搜索能力,而 SOLR 在其之上增加了配置管理、HTTP 接口、集群支持等特性,使其更易于部署和使用。本篇介绍了 SOLR 的背景、功能,并完成了源码环境的搭建。通过编译、运行和调试,我们已经迈出了理解 SOLR 内部机制的第一步。通过日志,可以初步了解 SOLR 的启动流程,后续篇章会深入分析。

资深架构师分享:深入剖析软件架构,探讨云计算、微服务、大数据等前沿技术。分享实践经验,促进技术交流,共同构建卓越系统。 1057

基于Lucene4.6+Solr4.6+Heritrix1.14+S2SH实战开发垂直搜索引擎视频教程

《基于Lucene4.6+Solr4.6+Heritrix1.14+S2SH实战开发从无到有垂直搜索引擎》 课程讲师:小叶子  课程分类:Java 适合人群:初级 课时数量:69课时 用到技术:Hibernate、Struts、Spring、jQuery、Lucene、Solr、Heritrix 涉及项目:百度文库搜索引擎 咨询QQ:1609173918       垂直搜

xkqueen2的专栏 1928

第2篇:SOLR 的架构总览

在上一篇文章中,我们已经完成了 SOLR 的源码环境搭建,成功运行了一个简单的实例,并初步浏览了源码目录结构。现在,我们将目光转向 SOLR 的整体架构,探索它如何将复杂的功能组织成一个高效的搜索系统。通过本篇,你将了解 SOLR 的核心组件是如何协作的,请求是如何从客户端到达服务器并返回结果的,以及源码中哪些关键类扮演了重要角色。这不仅是后续深入分析的基础,也是理解 SOLR 设计思想的起点。是 SOLR 的执行单元,每个 Core 独立管理自己的索引和配置。的分析,我们理解了请求处理的核心流程。

资深架构师分享:深入剖析软件架构,探讨云计算、微服务、大数据等前沿技术。分享实践经验,促进技术交流,共同构建卓越系统。 1354

Java实现全文检索-Solr

Java实现全文检索-SolrSolr是什么?Solr Vs Lucene搭建Solr服务器(Mac系统)Solr搭载IKAnalyer分词器 Solr是什么? Solr是一个基于全文检索的企业级应用服务器;全文检索,可以通过分词来检索数据;应用服务器:它是单独的服务。 Solr Vs Lucene 同为Apache下的应用,Lucene与Solr的区别: Lucene是一个工具包(jar) ,...

qq_39341890的博客 1708

搜索引擎 Solr 简介

1.前言 企业站内搜索技术选型 在一些大型门户网站、电子商务网站等都需要站内搜索功能,使用传统的数据库查询方式实现搜索无法满足一些高级的搜索需求,比如:搜索速度要快、搜索结果按相关度排序、搜索内容格式不固定等,这里就需要使用全文检索技术实现搜索功能。 单独使用Lucene实现 单独使用Lucene实现站内搜索需要开发的工作量较大,主要表现在:索引维护、索引性能优化、搜索性能优化等,因此不建...

qq_36807862的博客 2214

全文搜索引擎Solr原理和实战教程

Solr的核心是一个Web应用程序,但是由于它是建立在开放的协议之上的,任何类型的客户端应用程序都可以使用Solr。HTTP是客户端应用程序和Solr之间使用的基本协议。客户端提出请求,Solr做一些工作并提供响应。客户使用请求来请求Solr执行查询或索引文件等操作。客户端应用程序可以通过创建HTTP请求和解析HTTP响应到达Solr。客户端API封装了发送请求和解析响应的大部分工作,这使得编写客户端应用程序变得更加容易。客户使用Solr的五个基本操作来与Solr一起工作。

AI天才研究院 1万+

学习ElasticSearch、Solr、Lucene、ELK+kafka的笔记

目录 一、 基础知识 二、ES与solr的区别: 三、Java代码如何正确接入ES? 一、 基础知识 ES如何存数据? ES通过index写入和查询到内存中,数据基本存储在硬盘中,部分数据会存在内存中。 推荐资料地址:https://elasticsearch.cn/article/6178 2. lucene相关知...

Jack章臣的博客 512

【Lucene】Elasticsearch 和 Solr 与 Lucene 的关系是什么?它们各自在 Lucene 之上做了哪些封装和增强?

本文解析了Apache Lucene、Elasticsearch(ES)和Apache Solr三者的技术关系。Lucene作为核心Java搜索库,提供索引构建和查询执行等基础能力,但不具备分布式、API等企业级功能。ES和Solr在Lucene基础上构建了完整的分布式搜索系统: Elasticsearch侧重云原生和实时性,提供: 分布式分片与副本机制 直观的RESTful API和JSON查询DSL 完整的监控生态(Kibana等) Solr更强调企业级特性: 灵活的XML配置驱动 丰富的查询处理器(S

九师兄 55

Elasticsearch、Solr 和 Apache Lucene 三种流行的开源搜索引擎对比

Lucene、Solr 和 Elasticsearch 都是强大的搜索引擎,但它们各自具有不同的特点和优势。Lucene 是一个强大的搜索引擎库,适用于需要高度自定义的应用程序。Solr 是一个完整的搜索服务器,提供了丰富的搜索功能和管理界面。Elasticsearch 是一个分布式搜索引擎,提供了全文搜索、聚合、监控等功能,并支持 RESTful API。在选择搜索引擎时,应根据应用程序的需求和特点来决定使用哪种搜索引擎。

u013558123的博客 1409

Java领域搜索引擎开发:Lucene与Solr应用

在当今信息爆炸的时代,如何快速、准确地从海量数据中找到所需信息成为了一个关键问题。搜索引擎开发应运而生,它可以帮助用户高效地检索信息。本文的目的是深入介绍Java领域中用于搜索引擎开发的两个重要工具:Lucene和Solr。范围涵盖了它们的核心概念、算法原理、实际应用场景、项目实战等方面,旨在让读者全面了解如何使用这两个工具进行搜索引擎的开发。本文将按照以下结构进行组织:首先介绍Lucene和Solr的核心概念与联系,让读者对这两个工具的基本原理和架构有清晰的认识;

AI开发架构师 798

solr5.4.0

应用场景 在百度中搜索“阿凡达”会出来一系列资料,有文本,图片,电影,链接等等,这就是一个搜索引擎实现的,当然百度有自己的搜索引擎,我们可以不用自己写一个搜索引擎,有现成的比如sorl,lucene,ElasticSearch等等,这里介绍一些solr。 1.概述1.1 Solr 是什么? Solr它是一种开放源码的、基于 Lucene Java 的搜索服务器,易于加入到 Web 应用程序中

bingoabin 26万+

PotPlayer终极画质调校:深入MadVR渲染器设置,让你的显示器发挥100%潜力

本文深入探讨了如何通过MadVR渲染器优化PotPlayer的画质设置,充分发挥高端显卡和显示器的潜力。从色彩空间匹配、色深优化到HDR元数据处理,提供了一套完整的配置指南,帮助用户实现影院级视觉体验。特别适合拥有NVIDIA RTX或AMD RX系列显卡的用户进行精细调校。

weixin_42530458的博客 599

图像传感器与信号处理——详解CCD与CMOS图像传感器

一文详解CCD与CMOS图像传感器一文详解CCD与CMOS图像传感器1. 图像传感器性能关键词1.1 噪声1.2 暗电流 一文详解CCD与CMOS图像传感器 本文主要总结了CCD与CMOS传感器的原理知识,参考书籍为《数码相机中图像传感器和信号处理》,英文版为《Image Sensors And Signal Processing for Digital Still Cameras》 1. 图像传...

weixin_44580210的博客 2万+

深信服上网行为管理设备登录方法、恢复出厂、恢复控制台密码

1.初识设备 1.1 设备外观 1.2 软件版本 2.如何登录设备 首次拿到AC/SG设备时,可以通过以下方法登录设备控制台 SANGFOR AC/SG设备,各网口默认的出厂IP为: eth0(LAN):10.251.251.251/24 , eth1(DMZ)10.252.252.252/24 1、使用一根交叉线连接设备和电脑 (1) 如果电脑连接的是设备的eth0口,需先在电脑上配...

✍千里之行,始于足下 ^,^ 5万+

告别手动刷金币:零代码配置实现番茄小说自动化任务

本文详细介绍如何利用零代码配置工具实现番茄小说自动化任务,告别手动刷金币的烦恼。通过冰狐智能辅助工具的可视化配置和元数据复用功能,用户无需编程基础即可快速设置自动签到、观看广告等任务流程,大幅提升效率并避免断签风险。

weixin_42522953的博客 295

速腾聚创激光雷达复现FAST-LIO

记录复现FAST-LIO算法的过程和,代码梳理和理解。FAST-LIO的简化版、注释版。速腾激光雷达

abanchao的博客 2928

【STM32实战】利用STM32CubeMX配置PWM互补输出驱动电机

本文详细介绍了如何利用STM32CubeMX配置STM32高级定时器的PWM互补输出功能,以驱动电机等需要半桥/全桥电路的应用。通过图形化界面设置定时器参数、使能互补通道并配置关键的死区时间,结合代码示例演示了如何启动PWM输出和动态调整占空比,确保输出安全、精确的互补信号,避免MOS管直通风险,提升驱动可靠性。

weixin_29161785的博客 535

【已解决】WorkBuddy 国内版与国际版共存 + 关闭自动更新 教程

本文介绍在Windows系统中同时安装并共存WorkBuddy国内版与国际版的完整方案,通过修改product.json文件关闭启动自动更新,修复缓存配置污染问题,确保两版本互不干扰、数据独立。重点解决因共享身份标识导致的更新源错乱、进程锁冲突及自动覆盖风险,提供命令行备份与修改步骤,并强调手动升级时需避免使用应用内更新功能,以规避平台参数错位缺陷。

人生是一场修行 1489

AFSim2.9.0学习笔记 —— 4.1、创建项目,以此项目介绍工作中Wizard使用(红方/蓝方武器平台、阵营、更换图标等,多图详细介绍)

AFSim2.9.0学习笔记 —— 4.1、创建项目,以此项目介绍工作中Wizard使用(红方/蓝方武器平台、阵营、更换图标等,多图详细介绍)

2251

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

上一篇: qt sdk 1.2 无法编译Demo
下一篇: Ubuntu /boot 空间不足
fancyerII
博客等级 码龄23年 48粉丝 164原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值