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

[经验分享] 谢青

[复制链接]

尚未签到

发表于 2017-12-20 07:04:30 | 显示全部楼层 |阅读模式
  Solr介绍:
  Solr 是Apache下的一个顶级开源项目,采用Java开发,它是基于Lucene的全文搜索服务。Solr可以独立运行在Jetty、Tomcat等这些Servlet容器中。
  Solr的作用:
  solr是一个现成的全文检索引擎系统, 放入tomcat下可以独立运行, 对外通过http协议提供全文检索服务(就是对索引和文档的增删改查服务), 在代码中可以通过solrJ(solr的客户端的jar包)来调用solr服务。
  Lucene和solr的区别:
  lucene是一个全文检索引擎工具包, 就是一堆jar包, 它放入tomcat下不能独立运行, 但是我们可以使用lucene来构建全文检索引擎系统;
  solr底层是用lucene来开发的一个全文检索引擎系统, 放入tomcat下就可以独立运行, 对外通过http的形式,提供全文检索服务(索引和文档的增删改查服务)。
DSC0000.png

  在Tomcat容器中部署solr工程的步骤:
  1、下载solr压缩包,下载地址:http://archive.apache.org/dist/lucene/solr/(我这里使用的是solr-4.10.3);
  2、准备好一个干净的Tomcat容器,并配置好JDK;
  3、找到solr解压后的目录,将solr-4.10.3\example\webapps目录下的solr.war包放进Tomcat容器中运行,直接运行的目的是解压该war包,解压好之后关闭Tomcat容器并删除war包(必须要删除war包,否则再次运行时就覆盖了以前配置好的solr服务),开始部署solr服务;
  4、找到solr解压后的目录,将solr-4.10.3\example\lib\ext目录下的所有jar包复制到Tomcat容器下的solr项目中的WEB-INF/lib目录下
  5、为solr服务准备家目录,找打solr解压后的目录,将solr-4.10.3\example目录下的有一个名称为solr的目录直接拷贝到硬盘根目录下,并且命名为solrHome(一般推荐这样做);
  6、开始配置solr服务,找到Tomcat容器中部署的solr项目中的WEB-INF/web.xml文件,进行配置,首先打开<env-entry>标签,并且将刚刚拷贝好的solr的家目录的路径配置进去。
  

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

  7、启动Tomcat容器,并通过http://127.0.0.1:8080/solr地址访问即可,如果看到以下界面则配置成功。
DSC0001.png

  8、 solr服务配置成功之后,就会默认有一个collection1的实例,如果需要的话也可以配置多个,将solrHome目录下的collection1目录拷贝多个并将每个目录下的core.properties配置文件中修改一下即可,记得重启Tomcat容器。
  通过SolrJ操作并访问solr服务中的数据:
  什么是solrj?
  solrj是访问solr服务的Java客户端,提供索引和搜索的请求方法。
DSC0002.png

  创建工程,并引入solrj所需的jar包:
DSC0003.png

  需求一:向solr服务中的collection1实例中添加数据?

DSC0004.gif   

1   //向solr服务器中的collection1实例中添加数据  2     @Test
  3     public void add() throws Exception{
  4         //1、创建与solr服务器的连接
  5         /*
  6          * http://localhost:8080/solr默认连接的是collection1实例
  7          * 如果想连接其他的实例,如collection2、collection3则在连接时必须指定:http://localhost:8080/solr/实例名称
  8          */
  9         SolrServer server = new HttpSolrServer("http://localhost:8080/solr");
  
10         
  
11         //2、创建solr的文档对象并添加数据
  
12         SolrInputDocument document = new SolrInputDocument();
  
13         document.addField("id", "003");
  
14         document.addField("title", "solr");
  
15         
  
16         //3、将文档对象添加到solr服务器
  
17         server.add(document);
  
18         
  
19         //4、提交
  
20         server.commit();
  
21     }
  


  需求二:修改solr服务中collection3实例中的数据?

  

1 //修改solr服务器上collection3实例中的数据  2     @Test
  3     public void update() throws Exception{
  4         //1、连接solr服务器上collection3实例中的数据
  5         SolrServer server = new HttpSolrServer("http://localhost:8080/solr/collection3");
  6         //2、创建solr的文档对象并将数据修改
  7         SolrInputDocument document = new SolrInputDocument();
  8         document.addField("id", "001");
  9         document.addField("title", "博学谷");
  
10         //3、将文档对象添加到solr服务器
  
11         server.add(document);
  
12         //4、提交
  
13         server.commit();
  
14     }
  


  需求三:对solr服务中的数据进行删除操作,根据id删除、删除所有数据?

  

1   //删除solr服务器上collection2实例中的指定数据:  2     @Test
  3     public void delete() throws Exception{
  4         //1、连接solr服务器
  5         SolrServer server = new HttpSolrServer("http://localhost:8080/solr/collection2");
  6         //2、根据id删除数据
  7         server.deleteById("002");
  8         //3、提交
  9         server.commit();
  
10     }
  
11     
  
12     //删除solr服务器上collection1实例中的所有数据:
  
13     @Test
  
14     public void deleteAll() throws Exception{
  
15         //1、连接solr服务器
  
16         SolrServer server = new HttpSolrServer("http://localhost:8080/solr/collection1");
  
17         //2、删除指定实例下的所有数据
  
18         server.deleteByQuery("*:*");
  
19         //3、提交
  
20         server.commit();
  
21     }
  


  需求四:检索solr服务中collection3实例中的全部数据?

  

1   //查询solr服务器上collection3实例中所有的数据:  2     @Test
  3     public void findAll() throws Exception{
  4         //1、连接solr服务器
  5         SolrServer server = new HttpSolrServer("http://localhost:8080/solr/collection3");
  6         //2、创建查询对象
  7         SolrQuery query = new SolrQuery();
  8         //3、给查询对象中设置查询条件
  9         query.setQuery("*:*");
  
10         //4、查询并获取响应
  
11         QueryResponse response = server.query(query);
  
12         //5、从响应中获得结果集
  
13         SolrDocumentList results = response.getResults();
  
14         //6、处理结果集
  
15         //输出结果集的总查询条数
  
16         System.out.println(results.getNumFound());
  
17         for (SolrDocument solrDocument : results) {
  
18             System.out.println("id*************"+solrDocument.get("id"));
  
19             System.out.println("title**********"+solrDocument.get("title"));
  
20             System.out.println("===========================================");
  
21         }
  
22     }
  



运维网声明 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-425918-1-1.html 上篇帖子: 王超元 下篇帖子: 11.SolrCloud集群环境搭建
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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