`

学习使用solr(一),solr和tomcat的配置及数据库中表的全量索引(下)

阅读更多

 

        在tomcat中部署好了solr之后,接下来就要对数据库中的表建立索引了。

        首先回顾一下文件的结构:

        tomcat的$CATALINA_HOME是/usr/local/tomcat-solr-blog,solr的$SOLR_HOME是/usr/local/tomcat-solr-blog/solr。具体的情况可以去大体看一下上一篇文章:学习使用solr(一),solr和tomcat的配置及数据库中表的全量索引(上)。

 

        第二步,为数据库中的表建立全量索引。

        我此次建立的索引是针对一张表的,多张表的还没研究。

        首先说一下我所索引的数据表的结构和数据吧,为了简单起见,一张图就表示了它。由下图可见,我的数据表格里就有两列,一列int型的solr_id,一列varchar型的solr_text。数据是李白的《静夜思》。由于我只完成了全索引的建立,所以此处对数据没什么要求。
        

        有了数据之后就开始对此表建立全索引了。

        1,先要修改solrconfig.xml文件,它存在于$SOLR_HOME/conf(此处的路径问题可以去上里查找,一般看到这篇文章的应该都知道在哪里可以找得到solrconfig.xml)。在其中增加如下配置:

<requestHandler name = "/dataimport" class = "org.apache.solr.handler.dataimport.DataImportHandler">     
    <lst name = "defaults">  
    <str name = "config">data-config.xml</str>
    </lst>
</requestHandler>

        增加好了之后,先重启一下tomcat看看有什么问题。启动tomcat,查看日志发现报了一个错误:

        Error loading class 'org.apache.solr.handler.dataimport.DataImportHandler'

        在加载DataImportHandler时出错了,这是因为没有往项目里面导入apache-solr-dataimporthandler-3.6.2.jar这个jar包。好了,这里我碰到了一个没有解决的问题。现在看solrconfig.xml这个文件当中的某段配置,如下:

  <lib dir="../../dist/" regex="apache-solr-cell-\d.*\.jar" />
  <lib dir="../../contrib/extraction/lib" regex=".*\.jar" />

  <lib dir="../../dist/" regex="apache-solr-clustering-\d.*\.jar" />
  <lib dir="../../contrib/clustering/lib/" regex=".*\.jar" />

  <lib dir="../../dist/" regex="apache-solr-dataimporthandler-\d.*\.jar" />
  <lib dir="../../contrib/dataimporthandler/lib/" regex=".*\.jar" />
  
  <lib dir="../../dist/" regex="apache-solr-langid-\d.*\.jar" />
  <lib dir="../../contrib/langid/lib/" regex=".*\.jar" />

  <lib dir="../../dist/" regex="apache-solr-velocity-\d.*\.jar" />
  <lib dir="../../contrib/velocity/lib" regex=".*\.jar" />

        

        观察这段代码不难发现,它正密集的指出了一些jar包所在的位置,其中有这样一项,

<lib dir="../../dist/" regex="apache-solr-dataimporthandler-\d.*\.jar" />

 

        似乎为我指明了我的apache-solr-dataimporthandler-3.6.2.jar包应该放在哪里。于是我按照路径,在配置文件往上两级建立了dist文件夹,并将jar包放进去。再重启tomcat。发现没用……这里,促使我开始研究tomcat的原理了。

        其实这个问题很好解决,直接找到/usr/local/tomcat-solr-blog/webapps/solr-example/WEB-INF/lib,将jar包拖进去,再重启tomcat看看。报了一个新错误:Can't find resource 'data-config.xml'。接下来就来建立data-config.xml文件。

 

        2,在solrconfig.xml的同级目录下,新建data-config.xml,并且填入内容如下:      

<dataConfig>  
  <dataSource type="JdbcDataSource"
              driver="com.mysql.jdbc.Driver"
              url="jdbc:mysql://host/db_name"
              user="root"
              password="****"/>
  <document>  
    <entity name="solr_test"   
            query="select solr_id,solr_text from solr_test">  
    </entity>  
  </document>  
</dataConfig>

      

        这个xml文件的各项都很好理解,显示配置了数据库的驱动,地址,用户名和密码。然后又对对哪个表建立索引进行了配置,先按照这个配置去写,这是最简单的全量配置的写法。

        新建完了之后要把数据库的驱动的jar包加到工程里面,我将mysql驱动的jar包也放到了/usr/local/tomcat-solr-blog/webapps/solr-example/WEB-INF/lib之下。然后再重启tomcat看看情况。启动成功,没有报错。但此时还没建立全量索引。只能说明连接数据库的部分没有出错。好吧,最后一步,配置schema.xml文件。

 

        3,改写schema.xml文件。首先找到schema.xml,它也跟solrconfig.xml是属于同级目录。打开来看一下,发现这个文件好长,有好多的配置项和注释啊。所以,我就简化了一下,把我不需要的全部删掉,最后删减玩的schema.xml是下面这个样子。

<?xml version="1.0" encoding="UTF-8" ?>
<schema name="example" version="1.5">
 
  <types>
    <fieldType name="string" class="solr.StrField" sortMissingLast="true" />
    <fieldType name="int" class="solr.TrieIntField" precisionStep="0" positionIncrementGap="0"/> 	
 </types>

 <fields>
   <field name="solr_id" type="int" indexed="true" stored="true" />
   <field name="solr_text"  type="string" indexed="true" stored="true"/>
 </fields>

 <uniqueKey>solr_id</uniqueKey>

</schema>

         我只选取了比较重要的几个节点,<types>定义了field的类型,在此我需要int和string,<fields>相当于是数据表里的字段,跟data-config.xml及数据库中的字段都是对应的,你要对哪些个字段建索引,就要写哪些个字段。最后是个主键。关于schema.xml的详细解释,可以去百度一下。修改完成后,再重启一下tomcat。报了一个错误,仔细看一下有两点很重要,Error initializing QueryElevationComponent.For input string: "MA147LL/A"。解释这个问题,就要先看一下solrconfig.xml这个文件中有如下配置:

<searchComponent name="elevator" class="solr.QueryElevationComponent" >
    <!-- pick a fieldType to analyze queries -->
    <str name="queryFieldType">string</str>
    <str name="config-file">elevate.xml</str>
  </searchComponent>

       此处用到了一个QueryElevationComponent,它需要一个配置文件elevate.xml,其内容如下:

<elevate>
 <query text="foo bar">
  <doc id="1" />
  <doc id="2" />
  <doc id="3" />
 </query>
 
 <query text="ipod">
   <doc id="MA147LL/A" />  <!-- put the actual ipod at the top -->
   <doc id="IW-02" exclude="true" /> <!-- exclude this cable -->
 </query>
 
</elevate>

       我们从中可以看到有一项id的值为MA147LL/A。关于这个问题,我做了一系列的尝试,最后试着解释它一下:由于QueryElevationComponent启动是要求必须有一个uniqueKey,我此处定义的uniqueKey是int类型的。而我们看elevate.xml时发现它有两个string类型的id值。所以此处就报错了。修改这个问题的两个方式,一是把你的schema.xml中的uniqueKey的值设置为一个string类型的值,二是直接在solrconfig.xml中直接注释掉这一段的配置,两者我都试过,都能成功。这里我采用的是后者。注释掉了之后再重启tomcat,又报了一个错:undefined field text。这个问题我百度了一下,也没找到根源。但知道了原因是有一个步骤要使用一个名字叫text的field,但是我们没有,这里不妨定义一下,在schema.xml文件的<fields>中加上如下一句:

<field name="text" type="string" stored="false" indexed="false"/>

       然后再重启下tomcat。没有报错了,好的,这说明配置过程已经可以了。下面就要建立索引了。访问如下的地址:http://localhost:8983/solr-example/admin/dataimport.jsp?handler=/dataimport,出现如下界面:点击页面左下方的full-import按钮,生成索引。具体变化我忘了,在运行完了之后看看tomcat的日志,发现《静夜思》被打出来了。


 

回到http://localhost:8983/solr-example/admin/之后什么都不要做,保持查询框中的内容是*:*,直接点击search,看到打出来如下的内容,你就开心吧,全量索引建立完成。



 

        好了,在这个过程中,我有好多的问题都没找到最终的原因,之后还有添加中文分词,中文分词是干嘛的,增亮索引以及在项目中使用solr等一系列问题要解决。

 

       希望你学习solr的时候这两篇文章可以帮助到你。小菜鸟要努力学习,欢迎大神批评指正。

 

 

 


 

 

 

  • 大小: 2.9 KB
  • 大小: 33.9 KB
  • 大小: 23.9 KB
分享到:
评论
2 楼 ztplant 2013-09-10  
jeriffe 写道
不错的文章

此回复是对菜鸟最大的鼓励,乃神回复
1 楼 jeriffe 2013-08-24  
不错的文章

相关推荐

    solr在tomcat下的搭建和配置数据库

    ### Solr 在 Tomcat 下的搭建与配置数据库详解 #### 一、Solr 在 Tomcat 下的搭建步骤 **步骤1:准备Solr环境** - 首先确保已安装了Tomcat服务器以及Solr软件。 - 假设`SOLR_HOME`设置为`E:\software\apache-solr...

    Tomcat8.0与Solr8.0的整合

    总结来说,整合Tomcat 8.0与Solr 8.0的过程主要包括下载和安装两个组件,部署Solr的WAR文件到Tomcat,配置IK分词器,以及在Solr的schema.xml中定义字段类型。完成这些步骤后,你就能够利用Tomcat的便捷性和Solr的...

    Solr3.5整合Tomcat

    Solr 是一个基于 Lucene 的全文搜索引擎服务器,它提供了高级的搜索功能,广泛应用于网站的全文检索、数据索引和搜索。在企业级应用中,Solr 往往需要与 Web 服务器集成,以实现更高效的服务。在这个场景下,Tomcat ...

    tomcat下部署solr

    标题中的“tomcat下部署solr”意味着我们将讨论如何在Apache Tomcat服务器上安装和配置Apache Solr,这是一个流行的开源搜索引擎。Solr使得在大量数据中进行全文搜索、近似搜索、拼写检查以及多种其他高级功能变得...

    tomcat9 + solr

    在Windows 10上配置Tomcat9和Solr是一项涉及多个步骤的任务,需要对Java Web应用服务器和搜索引擎有一定的了解。通过以上步骤,你将能够成功地在本地环境中搭建一个运行Solr的Tomcat服务器,从而开始你的全文搜索之...

    solr+IK分词集成tomcat实现全文检索

    3. **配置Solr核心**:在`solr/solr_home`目录下创建一个新的核心,例如`mycore`,并配置相应的`solrconfig.xml`和`schema.xml`文件。`solrconfig.xml`用于定义索引和查询的行为,`schema.xml`则用于定义字段类型和...

    windows 7 solr4.4安装进tomcat8中

    在Windows 7操作系统中安装Apache Solr 4.4并将其部署到Tomcat 8是一项重要的配置工作,这对于搭建基于Solr的全文检索系统至关重要。下面将详细解释这个过程涉及的关键知识点。 首先,我们需要安装Java Development...

    solr3.5与tomcat的部署配置以及与java项目的集成

    ### Solr 3.5与Tomcat的部署配置及与Java项目的集成 #### 一、Solr 3.5与Tomcat的部署配置 **1. 下载与安装Solr** 首先,需要从官方或其他可信任来源下载Apache Solr 3.5.0。根据描述中的链接(虽然不可用),...

    我的配置成功的solr8+tomcat.zip

    以上便是关于“我的配置成功的solr8+tomcat.zip”的主要内容,这个压缩包可能包含了Solr8、Tomcat9的安装文件,数据库连接配置示例,IK分词器的库文件,以及相关的配置文件,供用户参考和使用。通过这些步骤,用户...

    tomcat整合solr.rar

    标题中的"tomcat整合solr.rar...通过这个资源包,开发者可以学习到如何在实际项目中使用Solr搭建一个高性能的全文检索系统,并结合Tomcat实现灵活的部署和管理。这将有助于提升网站或应用的搜索体验,提高用户满意度。

    solr+tomcat项目

    Solr+Tomcat项目整合是将Apache Solr搜索引擎与Apache Tomcat应用服务器结合使用的过程,以便在Web环境中部署和运行Solr服务。Solr是一个基于Lucene的全文搜索服务器,而Tomcat则是一个轻量级Java应用服务器,常用于...

    solr4.7.2服务器tomcat集成

    综上所述,集成Solr4.7.2与Tomcat7是一项涉及多方面配置和调整的任务,需要对Java Web应用、Solr配置以及数据库操作有深入理解。这个集成包简化了部分流程,但仍有自定义和优化的空间,以适应具体的应用场景。

    solr的学习

    通过上述内容,我们不仅了解了 Solr 的基本概念、Solr 与 Lucene 的区别,还学习了如何安装和配置 Solr,以及如何使用 Solr 进行索引的创建和搜索。Solr 作为一款企业级的搜索引擎,凭借其强大的功能和灵活性,在...

    solr6.0 tomcat搭建

    根据给定的信息,本文将详细解释如何通过使用 JDK 1.8、Tomcat 8.0 和 Solr 6.0 来搭建一个完整的 Solr 服务端环境,并且会覆盖配置文件的具体设置方法。 ### 环境准备 #### 必需组件 - **Solr 版本**: solr-6.6.2...

    window下tomcat+solr整合

    标题中的“window下tomcat+solr整合”指的是在Windows操作系统环境下,将Apache Tomcat(一个流行的Java Servlet容器)与Apache Solr(一个基于Lucene的全文搜索服务器)进行集成,以便实现高效的全文检索功能。...

    solr 配置 以及建立索引

    - **从服务器配置**:在从服务器(如`tomcat1`和`tomcat2`)的SolrHome目录下的`solrconfig.xml`文件中添加从服务器的复制配置。 ```xml &lt;requestHandler name="/replication" class="solr.ReplicationHandler"&gt; ...

    solr-4.10.2部署到Tomcat所需的jar包和IK分词器资源

    需要将IK分词器的jar包(如`ikanalyzer.jar`)添加到Solr的`lib`目录,并在Solr的`schema.xml`或`managed-schema`文件中配置分词器,指定其在索引和查询时的使用。 9. **启动Tomcat**:启动Tomcat服务器,Solr实例...

    solr 3.5 tomcat 整合可直接使用

    3. **准备Solr核心**: 在解压后的Solr目录下,通常有一个名为`example`的目录,其中包含了一个预配置的Tomcat服务器和一个默认的Solr核心。你可以根据需求创建新的Solr核心,或者直接使用这个例子。 4. **修改配置**...

Global site tag (gtag.js) - Google Analytics