Solr 4.0 基础教程
Solr 4.0 基础教程
尚小胖 发表于6年前
Solr 4.0 基础教程
  • 发表于 6年前
  • 阅读 33521
  • 收藏 37
  • 点赞 5
  • 评论 15

移动开发云端新模式探索实践 >>>   

摘要: 本文只是Solr 4.0的基础教程,本人不经常写东西,写的不好请见谅。

       本文只是Solr 4.0的基础教程,本人不经常写东西,写的不好请见谅。

        转载请标明原文地址:http://my.oschina.net/zhanyu/blog/86147

       先说一点部署之后肯定会有人用solrj,solr 4.0好像添加了不少东西,其中CommonsHttpSolrServer这个类改名为HttpSolrServer,我是找了半天才发现,大家以后可以注意。

     部署前准备:

  • Solr 4.0 必须运行在Java1.5 或更高版本的Java 虚拟机中,运行标准Solr 服务只需要安装JRE 即可。

  • Solr 4.0 :  http://www.apache.org/dyn/closer.cgi/lucene/solr/4.0.0

  • 本文以Tomcat7.0  进行演示。

  • 如果出现错误无法运行,请更换更高版本的JDK,Solr各版本支持JDK的版本不尽相同,可以查阅官方中各个版本的不同。

    Solr 4.0 目录:

        

        这里是我的部署方式,Tomcat安装好之后把apache-solr-4.0.0\example\webapps下的solr.war文件拷贝到Tomcat下的Tomcat7.0\webapps目录下,然后启动Tomcat 报错不用管,solr.war会自动解压,之后打开Tomcat7.0\webapps\solr\WEB-INF\web.xml,把下面代码复制进去放到后面:


<env-entry> 
   <env-entry-name>solr/home</env-entry-name> 
   <env-entry-value>E:\SolrHome</env-entry-value> 
   <env-entry-type>java.lang.String</env-entry-type> 
</env-entry>



            其中  E:\SolrHome  是存放solr配置文件等,修改为自己文件的位置,为了看着更清晰直观,你可以这样放:

            E:\Tomcat7.0

            E:\apache-solr-4.0.0

            E:\SolrHome


            现在可以重新启动Tomcat了,没有报错,通过这个地址进入Solr4.0页面:http://localhost:8080/solr 

        

            如果进入以上界面说明成功了,没有成功的话页面会有ERROR提示。

            如图:左侧core0,core1等是solr 4.0中的示例,core0和core1位于apache-solr-4.0.0\example\multicore所有文件都下拷贝到E:\SoleHome下,core0和core1可以理解为两个库,都是独立的,用来存放索引以及生成这些索引文件所需要的配置文件,solrtest是我测试建立的目录,如图:

        没添加一个库都需要在solr.xml里面进行配置,这个比较简单


<solr persistent="false">
  <cores adminPath="/admin/cores" host="${host:}" hostPort="${jetty.port:}">
    <core name="core0" instanceDir="core0" />
    <core name="core1" instanceDir="core1" />
    <core name="collection1" instanceDir="collection1" />
    <core name="solrtest" instanceDir="solrtest"/>
  </cores>
</solr>

name="",是库的名字,instanceDir="",是目录


        每个目录下包含两个文件夹conf和data,data下有两个文件夹index和tlog,index是存放生成的索引文件,tlog存放log,conf下是必要的配置文件schema.xml和solrconfig.xml,可以参考官方或者core里面的配置文件:

        

<?xml version="1.0" ?>
<schema name="example solr test" version="1.1">
  <types>
   <fieldtype name="string"  class="solr.StrField" sortMissingLast="true" omitNorms="true"/>
   <fieldType name="long" class="solr.TrieLongField" precisionStep="0" positionIncrementGap="0"/>
  </types>

 <fields>   
  <!-- general -->
  <field name="id" type="string" indexed="true" stored="true" multiValued="false" required="true"/>
  <field name="type" type="string" indexed="true" stored="true" multiValued="false" /> 
  <field name="name" type="string" indexed="true" stored="true" multiValued="false" />
  <field name="_version_" type="long" indexed="true" stored="true"/>
 </fields>

 <!-- field to use to determine and enforce document uniqueness. -->
 <uniqueKey>id</uniqueKey>

 <!-- field for the QueryParser to use when an explicit fieldname is absent -->
 <defaultSearchField>name</defaultSearchField>

 <!-- SolrQueryParser configuration: defaultOperator="AND|OR" -->
 <solrQueryParser defaultOperator="OR"/>
</schema>

        solrconfig.xml我还不是很懂,在这里就不讲了,但是必须配置(好像是必须配):

        

<?xml version="1.0" encoding="UTF-8" ?>
<!-- 可以从core文件中copy过来 -->
<config>
  <luceneMatchVersion>LUCENE_40</luceneMatchVersion>
  
  <directoryFactory name="DirectoryFactory" class="${solr.directoryFactory:solr.StandardDirectoryFactory}"/>

  <dataDir>${solr.solrtest.data.dir:}</dataDir>   solr.solrtest.data.dir存放的是索引目录

  <updateHandler class="solr.DirectUpdateHandler2">
    <updateLog>
      <str name="dir">${solr.solrtest.data.dir:}</str>
    </updateLog>
  </updateHandler>

  <requestHandler name="/get" class="solr.RealTimeGetHandler">
    <lst name="defaults">
      <str name="omitHeader">true</str>
    </lst>
  </requestHandler>
  
  <requestHandler name="/replication" class="solr.ReplicationHandler" startup="lazy" /> 

  <requestDispatcher handleSelect="true" >
    <requestParsers enableRemoteStreaming="false" multipartUploadLimitInKB="2048" />
  </requestDispatcher>
  
  <requestHandler name="standard" class="solr.StandardRequestHandler" default="true" />
  <requestHandler name="/analysis/field" startup="lazy" class="solr.FieldAnalysisRequestHandler" />
  <requestHandler name="/update" class="solr.UpdateRequestHandler"  />
  <requestHandler name="/admin/" class="org.apache.solr.handler.admin.AdminHandlers" />

  <requestHandler name="/admin/ping" class="solr.PingRequestHandler">
    <lst name="invariants">
      <str name="q">solrpingquery</str>
    </lst>
    <lst name="defaults">
      <str name="echoParams">all</str>
    </lst>
  </requestHandler>

  <!-- config for the admin interface --> 
  <admin>
    <defaultQuery>solr</defaultQuery>
  </admin>

</config>

        之后在exampledocs目录下手动创建一个solr1.xml文件:

<?xml version="1.0" ?>
<add>
  <doc>
    <field name="id">solr1</field>
    <field name="type">type1</field>
    <field name="name">my solr test</field>
  </doc>
</add>

         跟schema.xml中的字段对应,好了现在可以提交数据了,这里在window命令窗口提交数据,把E:\apache-solr-4.0.0\example\exampledocs下的post.jar复制到 E:\SolrHome\exampledocs下

        打开命令窗口CD 到E:\SolrHome\exampledocs下使用命令,Tomcat不要忘了开:

java -Durl=http://localhost:8080/solr/solrtest/update -Ddata=files -jar post.jar solr1.xml
 


 

如图成功的添加的索引,看下E:\SolrHome\solrtest\data\index下的文件:


 

        进入solr页面:
 

        
 

        点击Executu Query查询,右侧生成了地址可以打开查看,到此结束。

标签: solr
  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 5
博文 12
码字总数 6205
评论 (15)
java10001
一起研究研究solrcloud,不知道你这边有兴趣吗?
尚小胖

引用来自“java10001”的评论

一起研究研究solrcloud,不知道你这边有兴趣吗?

暂时没时间
小木兵兵
想请问下,solrj使用哪些jar包?程序一直都不对。。。
Gary_5
用的端口在哪里设置
nullnullnu

引用来自“Binglee”的评论

想请问下,solrj使用哪些jar包?程序一直都不对。。。

apache-solr-solrj-4.0.0.jar和他的依赖包solr/dist/solrj-lib

insights
我下载了个4.8的版本,是因为是jdk6的原因吗,无法启动..用官方doc的start.jar也无法运行,说版本不支持...
尚小胖

引用来自“jan2000”的评论

我下载了个4.8的版本,是因为是jdk6的原因吗,无法启动..用官方doc的start.jar也无法运行,说版本不支持...
多换几个版本试试吧
weichangyong

引用来自“jan2000”的评论

我下载了个4.8的版本,是因为是jdk6的原因吗,无法启动..用官方doc的start.jar也无法运行,说版本不支持...
4.8必须是JDK7.0以上
尚小胖

引用来自“Gary_5”的评论

用的端口在哪里设置
tomcat端口,百度
c90217
我配置都弄好啦但是索引没有添加成功 提示如下
Indexing completed. Added/Updated: 0 documents. Deleted 0 documents. (Duration: 012s)
Requests: 1 (0/s), Fetched: 163840 (13653/s), Skipped: 0, Processed: 0 (0/s)
Started: 3 minutes ago
一直卡在这请大神解决
尚小胖

引用来自“c90217”的评论

我配置都弄好啦但是索引没有添加成功 提示如下
Indexing completed. Added/Updated: 0 documents. Deleted 0 documents. (Duration: 012s)
Requests: 1 (0/s), Fetched: 163840 (13653/s), Skipped: 0, Processed: 0 (0/s)
Started: 3 minutes ago
一直卡在这请大神解决
目录里面有案例啊,依葫芦画瓢。
Clelsea

引用来自“jan2000”的评论

我下载了个4.8的版本,是因为是jdk6的原因吗,无法启动..用官方doc的start.jar也无法运行,说版本不支持...

引用来自“weichangyong”的评论

4.8必须是JDK7.0以上
哥们你确定嘛?
我擦名字限制

引用来自“jan2000”的评论

我下载了个4.8的版本,是因为是jdk6的原因吗,无法启动..用官方doc的start.jar也无法运行,说版本不支持...
换jdk7,4.8以上都是jdk7
安立国
我的<solr persistent="false">

<!--
adminPath: RequestHandler path to manage cores.
If 'null' (or absent), cores will not be manageable via request handler
-->
<cores adminPath="/admin/cores" host="${host:}" hostPort="${jetty.port:}">
<core name="core0" instanceDir="core0" />
<core name="core1" instanceDir="core1" />
<core name="collection1" instanceDir="collection1" />
  <core name="solrtest" instanceDir="solrtest"/>
</cores>

</solr>
配置启动正常,但是里面配置的core在solr控制台中访问都是404,不知道什么原因
尚小胖

引用来自“安立国”的评论

我的<solr persistent="false">

<!--
adminPath: RequestHandler path to manage cores.
If 'null' (or absent), cores will not be manageable via request handler
-->
<cores adminPath="/admin/cores" host="${host:}" hostPort="${jetty.port:}">
<core name="core0" instanceDir="core0" />
<core name="core1" instanceDir="core1" />
<core name="collection1" instanceDir="collection1" />
  <core name="solrtest" instanceDir="solrtest"/>
</cores>

</solr>
配置启动正常,但是里面配置的core在solr控制台中访问都是404,不知道什么原因
404 应该是没找到资源吧,检查配置。
×
尚小胖
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: