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

[经验分享] 全文搜索引擎Solr工具使用

[复制链接]

尚未签到

发表于 2017-3-2 10:52:44 | 显示全部楼层 |阅读模式
    Solr是一个高性能,采用Java5开发,基于Lucene的全文搜索服务器。同时对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展并对查询性能进行了优化,并且提供了一个完善的功能管理界面,是一款非常优秀的全文搜索引擎。
  1.下载solr
    官网:http://lucene.apache.org/solr/
  2.目录结构(版本:6.3.0)
DSC0000.png

  3.启动solr
  solr默认使用jetty部署,也可以使用tomcat部署,本次采用默认jetty部署,进入solr目录,输入:bin/solr start命令,出现Happy searching!字符证明启动成功,默认端口号8983  DSC0001.png
  4.访问solr
  浏览器访问本地solr地址:http://localhost:8983/solr/#/
DSC0002.png

  5.新增配置文件
  在server/solr目录下,有一个README.txt的文件,其中说明了如何建立solr core。最简单的建立是直接复制solr中为我们提供好的例子,打开server/solr/configsets目录会发现里面已经有三个例子,因为我们是要从数据库导入数据,所以复制 “data_driven_schema_configs” 这个例子并改名为 “case_task”。
DSC0003.png

  6.导入中文分词工具IK Analyzer
  下载地址:http://download.csdn.net/detail/linzhiqiang0316/9537326
  IK分词包内容:
DSC0004.png

  7.整合中文分词工具IK Analyzer 
  将ik-analyzer-solr5-5.x.jar这个jar包放入solr项目下的dist目录下面,将IKAnalyzer.cfg.xml,mydict.dic(搜狗的扩展词库),stopword.dic放在solr项目下的server/resources目录下面
DSC0005.png

DSC0006.png

8.导入需要的jar包
  为了导入数据和链接mysql,我们还需要导入两个重要的jar包。由于mysql的jar包并没有在项目中,我是复制了一份放到了dist目录下面了。另外两个需要的jar包就是dist目录下带有“dataimport”标识的jar包。
  然后打开myCollections/conf/solrconfig.xml,引用上面提到的jar包和中文分词工具jar包如下。
DSC0007.png

9.数据库字段
DSC0008.png
  10.添加requestHandler
  继续修改case_task/conf/solrconfig.xml,搜索 <requestHandler name="/select" class="solr.SearchHandler"> ,然后在该行之上添加如下代码。



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

11.建立连接配置文件
  在case_task/conf目录下新建data-config.xml, 内容如下。


  <?xml version="1.0" encoding="UTF-8"?>
<dataConfig>  
    <dataSource name="casev2" type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3307/casev2" user="root" password="123456" batchSize="-1" />  
  <document>  
            <entity name="case_task" pk="id"  dataSource="casev2" query="select * from  case_task"  
                deltaImportQuery="select * from case_task where id='${dih.delta.id}'"
                deltaQuery="select id from case_task where last_modify_time> '${dataimporter.last_index_time}'">  
  
     <field column="id" name="id"/>  
     <field column="case_title" name="case_title"/>  
    <field column="case_desc" name="case_desc"/>  
     <field column="time_point" name="time_point"/>  
               <field column="last_modify_time" name="last_modify_time"/>  
     </entity>  
  </document>  
</dataConfig>
  说明:
    dataSource是数据库数据源。Entity就是一张表对应的实体,pk是主键,query是查询语句。Field对应一个字段,column是数据库里的column名,后面的name属性对应着Solr的Filed的名字。其中solrdata是数据库名,case_task是表名。
    其中deltaQuery是增量索引,原理是从数据库中根据deltaQuery指定的SQL语句查询出所有需要增量导入的数据的ID号。然后根据deltaImportQuery指定的SQL语句返回所有这些ID的数据,即为这次增量导入所要处理的数据。核心思想是:通过内置变量“${dih.delta.id}”和 “${dataimporter.last_index_time}”来记录本次要索引的id和最近一次索引的时间。
12.managed-schema配置field信息
  搜索 <field name= ,添加关联数据库表Column的信息:


  <field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" />
    <!-- doc values are enabled by default for primitive types such as long so we don't index the version field  -->
    <field name="_version_" type="long" indexed="false" stored="false"/>
    <field name="_root_" type="string" indexed="true" stored="false" docValues="false" />
    <field name="_text_" type="text_general" indexed="true" stored="false" multiValued="true"/>
  <field name="case_title" type="text_ik" indexed="true" stored="true"/>
    <field name="case_desc" type="text_ik" indexed="true" stored="true"/>
    <field name="time_point" type="int" indexed="true" stored="true"/>
    <field name="last_modify_time" type="date" indexed="true" stored="true"/>
  添加中文分词IK配置信息:


  <fieldType name="text_ik" class="solr.TextField">
<analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/>
</fieldType>
<field name="text_ik" type="text_ik" indexed="true" stored="true" multiValued="false" />
  13.添加我们刚刚建立的core
  (1).点击Core Admin,配置我们建立的solr Core的信息,如下所示:
DSC00010.png

  (2).测试索引是否成功
DSC00011.png

  索引成功
  (3).监测查询成功
DSC00012.png

  查询成功
  (4).检测中文分词
DSC00013.png

  检测成功
  14.其他操作
  (1).删除所有索引:
  http://localhost:8983/solr/case_task/update/?stream.body=%3Cdelete%3E%3Cquery%3E*:*%3C/query%3E%3C/delete%3E&stream.contentType=text/xml;charset=utf-8&commit=true
  (2).添加所有索引:
  http://localhost:8983/solr/case_task/dataimport?command=full-import&clean=false&commit=true
  (3).新增索引:
  http://localhost:8983/solr/case_task/dataimport?command=delta-import&clean=false&commit=true

运维网声明 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-349216-1-1.html 上篇帖子: Java web项目 下篇帖子: Eclipse 未正常退出,导致进不去的问题
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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