`
sealbird
  • 浏览: 583958 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

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

 
阅读更多
引用
from http://blog.csdn.net/fancyerii/article/details/6538801

分类: 搜索 2011-06-11 23:31 449人阅读 评论(0) 收藏 举报
   现在先让我们把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的代码结构。
分享到:
评论

相关推荐

    Solr学习笔记.doc

    Solr学习笔记 Solr 是一种基于 Lucene 的搜索服务器,可以满足企业对搜索解决方案的需求。它支持层面搜索、命中醒目显示和多种输出格式,易于安装和配置,並且附带了一个基于 HTTP 的管理界面。 Solr 的主要特点...

    Solr详细学习笔记.doc

    Apache Solr 是一款基于 Lucene 的开源搜索服务器,专为企业级应用设计,提供高效、可伸缩、高可用和易维护的全文检索解决方案。Solr 强大的特性包括层面搜索、搜索结果高亮显示以及支持多种数据输出格式,如 XML、...

    Solr学习笔记。。

    2. 将`solr.war`文件从`solr-4.x\dist`目录复制到`apache-tomcat-6.0.26\webapps`下。启动Tomcat服务,`solr.war`会自动解压缩并部署。 3. 配置`solr.home`以指定Solr的数据存储位置。可以通过在`server.xml`中添加`...

    SOLR学习笔记

    ### SOLR学习笔记 #### 一、Solr简介与特点 **Solr** 是一种开源的企业级搜索平台,它是基于 **Lucene Java** 构建的。Solr 的设计目标是为了提供高性能、高可用性的搜索服务,适用于各种规模的企业级应用。 **...

    solr学习心得和总结笔记

    【Solr学习心得与总结笔记】 一、站内搜索的技术选型 站内搜索的实现方式多样,但针对不同需求,技术选型有所不同: 1. 使用Lucene:Lucene是Java开发的全文检索库,提供了底层的搜索算法,但直接使用Lucene需要...

    solr-4.10.3.rar

    `xufuli.txt`可能是一个用户自定义的文档,可能是Solr学习笔记、配置示例或者使用心得。不过,由于具体内容未知,这里无法详细展开。 总之,Solr 4.10.3是一个强大且灵活的搜索引擎,适用于各种规模的企业级应用。...

    Apache Solr 架设搜索服务器 学习笔记

    这篇学习笔记将深入探讨如何搭建 Solr 服务器,并利用其特性进行高效的索引和查询操作。 ### 一、Solr 的核心概念 1. **Core(核心)**:Solr 的工作单元,类似于数据库中的数据库,每个 Core 都有自己的配置和...

    solr 学习笔记

    solr 学习笔记主要涵盖了 Solr 的基本安装与配置,以及 Solr 服务器复制的配置,这些都是初学者需要掌握的基础知识。 Solr 是一款基于 Lucene 的全文搜索引擎,广泛应用于大数据检索和文本分析。在安装 Solr 时,...

    lucene3.5学习笔记

    以上是对 Lucene 3.5 的学习笔记总结,涵盖了从索引构建到查询操作的基础和高级功能。通过深入理解这些概念和实践应用,可以帮助开发者更好地利用 Lucene 和 Solr 构建高效且功能强大的搜索应用。

    solr学习笔记

    在Solr的学习过程中,了解其核心概念和查询参数是非常重要的。 一、Query 参数 1. `q`:这是查询字符串,是必需的,用于指定用户输入的搜索关键词。 2. `q.op`:覆盖了 `schema.xml` 中的 `defaultOperator`,定义...

    lucene 3.5学习笔记

    《Lucene 3.5 学习笔记》 在信息技术高速发展的今天,搜索引擎技术成为了信息检索的核心工具。Apache Lucene,作为一个开源全文检索库,为开发者提供了强大的文本搜索功能。本文将深入探讨Lucene 3.5版本的相关知识...

    lunece 学习笔记实用知识库分享知识分享

    Lucene 学习笔记是指如何学习和使用 Lucene。我们可以通过学习 Lucene 的使用和实现来掌握 Lucene。 Solr 学习笔记 Solr 学习笔记是指如何学习和使用 Solr。我们可以通过学习 Solr 的使用和实现来掌握 Solr。 ...

    lucene学习资料

    这是作者的学习笔记,可能包含了个人理解和使用Lucene过程中遇到的问题及解决方案,提供了不同角度的见解和实践经验。 通过这些文档,你可以系统地学习和掌握Lucene的各个方面,从基础到进阶,从理论到实践,逐步...

    lucene笔记共38页.pdf.zip

    《Lucene笔记共38页.pdf》是一部深入探讨Apache Lucene全文搜索引擎库的详细资料,这份笔记涵盖了Lucene的核心概念、关键技术和实际应用。Lucene是Java开发的开源信息检索库,广泛应用于各种搜索和信息提取场景。...

    Lucene技术文档doc

    在深入学习Lucene的过程中,理解其基本原理和使用方法至关重要。通过对不同版本文档的阅读和比较,可以更好地掌握Lucene的发展历程和技术改进,从而在实际项目中灵活运用。对于想要进一步提升搜索技术能力的开发者,...

    lucene学习笔记

    **Lucene学习笔记** Lucene是一个高性能、全文检索库,由Apache软件基金会开发并维护,是Java编程语言中广泛使用的搜索引擎库。它提供了强大的文本分析、索引和搜索功能,适用于构建复杂的全文检索系统。本笔记将...

Global site tag (gtag.js) - Google Analytics