设为首页 收藏本站
查看: 1355|回复: 0

[经验分享] solr入门与配置

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-11-11 15:38:34 | 显示全部楼层 |阅读模式
  1.软件下载
  (1).apache-solr-3.1.0,写这篇文章时的最新版本,请到apache官网上去下载,解压到如 E:/apache-solr-3.1.0。
  (2).apache-tomcat-6.0.32,apache官网上去下载,解压到如 E:/apache-tomcat-6.0.32。
  
  2.solr安装到tomcat
  (1).修改 E:/apache-tomcat-6.0.32/conf/server.xml,加个 URIEncoding="UTF-8",把 8080 的那一块改为:
  <Connector port="8080" protocol="HTTP/1.1"  connectionTimeout="20000"  redirectPort="8443" URIEncoding="UTF-8"/>   
  
  (2).把下面的内容保存到 E:/apache-tomcat-6.0.32/conf/Catalina/localhost/solr.xml,没有这个目录自行创建。
  <Context docBase="E:/apache-solr-3.1.0/dist/apache-solr-3.1.0.war" reloadable="true" >  <Environment name="solr/home" type="java.lang.String" value="E:/apache-solr-3.1.0/example/solr" override="true" />  </Context>   
  E:/apache-solr-3.1.0/example/solr这个目录可以用来作为配置solr的模板使用,以后这个目录就将作为solr home使用
  如果把example/solr拷到其它目录下了(如C:/soft/solr),有个文件需要修改一下,$SOLR_HOME/conf/solrconfig.xml,找到dataDir设置,
  dataDir是存放索引的目录,默认为<dataDir>${solr.data.dir:./solr}</dataDir>,用的是相对路径,这个需要修改为完整路径: <dataDir>${solr.data.dir:C:/soft/solr/data}</dataDir>
  (3).启动tomcat,并打开 http://localhost:8080/solr/admin/ 查看界面,显示出如下界面,表示配置成功。
[img]http://onexin.iyunv.com/source/plugin/onexin_bigdata/file:///C:/Documents%20and%20Settings/aidy/Application%20Data/Tencent/Users/1020195586/QQ/WinTemp/RichOle/~CUYTZ[E9JP_R[8(HP%)FR8.jpg[/img]  3.配置文件(1).E:/apache-solr-3.1.0/example/solr/conf下的schema.xml,这个配置文件相当于数据表配置文件,它定义了加入索引数据的数据类型。由于现在schema.xml中的内容是官方自带的例子,不太容易懂,现将它替换成自己的内容,定义数据类型后,然后再自定义几条对应数据,然后用命令java -jar post.jar *.xml生成索引,供用户查询<?xml version="1.0" encoding="UTF-8" ?>  <schema name="example" version="1.1">  <types>  <fieldType name="string" class="solr.StrField" sortMissingLast="true" omitNorms="true"/>  <fieldType name="sint" class="solr.SortableIntField" sortMissingLast="true" omitNorms="true"/>  <fieldType name="date" class="solr.DateField" sortMissingLast="true" omitNorms="true"/>  <fieldType name="text" class="solr.TextField" positionIncrementGap="100">  <analyzer>  <tokenizer class="solr.CJKTokenizerFactory"/>  </analyzer>  </fieldType>  </types>  <fields>  <field name="id" type="sint" indexed="true" stored="true" required="true" />  <field name="user" type="string" indexed="true" stored="true"/>  <field name="title" type="text" indexed="true" stored="true"/>  <field name="content" type="text" indexed="true" stored="true" />  <field name="timestamp" type="date" indexed="true" stored="true" default="NOW"/>  <field name="text" type="text" indexed="true" stored="false" multiValued="true"/>  </fields>  <uniqueKey>id</uniqueKey>  <defaultSearchField>text</defaultSearchField>  <solrQueryParser defaultOperator="AND"/>  <copyField source="title" dest="text"/>  <copyField source="content" dest="text"/>  </schema>     (a).首先需要在types结点内定义一个FieldType子结点,包括name,class,positionIncrementGap等等一些参数,name就是这个FieldType的名称,class指向org.apache.solr.analysis包里面对应的class名称,用来定义这个类型的行为。在FieldType定义的时候最重要的就是定义这个类型的数据在建立索引和进行查询的时候要使用的分析器analyzer,包括分词和过滤。在例子中text这个FieldType在定义的时候,在index的analyzer中使用官方的CJK这个分词包。
  
  (b).接下来的工作就是在fields结点内定义具体的字段(类似数据库中的字段),就是filed,filed定义包括name,type(为之前定义过的各种FieldType),indexed(是否被索引),stored(是否被储存),multiValued(是否有多个值)等等。
(2)重启tomcat,此时会报如下错误:org.apache.solr.common.SolrException: QueryElevationComponent requires the schema to
have a uniqueKeyField implemented using StrField。  
此错误是因为solr版本高的问题,在低版本中不会出错,可以在solrconfig.xml 中删除两个结点(即Elevation 组件)解决此问题:
<!-- a search component that enables you to configure the top results for   a given query regardless of the normal lucene scoring.-->  <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>  <!-- a request handler utilizing the elevator component -->  <requestHandler name="/elevate" class="solr.SearchHandler" startup="lazy">  <lst name="defaults">  <str name="echoParams">explicit</str>  </lst>  <arr name="last-components">  <str>elevator</str>  </arr>  </requestHandler>   
手动在 E:/apache-solr-3.1.0/example/exampledocs 创建两个xml 数据文件。分别保存为 demo-doc1.xml 和 demo-doc2.xml,这两个文件中的内容要和schema.xml中定义的数据结构相一致,demo-doc1.xml如下:
<?xml version="1.0" encoding="UTF-8" ?>  <add>  <doc>  <field name="id">1</field>  <field name="user">chenlb</field>  <field name="title">solr 应用演讲</field>  <field name="content">这一小节是讲提交数据给服务器做索引,这里有一些数据,如:服务器,可以试查找它。</field>  </doc>  </add>   
demo-doc2.xml:
<?xml version="1.0" encoding="UTF-8" ?>  <add>  <doc>  <field name="id">2</field>  <field name="user">bory.chan</field>  <field name="title">搜索引擎</field>  <field name="content">搜索服务器那边有很多数据。</field>  <field name="timestamp">2009-02-18T00:00:00Z</field>  </doc>  <doc>  <field name="id">3</field>  <field name="user">other</field>  <field name="title">这是什么</field>  <field name="content">你喜欢什么运动?篮球?</field>  <field name="timestamp">2009-02-18T12:33:05.123Z</field>  </doc>  </add>   
windows默认文件文件是以ANSI编码,注意这两个文件一定要以UTF-8来保存,否则在提交生成索引时会报错

提交数据做索引,到 E:/apache-solr-3.1.0/example/exampledocs,运行:
E:/apache-solr-3.1.0/example/exampledocs>java -Durl=http://localhost:8080/solr/update -Dcommit=yes -jar post.jar demo-doc*.xmlSimplePostTool: version 1.2SimplePostTool: WARNING: Make sure your XML documents are encoded in UTF-8, other encodings are not currently supportedSimplePostTool: POSTing files to http://localhost:8080/solr/update..SimplePostTool: POSTing file demo-doc1.xmlSimplePostTool: POSTing file demo-doc2.xmlSimplePostTool: COMMITting Solr index changes..
此时到E:/apache-solr-3.1.0/example/solr/data/index目录下,可以发现和Lucene创建索引时产生的类似文件

查看搜索结果:
  搜索用户=bory.chan :http://localhost:8080/solr/select/?q=user%3Abory.chan&version=2.2&start=0&rows=10&indent=on
  <?xml version="1.0" encoding="UTF-8"?>  <response>  <lst name="responseHeader">  <int name="status">0</int>  <int name="QTime">0</int>  <lst name="params">  <str name="indent">on</str>  <str name="start">0</str>  <str name="q">user:bory.chan</str>  <str name="rows">10</str>  <str name="version">2.2</str>  </lst>  </lst>  <result name="response" numFound="1" start="0">  <doc>  <str name="content">搜索服务器那边有很多数据。</str>  <int name="id">2</int>  <date name="timestamp">2009-02-18T00:00:00Z</date>  <str name="title">搜索引擎</str>  <str name="user">bory.chan</str>  </doc>  </result>  </response>   
  通过这个简单示例,大家对solr应该有了一定了解,下面看一下如何加入中文分词,如何结合solr搭建自己的应用服务器。
  
  参考连接:
  1.http://blog.chenlb.com/2009/05/apache-solr-quick-start-and-demo.html
  2.http://lianj-lee.iyunv.com/blog/424693
  
  当自己是在前人基础上,稍作改动时,以后我会注意要标明出处。这是对别人劳动成果的尊重!
  拿来主义可以说是一种抄袭行为,请尊重原创!
             版权声明:本文为博主原创文章,未经博主允许不得转载。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-138029-1-1.html 上篇帖子: 论搜索引擎solr与MongoDB的整合 下篇帖子: solr 配置tika 应用
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表