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

[经验分享] Apache solr 6.6.0安装

[复制链接]

尚未签到

发表于 2017-12-18 22:14:47 | 显示全部楼层 |阅读模式
  Apache solr 6.6.0安装
  最近使用了Apache solr搜索引擎框架,solr是基于lucene的一个搜索服务器,lucene也是Apache的一个开源项目;对于学习搜索引擎来说,这个入门也是不错的
  http://www.apache.org/dyn/closer.lua/lucene/solr/6.6.0,首先先把Apache solr 6.6.0的包下载.
DSC0000.png

  我下载来的目录结构是这样的,bin里可以进行solr的启动,几条基本的命令,在bin里:一般使用端口为8983
  

solr start -p 8983,开启solr  

  
solr stop -p 8983,关闭solr
  

  
solr start -p 8983 -f 前台开启,默认是后台开启
  

  也可以不加-p 端口,会开启默认端口,
  浏览器里打开solr管理界面 http://localhost:8983/solr/
  

solr create -c <name> 创建一个核心  
solr delete -c
<name> 删除一个核心  

  创建好的核心是放在solr-6.6.0\server\solr\下的,进入创建好的核心里,
DSC0001.png

  核心/data/index/里的文件和lucene的索引文件差不多,核心/conf/的里文件
DSC0002.png

  data-config.xml文件是自己创的,而最常修改的文件就是solrconfig.xml和managed-schema,注意版本不同,配置文件的名称也不同
  一般如果要让搜索引擎支持中文的话,是需要加入中文词法分析,而如果要和数据库连接,是需要数据库的架包,首先考虑你的搜索引擎是否需要中文词法分析器.
  对几种中文分析器: StandardAnalyzer、ChineseAnalyzer、CJKAnalyzer、IK_CAnalyzer、MIK_CAnalyzer、MMAnalyzer(JE分词)、PaodingAnalyzer等,我用的是IK_CAnalyzer
  链接:http://pan.baidu.com/s/1o8HoQRg 密码:yavs,下载的地址,下好的文件夹为
DSC0003.png

  当然,将ik-analyzer-solr5-5.x.jar 放入solr-6.6.0\server\solr-webapp\webapp\WEB-INF\lib,一般对于架包都是放着的
  将IKAnalyzer.cfg.xmlmydict.dic(搜狗的扩展词库),stopword.dic放入solr-6.6.0\server\solr-webapp\webapp\WEB-INF\classes
  然后有了这些架包,就需要在配置文件里导入,在自己的核心\conf\managed-schema
  

  <fieldType name="text_id" positionIncrementGap="100">  <analyzer>
  <tokenizer/>
  <filter/>
  <filter words="lang/stopwords_id.txt" ignoreCase="true"/>
  <filter stemDerivational="true"/>
  </analyzer>
  </fieldType>
  
<!--它之后添加添加配置-->
  <fieldType name="text_ik">
  <analyzer type="index">
  <tokenizer useSmart="false"/>
  </analyzer>
  <analyzer type="query">
  <tokenizer useSmart="true"/>
  </analyzer>
  </fieldType>
  

  即添加一个类型为"text_ik",之后保存,接下来测试一下,先Reload一下,
DSC0004.png

DSC0005.png

  在自己的核心里的Analysis里测试,记得选择FieldType为text_ik,即中文词法分析,Verbose Output可选不可选都可以,
  接下来就是配置数据库连接, 大多数的应用程序将数据存储在关系数据库、xml文件中。对这样的数据进行搜索是很常见的应用。所谓的DataImportHandler提供一种可配置的方式向solr导入数据,可以一次全部导入,也可以增量导入。
  Handler首先要在自己的核心\conf\solrconfig.xml文件中配置下,如下所示:(强迫症,位置一定要规范,其实放哪都行)
  

  <lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-velocity-\d.*\.jar" />  <!--之后引入DataImportHandler类的jar-->
  <lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-dataimporthandler-.*\.jar" />
  

  在随便一个<requestHandler>...</requetHandler>之后添加:
  

  <
requestHandler name="/dataimport">  <lst name="defaults">
  <str name="config">data-config.xml</str>      
  </lst>
  </requestHandler>
  

  我使用的是mysql,首先在核心里添加一个字段,这个字段可以通过
DSC0006.png

  注意一下,field type看你的需要写,如果需要中文分析,就用text_ik,填好后,然后添加(Add Field)
  或者在自己的核心\conf\managed-schema里:
  

  <field name="_version_" type="long" indexed="false" stored="false"/>  
<!--之后添加,字段类型注意-->
  <field name="content" type="text_ik" indexed="true" stored="true"/>
  <field name="id" type="string" multiValued="false" indexed="true" required="true" stored="true"/>
  <field name="title" type="text_ik" indexed="true" stored="true"/>
  
<!--之前添加-->
  <dynamicField name="*_txt_en_split_tight" type="text_en_splitting_tight" indexed="true" stored="true"/>
  

  其实放置的位置无所谓,只是最好还是规范一点好
  接下来就是配置data-config.xml,在data-configxml中
  

<?xml version="1.0" encoding="UTF-8"?>  
<dataConfig>
  <dataSource name="production" type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://127.0.0.1:3306/solr_test" user="root" password="root" batchSize="-1" />
  
  <document name="news">
  <entity dataSource="production" name="test"
  pk="id"
  query="select * from test"

  deltaImportquery="select * from test where>  <!--column的id是数据库的id,name的id是managed_schema里面的id,id是必须,并且唯一的-->
  <field column="id" name="id" />
  <!--column的title是数据库的title字段,name的title是managed_schema里面的title,下面配置同理-->
  <field column="id" name="id" />
  <field column="title" name="title" />
  <field column="content" name="content" />
  </entity>
  </document>
  
</dataConfig>
  

  先添加一个数据源,之后就是添加一个<document>,架包的位置和配置中文词法分析的架包放置位置一样,solr-6.6.0\server\solr-webapp\webapp\WEB-INF\lib,接下来测试一下,先Reload一下,然后
   DSC0007.png
  Command中选择full-import(全文导入),Entity即选择data-config.xml下自己写的,Execute后,多Refresh Status几次
DSC0008.png

  就看到效果了
  http://www.cnblogs.com/llz5023/archive/2012/11/15/2772154.html,推荐的一篇博客
  最后的最后写下自己最近写的联合查询,有时候我想把多个表信息查出来,在data-config.xml中:
  

<?xml version="1.0" encoding="UTF-8"?>  
<dataConfig>
  <dataSource name="production" type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://127.0.0.1:3306/shop_manager" user="root" password="root" batchSize="-1" />
  
  <document name="items">
  <entity dataSource="production" name="all_resource"
  pk="id"
  query="select name,description,price from food_store union select name,description,price from cloths_store union select name,description,price from book_store;">
  <!--column的id是数据库的id,name的id是managed_schema里面的id,id是必须,并且唯一的,不过我设置了uuid和更新策略-->
  <field column="name" name="name"/>
  <field column="description" name="description"/>
  <field column="price" name="price"/>
  </entity>
  </document>
  
</dataConfig>
  


  query中这么写,不过呢,有一个冲突就是id的重复,如果去掉id字段即,唯一键就没了,所以我就用了UUID,含义是通用唯一识别码 (Universally Unique>  修改自己的核心\conf\solrconfig.xml中的结果为:
  

<!--RequestHandler 手动添加-->  <requestHandler name="/dataimport">
  <lst name="defaults">
  <str name="config">data-config.xml</str>
  <str name="update.chain">uuid</str>
  </lst>
  
</requestHandler>
  
<!--还需添加一个uuid的更新策略-->
  
<requestHandler name="/update">
  <lst name="defaults">
  <str name="update.chain">uuid</str>
  </lst>  
  
</requestHandler>
  

  搜索updateReqeustProcessorChain,在:
  

<updateRequestProcessorChain name="add-unknown-fields-to-the-schema">  

  前加入如下配置:
  

<updateRequestProcessorChain name="uuid">  <processor>
  <str name="fieldName">id</str>
  </processor>
  <processor />
  <processor />
  <processor />
  
</updateRequestProcessorChain>
  

  修改自己的核心\conf\solrconfig.xml中的
  

<field name="id" type="uuid" multiValued="false" indexed="true" required="true" stored="true"/>  

  添加一个fieldType类型
  

<fieldType name="uuid" indexed="true"/>  

  

<!--确保uniqueKey的值是已经定义的,一般默认是id-->  <uniqueKey>id</uniqueKey>
  

  Reload搞定
  参考文档https://blog.liyang.io/261.html

运维网声明 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-425525-1-1.html 上篇帖子: 7.Solr查询参数 下篇帖子: solr环境搭建&基本使用
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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