`

学习使用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如何进行索引和搜索 索引:客户端(可以是浏览器可以是java程序)发送post请求到solr服务器,发给solr服务器一个文档(xml、json),就可以进行一个添加索引删除索引、修改索引的操作。 搜索:客户端(可以是...

    solr7.x在tomcat部署文档

    在windows7级以上版本,使用tomcat中间件,部署solr7.x,并创建开发工程文档。为想用solr做全文索引的人一起学习交流一下。

    solr 配置 以及建立索引

    在tomcat中配置solr,以及solr 全文搜索建立索引的相关方法总结

    Solr3.6 + 中文分词 完整Tomcat工程部署包

    Mac和Linux环境下的完整部署包,解压有说明 在tomcat的conf文件夹建立Catalina文件夹,然后在Catalina文件夹中在建立localhost文件夹,在该文件夹下面建立 apache-solr-3.6.0.xml 提交搜索资源并建立索引 cd /...

    solr4.7.2服务器tomcat集成

    solr4.7.2tomcat7集成包,下载后可直接运行启动即可,同时集成了IK中文分词器,索引路径在tomcat\bin中,方便迁移,数据库未配置,自行找教程配置

    Solr3.6用DIH组件进行MySQL数据库全文索引部署包

    Solr3.6用DIH组件进行MySQL数据库全文索引部署包 完整的工程部署包 apache-solr-3.6.0.xml 放入apache-tomcat-7.0.27\conf\Catalina\localhost

    整合tomcat+solr,整合solr+oracle

    简单介绍整合tomcat+solr,包含文件拷贝,索引文件配置,系统文件配置;

    SOLR的应用教程

    2.1 在Tomcat下Solr安装 13 2.1.1 安装准备 13 2.1.2 安装过程 14 2.1.3 验证安装 15 2.2 中文分词配置 15 2.2.1 mmseg4j 15 2.2.2 paoding 19 2.3 多核(MultiCore)配置 22 2.3.1 MultiCore的配置方法 22 2.3.2 ...

    apache solr1.3.0开发包源码及文档

    Apache Solr是一个性能强大的,基于 Lucene 的全文搜索的 开源企业级搜索服务器,拥有XML/HTTP,JSON APIs,hit highlighting, faceted search, caching, replication,web管理界面等很多功能,Solr运行在Java servlet...

    linux下搭建solr 完整教程

    linux下搭建solr 完整教程,包括JDK、TOMCAT、SOLR及索引配置

    全文检索solr7.5.0

    Solr 是Apache下的一个顶级开源项目,采用Java开发,基于Lucene的全文搜索服务器。Solr可以独立运行在Jetty、Tomcat等这些Servlet容器中。这里谈到了Lucene,它是一个开放源代码的全文检索引擎工具包。提供了完整的...

    solr学习心得和总结笔记

    1、站内搜索的技术选型 ...3、solr的安装及配置 Solr整合tomcat 4、使用solr维护索引 a)添加 b)删除 c)修改 5、使用solr查询索引 6、Solr的客户端SolrJ a)solrJ维护索引 b)SolrJ查询索引 7、综合案例

    企业级搜索引擎solr教程

    tomcat7下实现solr4.3的部署与配置,配置中文服务器。通过solrj实现索引的创建,修改,删除,查询。并实现httpclienct创建、修改索引,检索信息等。

    apache solr1.3.0所有最新开发包及源码及文档

    Apache Solr组很高兴地宣布Solr 1.3.0开始提供下载使用。此版本继续对功能有所加强,同时修改了之前的一些bug,包括: ——分布式搜索性能 ——许多Lucene和其他性能的改进 ——支持在单个部署中的多级索引 ——...

    solar1.4环境配置

    在X:\Tomcat 6.0\conf\Catalina\localhost下(目录不存在则手工建)创建配置文件solr.xml,内容为…… 4、配置索引数据格式 在X:\solr\solr\conf当中有schema.xml文件,可以配置索引数据格式。 5、运行solr 启动...

    solr-web.zip

    本代码主要包含SOLR基本可视化运维,如通过控制套...部署方式:1、解压后在源码中修改solr-config.properties配置文件信息,修改完成后,直接发布到tomcat服务中,启动即可。系统当前支持绑定的数据库为ORACLE和mysql.

    solr5.5.4使用文档

    针对solr5.5.4,搭建solr索引平台、添加中文分词器、添加对word文档的支持等内容。搭建环境为jdk1.7以上版本,tomcat8以上版本。本示例以tomcat搭建为服务容器。如下载不到搭建的环境内容,可加群进行下载,qq群号为...

    solr部署技术文档

    solr是一个基于lucene的全文检索引擎。他包括了全文检索,命中高亮,准实时搜索...Solr的全文索引和搜索其核心使用了Lucene Java搜索库,并具有类似REST的HTTP / XML和JSON的API,可以很容易地从几乎任何编程语言使用.

    全文搜索引擎Solr与ElasticSearch入门至集群及项目实战(Solr+ES)

    7、将数据库中的数据导入至Solr索引库 8、通过Solr后台管理界面对索引进行CRUD高亮过滤排序分页 9、通过Solrj实现索引的添加更新 10、通过Solrj实现索引的删除 11、索引的检索_过滤_高亮等操作 12、项目实战应用 13...

    1.1、solr 介绍和安装第一个core1

    2、Solr:全文检索的服务器 3、Solr可以独立运行,运行在Jetty、Tomcat等这些Servlet容器中,Solr 索引的实现方法很简单,用 POST

Global site tag (gtag.js) - Google Analytics