solr就不多介绍了。是用于搜索功能的开源工具,很强大

一、solr环境部署

solr本身能够用jetty启动,但是还是用tomcat启动比较适合我自己。学习solr有两个星期了,到现在(2016.11.27)solr最新版已经是6.3.0了,不过没关系,基本的东西都是一样的。

1、solr官网: http://lucene.apache.org/solr/

下载后解压,是这样的目录结构:

2、solr当然可以直接按网上其他很多教程那样整合到tomcat中,但是本人更喜欢建一个新工程,这样更灵活。下面我们在eclipse中新建一个tomcat-solr的java web工程,不过这里要注意,要把这个工程的访问路径变成solr,不能是tomcat-solr,因为solr的管理页面中,solr的开发者把这个目录写死了,我们要把访问路径改成solr,也就是:http://localhost:8080/solr/index.html ,怎么改呢:

在eclipse中:

下面我们进行如下操作:

1)将solr-6.2.1\server\solr-webapp\webapp下的内容copy到我们web工程的webapp下

2)将solr-6.2.1\server\lib\ext下的jar包,copy到我们的tomcat-solr功能中

3)将solr-6.2.1\server\resources\log4j.properties文件copy到tomcat-solr功能的src中,

4)在tomcat-solr工程的webapp文件夹下,新建文件夹solrhome,将solr-6.2.1\server\solr下的文件夹以及文件copy到solrhome中,

5)修改web.xml文件,修改env-entry-value的值为solrhome的绝对位置,如:


 6)启动tomcat,访问http://localhost:8080/solr/index.html

到此,solr部署完毕。
我们的tomcat-solr功能应该长得如此帅:

对了,solr支持zookeeper搭建集群配置,在这里我们先注释掉,在solrhome文件夹下的solr.xml文件中,

Xml代码  
  1. <solr>
  2. <!-- 注解掉zookeeper搭建集群配置,采用master-slave的形式
  3. <solrcloud>
  4. <str name="host">${host:}</str>
  5. <int name="hostPort">${jetty.port:8983}</int>
  6. <str name="hostContext">${hostContext:solr}</str>
  7. <bool name="genericCoreNodeNames">${genericCoreNodeNames:true}</bool>
  8. <int name="zkClientTimeout">${zkClientTimeout:30000}</int>
  9. <int name="distribUpdateSoTimeout">${distribUpdateSoTimeout:600000}</int>
  10. <int name="distribUpdateConnTimeout">${distribUpdateConnTimeout:60000}</int>
  11. <str name="zkCredentialsProvider">${zkCredentialsProvider:org.apache.solr.common.cloud.DefaultZkCredentialsProvider}</str>
  12. <str name="zkACLProvider">${zkACLProvider:org.apache.solr.common.cloud.DefaultZkACLProvider}</str>
  13. </solrcloud>
  14. <shardHandlerFactory name="shardHandlerFactory"
  15. class="HttpShardHandlerFactory">
  16. <int name="socketTimeout">${socketTimeout:600000}</int>
  17. <int name="connTimeout">${connTimeout:60000}</int>
  18. </shardHandlerFactory>
  19. -->
  20. </solr>

二、core配置

solr的core非常重要,还有什么多core什么的,由于我也是刚刚学习,还没有搞明白,这里只是能够用最简单的,我们将在solrhome文件夹下,新建文件夹:my_solr,然后将solr-6.2.1\example\example-DIH\solr\solr下的文件以及文件夹copy到my_solr下,

访问刚才的地址:
 

三、整合mysql

1、首先我们在mysql中建个表作为练习,

Sql代码  
  1. CREATE TABLE `solrTest` (
  2. `solrID` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID',
  3. `context` varchar(255) DEFAULT NULL COMMENT 'context',
  4. `updateTime` datetime DEFAULT NULL COMMENT 'updateTime',
  5. `sort` int(11) DEFAULT '1' COMMENT '排序',
  6. PRIMARY KEY (`solrID`)
  7. ) DEFAULT CHARSET=utf8;

2、将mysql的驱动jar包,copy到我们tomcat-solr功能中(lib文件夹下,这个们问题的吧),

3、修改my_solr文件夹下的conf文件夹下的solr-data-config.xml文件:

Xml代码  
  1. <dataConfig>
  2. <dataSource type="JdbcDataSource"
  3. driver="com.mysql.jdbc.Driver"
  4. url="jdbc:mysql://localhost:3306/test"
  5. user="root"
  6. password="123456"/>
  7. <document name="solr_mysql_test">
  8. <entity name="solrTest"
  9. pk="solrID"
  10. query="select * from solrTest"
  11. deltaImportQuery="select * from solrTest where solrID = '${dih.delta.solrID}'"
  12. deltaQuery="select solrID from solrTest where updateTime > '${dataimporter.last_index_time}'"/>
  13. <field column="solrID" name="solrID"/>
  14.        <field column="context" name="context"/>
  15. <field column="updateTime" name="updateTime"/>
  16. <field column="sort" name="sort"/>
  17. </document>
  18. </dataConfig>

这里面的内容具体什么意思,网上有很多专门介绍的文章博客,这里就不多说了

4、修改conf文件夹下的managed-schema文件,在schema标签下添加field

Xml代码  
  1. <field name="solrID" type="string" required="true" indexed="true" stored="true" multiValued="false"/>
  2. <field name="context" type="string" indexed="true" stored="true" multiValued="false"/>
  3. <field name="updateTime" type="date" indexed="true" stored="true" multiValued="false"/>
  4. <field name="sort" type="int" indexed="true" stored="true" multiValued="false"/>

这里面name对应solr-data-config.xml中的name,要一直,否则solr就找不到字段了,

type是类型,indexed代表是否可用于检索,stored代表是否存储,multiValued代表是否有多个值,除此之外还有很多字段,读者可以移步度娘。

(另外说一下,我这里用的其实是schema.xml,而不是managed-schema文件,不过感觉都是一个样)

下面,看下我们的成就(别忘了mysql填点数据哦,否则啥也看不出来):

先刷新下solr数据:

然后查数据:

四、下面,我们看看中文分词器

solr本分提供了很多分词器(不过对中文的分词实在不能用,愤怒!!!),对了,那么什么是分词呢?比如“数据结构”这个词,没分词前,solr就按“数据结构”这个词查(有点像mysql的=),中文分词后,就按“数据”,“结构”这两个词查(有点像like),这样更符合我们的搜索习惯

有很多支持solr中文分词的jar包,比如我们用的IKAnalyzer中文分词器

我们首先导入IKAnalyzer的jar包,注意IKAnalyzer的jar包要与solr版本对应,否则会execption的,

然后在managed-schema文件的最后:

Xml代码  
  1. <!-- IKAnalyzer中文分词器.如果版本与solr对应不上,会报抽象方法错误 -->
  2. <fieldType name="text_ik" class="solr.TextField">
  3. <!--索引时候的分词器-->
  4. <analyzer type="index" isMaxWordLength="false" class="org.wltea.analyzer.lucene.IKAnalyzer"/>
  5. <!--查询时候的分词器-->
  6. <analyzer type="query" isMaxWordLength="true" class="org.wltea.analyzer.lucene.IKAnalyzer"/>
  7. </fieldType>

在然后,比如我们数据库表中的context字段要进行分词,那么修改field:

Java代码  
  1. <field name="context" type="text_ik" indexed="true" stored="true" multiValued="false"/>

也就是修改type为分词器的name

这时我们在去solr查询一下,我们先填几条数据:


 去看看成果:


 五、solrJ是连接我们java工程和solr的工具jar包,很实用

简单的使用示例:

Java代码  
  1. public class SolrQueryTest {
  2. //solr 服务器地址
  3. public static final String solrServerUrl = "http://localhost:8080/solr";
  4. //solrhome下的core
  5. public static final String solrCroeHome = "my_solr";
  6. @SuppressWarnings({ "resource", "deprecation" })
  7. public static void main(String[] args) {
  8. try {
  9. //SolrClient client = new HttpSolrClient(solrServerUrl + "/" + solrCroeHome);
  10. //QueryResponse resp = client.query(new SolrQuery("*:*"));
  11. SolrClient client = new HttpSolrClient(solrServerUrl);
  12. QueryResponse resp = client.query(solrCroeHome, new SolrQuery("*:*"));
  13. List<TestBean> lists =  resp.getBeans(TestBean.class);
  14. System.out.println(lists);
  15. } catch (SolrServerException e) {
  16. e.printStackTrace();
  17. } catch (IOException e) {
  18. e.printStackTrace();
  19. }
  20. }
  21. }

bean(注意要有solrJ的注解):

Java代码  
  1. public class TestBean {
  2. @Field("solrID")
  3. private String solrID;
  4. @Field("context")
  5. private String context;
  6. @Field("updateTime")
  7. private Date updateTime;
  8. public String getSolrID() {
  9. return solrID;
  10. }
  11. public void setSolrID(String solrID) {
  12. this.solrID = solrID;
  13. }
  14. public String getContext() {
  15. return context;
  16. }
  17. public void setContext(String context) {
  18. this.context = context;
  19. }
  20. public Date getUpdateTime() {
  21. return updateTime;
  22. }
  23. public void setUpdateTime(Date updateTime) {
  24. this.updateTime = updateTime;
  25. }
  26. }

solr在查询时,也有很多方法,能够设置查询的条件,比如分页、分片检索、结果的过滤条件、排序等,下面只是一个示例,我一个功能的代码片段:

Java代码  
  1. /**
  2. * 设置查询信息
  3. */
  4. solrQuery.setQuery(this.getQueryFields(keyWord));    //设置基本查询
  5. /**
  6. * 设置查询条件
  7. */
  8. solrQuery.setFilterQueries(this.getFielder(condition));
  9. /**
  10. * 分页
  11. */
  12. solrQuery.setStart(pInteger);
  13. solrQuery.setRows(systemConfigureUtil.getSolrRow());
  14. /**
  15. * 分片检索(分类检索)——
  16. */
  17. solrQuery.setFacet(systemConfigureUtil.isFacet());
  18. solrQuery.add("facet.field", systemConfigureUtil.getFacetStr()); //可以按多个字段分类,用逗号分隔
  19. /**
  20. * 设置过滤结果——能查询出那些字段
  21. */
  22. solrQuery.add("fl", systemConfigureUtil.getFilterFields());
  23. /**
  24. * 排序,注意是有顺序的
  25. */
  26. solrQuery.setSort(this.getSort(0));  //setSort()会覆盖之前的查询条件
  27. solrQuery.addSort("sort", SolrQuery.ORDER.desc); //addSort()不会覆盖之前的查询条件

到此,我学到的solr的东西也就这些了,还会继续学习的。

我搭建好的tomcat-solr功能在我的github中:https://github.com/hejiawang/tomcat-solr

solrJ的练习工程:https://github.com/hejiawang/search-web

文章来源:http://hejiawangjava.iteye.com/blog/2341372

solr6.2从环境部署到与mysql整合到中文分词器到solrJ的使用相关推荐

  1. 使用Docker快速安装部署ES和Kibana并配置IK中文分词器以及自定义分词拓展词库

    使用Docker快速安装部署ES和Kibana的前提:首先需要确保已经安装了Docker环境 如果没有安装Docker的话,可以参考上一篇的内容:Linux上安装Docker 有了Docker环境后, ...

  2. 生产环境部署java+tomcat+mysql的一些体会

    title: 生产环境部署java+tomcat+mysql的一些体会 java的安装 链接 提取码:y8w0 具体安装可查看别人写的博客,整个流程大概是以下: 下载 jre-8u202-linux- ...

  3. solr mysql 分词_solr 7+tomcat 8 + mysql实现solr 7基本使用(安装、集成中文分词器、定时同步数据库数据以及项目集成)...

    基本说明 Solr是一个开源项目,基于Lucene的搜索服务器,一般用于高级的搜索功能: solr还支持各种插件(如中文分词器等),便于做多样化功能的集成: 提供页面操作,查看日志和配置信息,功能全面 ...

  4. 1、solr包结构介绍,solrCore的安装配置,solr部署到Tomcat,多solrCore配置,配置中文分词器,界面功能介绍,Schema.xml的基本使用,数据导入

    一.下载solr,下载地址是:http://archive.apache.org/dist/lucene/solr/,选择自己想要的solr的版本,本项目使用的版本是4.10.3 二.如果想下载Luc ...

  5. Solr7.2.1环境搭建和配置ik中文分词器

    solr7.2.1环境搭建和配置ik中文分词器 安装环境:Jdk 1.8. windows 10 安装包准备: solr 各种版本集合下载:http://archive.apache.org/dist ...

  6. solr6.4服务器+Tomcat+中文分词器

    Solr服务器的搭建 第一步:把solr-6.4.1.zip解压之后,找到solr-6.4.1/server/server-webapp/目录下的webapp文件夹,复制粘贴到tomcat下的weba ...

  7. elasticsearch通过logstash同步mysql数据(中文分词)

    Elasticsearch 目录 概述 索引(Index) 类型(Type) 文档(Document) 倒排索引(Inverted Index) 节点(Node) 安装 启动 DSL(查询语句) 官方 ...

  8. 悟空分词与mysql结合_中文分词与关键词提取实践小结

    本文基于题库查重需求实现过程及<NLP自然语言处理原理与实践>学习过程总结得出.定有不足之处,恳请指出. 基本概念 评价指标 一般,中文分词从Precision.Recall.F-scor ...

  9. elasticsearch 5.6.x单机环境构建(集成head插件和IK中文分词)

    elasticsearch近几年版本更新迭代的速度之已经超出了我的想象,想着我2016,2017年还在用着2.4.x版本,最近几年直接5.x,6.x,7.x版本了,看了一下下更新迭代的小版本时间几乎几 ...

  10. Windows下Solr的安装与配置,附DIH全量导入MySQL数据、IK分词器配置详解——不用集成Tomcat

    Solr是Apache开源的比较稳定的一款全文搜索引擎,也是市面上相对比较流行的一款全文搜索引擎,好不好用你用过之后自有判断.今天给大家分享一下它的安装与配置,我用的是7.7.2版本.废话不多说,开搞 ...

最新文章

  1. 二叉树的几种递归和非递归式遍历:
  2. 计算机硬件技术基础5章在线,《计算机硬件技术基础》试题(D)
  3. LeetCode MySQL 1412. 查找成绩处于中游的学生
  4. C语言 va_start / va_end / va_arg 自定义 printf 函数 - C语言零基础入门教程
  5. AcWing1072. 树的最长路径(树形DP)题解
  6. Jquery实现的几款漂亮的时间轴
  7. 项目管理表格模板/实用表格-WBS及WBS字典
  8. horovod 安装及使用
  9. 微服务项目后台技术栈
  10. Android展开的TextView和点击底部滚动到顶部
  11. 关于电路的竞争与冒险问题详解
  12. 有一种心酸,叫靠自己
  13. signature=161034cb9eebb9b66e71be6081528fe7,Alternative Semantics for Verdi
  14. YV12和YUY2的基本知识
  15. uni.downloadFile的400状态码
  16. Auto.js进行自动化熄灭屏幕操作(超简单版本)
  17. 第45届世界技能大赛“网络安全”赛项浙江省选拔赛竞赛任务书
  18. 数控技术一定要用计算机吗,如何成为数控机床编程高手
  19. Springboot毕设项目教务管理系统l7srg(java+VUE+Mybatis+Maven+Mysql)
  20. 边缘计算 KubeEdge+EdgeMash

热门文章

  1. SLAM:一:产品经理眼中的SLAM技术学习路径
  2. 猜数字游戏 由计算机,猜数字游戏实验报告
  3. 连接防火墙/路由器的几种方式
  4. wince 百度地图懒人包_百度导航车载wince版|百度地图winCE版 V10.9.2 安卓版 下载_当下软件园_软件下载...
  5. 文件系统FastDFS和阿里云OSS
  6. Linux内核4.4 init,linux4.4内核启动到INIT: version 2.88 booting 卡住
  7. 英文科技论文时态及其他需要注意的小问题
  8. cocos2dx3.17的csb文件使用方法
  9. 多表查询和动态SQL
  10. HERO2009 午夜骚魂