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

Lucene 4 和 Solr 4 学习笔记(3) 当初说要写写lucene和solr的学习笔记,写了两个后就懒得写了。最近想做个lucene和solr的中文学习网站,翻译一些lucene和solr的英文资料,并提供一个中文的交流学习平台。所以想把这个系列继续下去。     言归正传,上面说到我们的目标是学习和修改lucene/solr的源代码。不过如果我们从没有用过,那是不可能读懂源代码的。这里推荐《lucene in action》第二版,中 阅读详情

   现在先让我们把Lucene和Solr的开发环境搭建起来,建立简单的索引,并了解怎么参与Solr的使用和开发(提交一个bug或者尝试新的patch都可以算对solr的contribution)。

 

   首先讲一下我的配置方法,然后翻译一下solr的wiki文章“How to Contribute to Solr”。

 

   第一步是获取源代码。

         一种方法是从svn取出最新的源代码:  svn checkout http://svn.apache.org/repos/asf/lucene/dev/trunk lucene_trunk

         不过这种方法需要一个一个文件的下载,缺点是比较慢,而且偶尔也会碰到最新的代码有些部分是不能编译的,优点是更新方便,增量的更新。

         另一种方法就是下载Nightly Build的版本,这种方法的优点是下载快(打成了tar包),肯定能编译,缺点是更新麻烦。鉴于自己的网速,以及主要目的是学习源代码,所以也不用那么频繁的更新,所以我是直接下载Nightly Build,solr的Nightly Build地址是http://wiki.apache.org/solr/NightlyBuilds ,注意,lucene也有Nightly Build版本的地址https://builds.apache.org//job/Lucene-trunk/lastSuccessfulBuild/artifact/artifacts/。因为我们的目的是同时学习Solr和lucene,所以只需要下载Solr的就行了,因为Solr的Nightly Build就保护了Lucene的源代码,注意要下载src.tgz,这个是源代码,其余的那些是编译后的jar包。我下载的是apache-solr-4.0-2011-06-08_08-38-54.src.tgz,也就是六月八日Build的版本,你可能下载的就是最近的一个版本了,当然以后的版本可能会有一些变化,但是我相信Lucene/Solr 4 大致的架构还是不会大变的。

 

    第二步就是让它能在IDE里运行调试。

         当然也可以不用IDE,直接用你喜欢的文本编辑器查看修改源代码,用Ant编译测试打包。但是我的习惯是在IDE里工作,跟踪代码的流程,调试会更方便一些。下面我讲讲在Eclipse里是怎么搭建一个环境的。(我的方法可能比较土,希望熟悉Eclipse的朋友提出更好的方法)

         1. 用Eclipse(我的版本是eclipse jee galileo,我想你的Eclipse应该是能用tomcat的java ee的版本吧)创建一个Dynamic Web Project,随便起个名字,比如我的叫做“Lucene-Solr-NightlyBuild”,其余的一路Next使用默认的配置就行了。

         2. 把下载后的tar包解压到这个工程的根目录下。(当然也可以任意地方,放到工程下比较方便)

         3. Eclipse -->选中工程,右键-->属性(properties)-->java build path -->选中Source Tab,然后Add Folder一个一个把你感兴趣的包加入进来。注意选择文件夹的方法:比如这个包是lucene/contrib/demo/,我怎么选择呢?我应该勾选包名的上层,比如它的包应该是org.apache.xxx.xxx,那么我应该选择它的父目录src,参考下图。

                      

          一般选择核心的包和自己感兴趣的就可以了,我这里选择了几乎所有的包。后面我会介绍一下Lucene和Solr的代码的结构。另外我会把我的Eclipse的.classpath文件和.project文件放上来,你下载后修改一下应该就可以用了。比如我的.classpath文件里为:

         <classpathentry kind="src" path="apache-solr-4.0-2011-06-08_08-38-54/lucene/src/java"/>

         那么你可能要修改成你下载的tar包解压后的名称了。使用趁手的文本编辑器一次替换apache-solr-4.0-2011-06-08_08-38-54应该就可以了。

       

         4. 搜索apache-solr-4.0-2011-06-08_08-38-54下的所有jar包,复制到WebContent/WEB-INF/lib/下,其中WebContent是Eclipse默认的Web目录。你如果做了修改,应该把这些jar包复制到相应的地方。

         5. 这个时候Eclipse应该能够成功的编译所有的java文件,如下图所示,可能会有一些html或者xml文件会提示错误,但是确认所有的java文件编译没问题。

                      

              6. 复制 Lucene-Solr-NightlyBuild/apache-solr-4.0-2011-06-08_08-38-54/solr/src/webapp/web下的所有文件和目录到Lucene-Solr-NightlyBuild/WebContent下面,可能会提示有些文件存在了,覆盖掉原来的。

             

              7. 在Package Explorer里右键点击工程,选择Debug-->Debug On Server,选择用Apache Tomcat6作为Web服务器(在Eclipse里配置Tomcat 6不会的话可以搜索一下),这时服务器应该起不来,因为复制过去的web.xml里有一下Solr的配置,比如SolrDispatchFilter的配置,所以需要修改一下。还是右键点击工程,选择Debug-->Debug Configuration-->选择Arguments Tab,在下面的VM arguemnts加入如下两行:

-Xmx1g
-Dsolr.solr.home="D:/Lucene-Solr-NightlyBuild/apache-solr-4.0-2011-06-08_08-38-54/solr/example/solr"

第一行是让tomcat的内存能大一点,省得以后碰到OOM异常。

第二行是告诉solr我们使用的solr的家目录在哪里。现在我们使用solr的example下的就可以了,以后我们使用时可以创建自己的配置(当然最好也是修改原来的配置文件,自己从零开始也麻烦并且容易出错)。

 

               8. 再次 Debug工程,这次应该可以起来tomcat了。另外启动可能时间会有点长,可能会超过tomcat默认的45秒启动时间,所以如果碰到启动超时,那么去修改一下,可以在IDE里修改,也可以直接修改配置文件。

               9. 访问 http://localhost:8080/Lucene-Solr-NightlyBuild/,应该可以看到solr的管理页面,在这里可以管理solr的各种信息,也可以写一些query来查询文档。不过现在还没有建立索引(准确的说索引里没有任何文档),所以搜索不出什么东西了。

              10. 用shell或者cmd进入Lucene-Solr-NightlyBuild/apache-solr-4.0-2011-06-08_08-38-54/solr/example/exampledocs目录,然后执行如下java命令:

java -Durl=http://localhost:8080/Lucene-Solr-NightlyBuild/update -jar post.jar ipod_video.xml

 

                 正常的情况我们应该可以看到如下的输出:

SimplePostTool: version 1.3
SimplePostTool: POSTing files to http://localhost:8080/Lucene-Solr-NightlyBuild/
update..
SimplePostTool: POSTing file ipod_video.xml
SimplePostTool: COMMITting Solr index changes..
                 你也可以把那个目录里其它的一下xml文件也通过上面的方法加入到索引里。

               11. 如果一切正常,那么我们就可以在http://localhost:8080/Lucene-Solr-NightlyBuild/#/singlecore/query搜索了,

                     比如我们刚才索引的xml文件里有个name字段(Field),里面包含iPod,那么我们可以q的文本框里输入name:ipod,点击下面的Execute Query,我们应该可以看到搜索结果。另外这个新的接口对Chrome之外的浏览器可能js的兼容性不是太好,可以访问老版的接口http://localhost:8080/Lucene-Solr-NightlyBuild/admin/ (呵呵,这个是不是更熟悉一些),里面也有各种管理和查询功能。

               12. 调试,用Ctrl+Shift+R/T找到SolrDispatchFilter,你也可以自己在左边的Package Explorer里找到它,这样可以熟悉Lucene和Solr的代码结构。然后在140行方法public void doFilter 里加入一个断点。然后执行一个查询,这时应该会到断点,这就说明我们可以调试代码,跟踪阅读代码啦! SolrDispatchFilter是Solr非常重要的一个类,具体代码会在后面进行分析,我们现在只要知道所有的admin页面的请求都会到这里来就行了,如果你想自己探索一下,可以配合web.xml读读它的代码。

                13. 下载lucene/solr社区的Codestyle文件(比较诡异的是他们的tab键定义为2个空格,搞得我很不适应),然后导入这个工程,这样我们的编码风格和lucene/solr的开发者一致,以便我们以后方便contribute自己的代码。呵呵,别嫌麻烦,也许你以后就是lucene/solr的contributor了呢。具体方法是右键点击工程-->属性-->codestyle,然后import,参考下图:

         -------------------------------------------------------------------------------------------

                   至此恭喜你已经成功的搭建了环境!

         关于在IDE里搭建环境在lucene的mailing-list里也有很多讨论,可以如果你是其它IDE或者碰到什么问题,可以先搜索一下,另外lucid(这个网站值得常去看看)里的这篇文章(http://www.lucidimagination.com/developers/articles/setting-up-apache-solr-in-eclipse)介绍怎么在Eclipse里搭建环境的,不过他没有使用tomcat,而是使用了jetty作为web容器,此为solr自带的例子也是使用jetty。

 

        下面我介绍一下Lucene和Solr的代码结构。

 

       ------------ to be continued=======

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

相关推荐

【论文精读】Formal Mathematical Reasoning: A New Frontier in AI

注:本文根据师兄汇报内容总结。

m0_60634555的博客 1189

Lucene 4 和 Solr 4 学习笔记(2) .

[quote]from http://blog.youkuaiyun.com/fancyerii/article/details/6538801 分类: 搜索 2011-06-11 23:31 449人阅读 评论(0) 收藏 举报 现在先让我们把Lucene和Solr的开发环境搭建起来,建立简单的索引,并了解怎么参与Solr的使用和开发(提交一个bug或者尝试新的patch都可以算对solr的...

sealbird的专栏 163

别再乱调了!Zygo MetroPro软件滤波功能保姆级指南,从均值到鲁棒高斯样条一次讲清

本文深入解析Zygo MetroPro软件的滤波功能,从均值滤波到鲁棒高斯样条等九种算法,帮助用户根据测量对象特性选择最佳滤波组合。通过真实工业案例和参数配置指南,提升光学测量数据的准确性和效率,特别适用于硅晶圆、光学镜片等精密测量场景。

weixin_30888413的博客 156

Lucene Solr 811

文章目录solrlucene倒排索引实际举例lucene API 介绍创建索引新建 maven 项目,添加依赖创建测试类,添加以下代码查看索引运行 luke查看文档指定分词器,并测试分词查询测试从索引查询solr 安装把 solr-8.1.1.tgz 传到服务器解压 solr启动 solr浏览器访问 solr 控制台创建 core复制默认配置创建名为 pd 的 core中文分词测试中文分词工具 -...

wanght笔记 2万+

MATLAB/simulink电力系统之变压器仿真+变压器饱和仿真+空载变压器电流畸变原因及仿真+空载合闸励磁涌流仿真+simulink免费仿真资源

单相变压器空载运行时,原边电流主要用来产生主磁场,而电路损耗和铁芯损耗很小,因此即使外加电压很大,空载电流仍然很小。如果想观察某个相对磁导率下电感系数的数值,可以在程序中增加这样的语句,比如,在程序中end语句之后,加上L(100),运行程序后就可以得到相对磁导率为 100时的电感系数值。在交流铁芯线圈中,当交变磁通按照正弦规律变化时,受到磁路饱和的影响,线圈中的电流会发生畸变,并成为尖顶波,这就是所谓的交流磁路电流畸变。需要指出,铁芯内的主磁通Ф可以通过空载时的副边电压从来测量,两者之间的数学关系,即。

m0_37724753的博客 4230

RV1106的ISP配置实战:MIPI与LVDS接口的硬件连接与设备树优化

本文详细解析了RV1106芯片的ISP配置实战,重点对比了MIPI CSI-2与LVDS两种主流接口的硬件连接方案与数据流差异。通过手把手的设备树代码示例,深入讲解了单路MIPI与双路LVDS摄像头的配置要点、关键属性设置及常见避坑指南,并提供了从驱动加载检查到Media Controller工具使用的系统化调试方法,帮助开发者快速打通图像采集与处理全链路。

terraform7cloud的博客 469

solr和lucene_使用Apache Lucene和Solr 4进行下一代搜索和分析

六年前,我开始为developerWorks撰写有关Solr和Lucene的文章(请参阅参考资料 )。 多年来,Lucene和Solr确立了自己的坚如磐石的技术(Lucene作为Java™API的基础,而Solr作为搜索服务)。 例如,它们为Apple iTunes,Netflix,Wikipedia以及其他许多应用程序提供基于搜索的应用程序,并且有助于启用IBM Watson问答系统。 ...

cusi77914的博客 723

从S参数到SPICE模型:Cadence Sigrity Boardband SPICE完整使用指南

本文详细介绍了Cadence Sigrity Boardband SPICE工具的核心价值与完整使用流程。该工具通过矢量拟合算法,将复杂的多端口S参数文件转化为无源、紧凑且高精度的SPICE等效电路模型,从而极大提升时域仿真效率。指南涵盖了从数据导入、关键参数配置、模型精度验证到集成应用于PowerSI等系统级仿真的全步骤,是信号与电源完整性分析的必备利器。

defi6farmer的博客 432

Lucene 和solr的区别

solr和lucene的区别: A simple way to conceptualize the relationship between Solr and Lucene is that of a car and its engine. You can't drive an engine, but you can drive a car. Similarly, Lucene is a prog...

从菜鸟到菜菜鸟 1万+

DPABI安装教程

DPABI是是中科院心理研究所严超赣老师团队开发的一款磁共振脑影像数据分析工具包。基于SPM,在安装DPABI之前需要安装好SPM,才能正常使用。SPM的安装方法见文matlab2021a版本条件下安装spm_kidllll的博客-优快云博客 1、下载安装包 下载地址:DPABI: a toolbox for Data Processing & Analysis for Brain Imaging | The R-fMRI Network 2、将下载好的dpabi文件夹移动到matl..

qq_42356925的博客 1万+

华为OD机试 双机位A卷 - 流量波峰 (C++ & Python & JAVA & JS & GO)

华为OD机试双机位A卷 流量波峰,提供Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解

qq_45776114的博客 1377

Lucene和Solr 学习目录

几个概念先行说明一下: Lucene: 是一个索引与搜索类库,而不是完整的程序。 Solr:是一个高性能,采用Java5开发,基于Lucene的一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口。 Nutch:是一个由Java实现的,刚刚诞生开放源代码(open-source)的web搜索引擎。 Hadoop:  实现了一个分布式文件系统(Hadoop Di

天涯人 1万+

【深度学习新浪潮】Harness Engineering 入门实战必看|6个从零可跑开源项目,新手快速上手垂域AI工程落地

很多同学入门 AI Agent、做大模型垂域落地时,都会卡在同一个痛点:只会调用模型、写简单Prompt,却不懂如何做约束管控、流程护栏、任务编排、多智能体边界隔离。而这正是的核心价值。不同于纯理论概念,Harness Engineering 更偏向工程实战,新手不用啃复杂论文,从开源项目动手实操是最高效的学习方式。本文从零基础易上手、可本地一键部署、支持二次改造做实战项目。

专注:太空算力、AI infra、异构调度、大模型成本工程 231

Lucene、solr以及elasticsearch之间的区别和联系

首先分别说明三者的概念:Lucene是一套信息检索工具包,并不包含搜索引擎系统,它包含了索引结构、读写索引工具、相关性工具、排序等功能,因此在使用Lucene时仍需要关注搜索引擎系统,例如数据获取、解析、分词等方面的东西。而solr和elasticsearch都是基于该工具包做的一些封装。Solr是一个有HTTP接口的基于Lucene的查询服务器,封装了很多Lucene细节,自己的应用可以直接利用...

weixin_37886463的博客 2万+

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Lucene、Solr和Elasticsearch三者的区别与联系

目录 一、结构化数据与非结构化数据 二、全文检索 三、Lucene 四、Lucene、Solr、Elasticsearch三者的关系 Solr Elasticsearch Solr的优缺点 Elasticsearch的优缺点 Elasticsearch 与 Solr 的比较 一、结构化数据与非结构化数据 结构化数据:指具有固定格式或有限长度的数据,如数据库,元数据等。 非结构化数据:指不定长或无固定格式的数据,如邮件,word文档等。 结构化数据的搜索 根据上面所述的内容,所以.

weixin_43230682的博客 3317

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

什么是Lucene和Solr和Elasticsearch,它们的区别是什么?

说道es我们往往会听到Solr和Lucene,那么Lucene和Solr和Elasticsearch的区别? Lucene Lucene是apache下的一个子项目,是一个开放源代码的全文检索引擎工具包,但它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎。官网地址:https://lucene.apache.org/ ...

乔治大哥的博客 8508

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

科普向 | Lucene,Solr,Elasticsearch之间的区别和联系

        最近有幸研究到了这块领域的内容,而我本人也对于这块非常的感兴趣,所以打算写一篇文章记录一下… 简介 Lucene         Lucene是 apache 软件基金会某个项目组的一个子项目,是一个开放源代码的全文检索引擎工具包,但它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本

大数据梦想家 2251

solr-lucene的解释

Lucene是一个Java库,提供了用于索引和搜索文本的功能。它提供了高效的倒排索引和词项搜索算法,并支持复杂的查询和排序操作。开发人员可以使用Lucene库来构建自己的搜索引擎。Solr是基于Lucene的搜索平台,提供了一个易于使用的RESTful接口和一系列管理工具,以简化索引和查询操作。Solr还提供了许多高级功能,如分布式搜索、多语言支持、数据分析和扩展性。它可以作为独立的搜索服务器或嵌入到其他应用程序中使用。

Flying_Fish_roe的博客 1249

Lucene和solr基础介绍

solr是对lucene的封装: 1.lucene可以完成的功能,使用solr可以用更简单更方便的方法完成同样的功能。 Like:顺序扫描法 从文档头一直扫描到文档尾,直到找到为止,速度很慢。 全文检索技术(倒排索引): 作用: 1.可以帮我们实现;类似于百度或者谷歌一样的搜索引擎 2.可以帮我们实现类似京东或淘宝一样的站内商品搜索功能 3.可以帮我们实现;类似贴吧或者论坛等一些站内搜索帖子的...

落地太久,准备重新起飞,做一个飞起的菜鸡 958

lucene和solr

传统方式: 按照文章的顺序查询关键字,这样的查询效率太低. 倒排索引: 根据关键字索引查询文章. 一、根据索引检索 Lucene会为全部的文章根据中文分词器将文章进行分词处理. 之后为分词创建索引,保存到具体的索引文件夹中 根据倒排索引的概念,通过用户给定的关键字先匹配索引文件.之后根据全文检索,返回给用户所有满足条件的document 1.Directory direc...

programmer188的博客 189
上一篇: Lucene 4 和 Solr 4 学习笔记(1)
下一篇: ssh localhost without password
fancyerII
博客等级 码龄23年 48粉丝 164原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值