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的全文搜索 阅读详情

相关推荐

设计师必看!用Figma MCP自动生成开发文档的隐藏技巧

本文为设计师揭秘利用Figma MCP协议自动生成开发文档的隐藏技巧。通过将设计稿转化为结构化数据,实现设计规范的自动化输出、版本同步与动态更新,并借助AI助手提升协作效率,彻底告别繁琐的手动标注与沟通。

berry的博客 923

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

程序化广告行业(2/89):从程序化广告深挖数据处理技巧

大家好!我一直希望能和大家在技术学习的道路上携手共进,这也是我写这一系列博客的初衷。上次我们一起学习了Python基础的数据处理知识,这次咱们借助一本程序化广告手册,深入挖掘数据处理的更多技巧。这本手册涵盖了程序化广告从概念到技术实现的诸多方面,而其中处处都涉及到数据处理,相信会给我们带来不少收获

yyy173611的博客 4572

Lucene Solr 811

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

wanght笔记 2万+

Could not create cache adapter cache factory not found: factory for cache adapter ““ was not regist

RROR: Could not create cache adapter error=cache factory not found: factory for cache adapter "" was not registered ERROR: Job failed (system failure): Error response from daemon: OCI runtime create failed: container_linux.go:349: starting co...

知无涯 4032

用 CL_SALV_TREE 把层级数据做成一棵会呼吸的 ABAP ALV 树:从类继承扫描到事件交互的完整拆解

本文介绍了SAP ABAP中使用CL_SALV_TREE实现树形ALV报表的方法。该技术将层级数据(如类继承关系)以可展开/折叠的树形结构展示,解决了传统ALV Grid无法直观显示层次结构的问题。核心实现采用"数据表+层级表"分离的设计模式:数据表存储节点业务信息,层级表维护父子关系。通过add_node方法动态构建树形结构,支持设置节点文本、图标和事件。文中提供了完整示例代码,演示了如何递归扫描ABAP类继承关系并构建树形ALV,这种技术特别适用于展示类族谱、权限树等层级数据,能显著

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 206

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

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

cusi77914的博客 723

Educoder:爬虫实战——求是网周刊文章爬取

第1关:获取新闻url importrequests importre defgeturls(): #**********Begin**********# url='http://www.qstheory.cn/dukan/qs/2014/2019-01/01/c_1123924172.htm' headers={ 'User-Agent':'Mozilla/5.0(Linux;Android6.0;Nexus5Buil...

weixin_46026136的博客 5254

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万+

人体检测技术之TOF

智能人脸/视频锁领域的人体检测需求是要求远距离达到1m左右即可,一旦在此距离内检测人,则锁唤醒进行人脸识别,视频录制等操作。所以,人体检测技术非常关键。选型主要是几个维度:1.支持检测的距离范围,能否准确输出距离信息2.支持检测FOV3.场景适应性如何,如人体衣服颜色4.环境适应性如何,夏天高温环境下的测距是否准确5.批量一致性情况。

AIoT深度探索者 | 嵌入式系统架构师 深耕物联网(IoT)与人工智能(AI)融合技术,聚焦​​边缘计算、图像开发、低功耗通信协议​​,致力于智能硬件,关注我获取最新技术文章信息与海量资源~ 2348

PCIe Base Specification解析(二)

PCIe事务层,Transaction Layer Specification

Crazzy_M的博客 1291

Lucene和Solr 学习目录

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

天涯人 1万+

MuJoCo 入门教程(二)

本章介绍 MuJoCo 的数学和算法基础。对于熟悉广义或关节坐标建模和仿真的读者来说,整体框架是相当标准的。因此,我们将对这些材料进行简要总结。本章的大部分篇幅用于介绍我们如何处理接触和其他约束条件。这种方法是基于我们最近的研究,也是 MuJoCo 所独有的,因此我们花时间对其进行了详细的激励和解释。更多信息可参见下面的论文,尽管本章中的一些技术思想是新的,在其他地方还没有描述过。

机器人控制与仿真应用 3712

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

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

weixin_37886463的博客 2万+

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

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

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

weixin_43230682的博客 3318

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

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

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

乔治大哥的博客 8508

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

科普向 | 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、付费专栏及课程。

余额充值