




已阅读5页,还剩25页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Solr入门之SolrServer实例化方式随着solr版本的不断升级, 差异越来越大, 从以前的 solr1.2 到现在的 solr4.3, 无论是类还是功能都有很大的变换, 为了能及时跟上新版本的步伐, 在此将新版本的使用做一个简单的入门说明:Solr3.6版本SolrServer实例化类型有httpClient,和本地化,如果Solr服务器不在本地就用httpClient,在本地就用EmbeddedSolrServerSolrServer可以操作索引,包括更新删除查询等操作以下是httpClient实例化方式,需要tomcat运行Solr服务1、ConcurrentUpdateSolrServer实例化SolrServer,该类实例化多用于更新删除索引操作ConcurrentUpdateSolrServer(String solrServerUrl,intqueueSize,intthreadCount)solrServerUrl是Solr服务器的地址,queueSize缓冲区大小threadCount 后台线程数2、HttpSolrServer 实例化SolrServer,该类实例化多用于查询操作HttpSolrServer(String baseURL)baseURL是Solr的服务器地址3、LBHttpSolrServer实例化SolrServer,用于有多个Solr服务器,负载均衡LBHttpSolrServer(String. solrServerUrls)solrServerUrls是多个Solr的服务器地址,用,号分隔以下是本地实例化,即项目包含Solr服务,不需要tomcat运行Solr服务EmbeddedSolrServerprivatestaticCoreContainer.Initializer initializer =null;privatestaticCoreContainer coreContainer =null;privatestaticEmbeddedSolrServer server =null;statictrySystem.setProperty(solr.solr.home,D:/test/solrcore/core0);initializer =newCoreContainer.Initializer();coreContainer = initializer.initialize();server =newEmbeddedSolrServer(coreContainer,);catch(Exception e) e.printStackTrace();Solr搜索分页1、SolrQuery类,此类有个方法setStart(10),当设置为10时,表示从第11记录取,默认取值为0,就是从第,1条开始2、setRows(10),表示取出的记录数,默认就是10条SolrQuery query =newSolrQuery(url_content:百色学院);query.setStart(10);query.setRows(10);Solr搜索高亮1、SolrQuery类,此类有个方法setHighlight(true),当设置为true时,表示开启了高亮2、高亮设置,添加html,和设置高亮的Field/以下给两个字段开启了高亮,分别是name,description,query.addHighlightField(name);query.addHighlightField(description);/以下两个方法主要是在高亮的关键字前后加上html代码query.setHighlightSimplePre();query.setHighlightSimplePost();3、获取高亮内容Map map = response.getHighlighting();Map的Key为document的Id,即你在schema.xml中设置的Id,Value为该Id对应的document的值,请听下面分 解,Value也为一个Map,该Map的Key为fieldName,Value为List,这个List里面的内容该文 档的高亮字段。所以当做逻辑处理的时候,只要按照这个层次,依次把东西给取出来即可,如果取出来的东西为空,则用QueryResponse中的SolrDocument的getFieldValue(filedName)的值。SolrJ使用HttpSolrServerHttpSolrServer使用HTTPClient 和solr服务器进行通信。String url =http:/localhost:8080/solr;SolrServer server = new HttpSolrServer(url);HttpSolrServer是线程安全的,建议重复使用HttpSolrServer 实例。HttpSorlrServer 允许设置链接属性String url = http:/localhost:8080/solr;HttpSolrServer server = new HttpSolrServer( url );server.setSoTimeout(1000); / socket read timeoutserver.setConnectionTimeout(100);server.setDefaultMaxConnectionsPerHost(100);server.setMaxTotalConnections(100);server.setFollowRedirects(false); / defaults to false/ allowCompression defaults to false./ Server side must support gzip or deflate for this to have any effect. server.setAllowCompression(true);server.setMaxRetries(1); / defaults to 0. 1 not recommended.EmbeddedSolrServerEmbeddedSorrServer提供和HttpSorlrServer相同的接口,它不需要http连接/注意,下面的属性也是可以在jvm参数里面设置的System.setProperty(solr.solr.home, /home/shalinsmangar/work/oss/branch-1.3/example/solr);CoreContainer.Initializer initializer = new CoreContainer.Initializer();CoreContainer coreContainer = initializer.initialize();EmbeddedSolrServer server = new EmbeddedSolrServer(coreContainer, );如果你想要使用 Multicore 特性,那么你可以这样使用:File home = new File( getSolrHome() );File f = new File( home, solr.xml );multicore.load( getSolrHome(), f );EmbeddedSolrServer server = new EmbeddedSolrServer( multicore, core name as defined in solr.xml );如果你在你的项目中内嵌solr服务,这将是一个不错的选择。无论你能否使用http,它都提供相同的接口用法solrj 被设计成一个可扩展的框架,用以向solr服务器提交请求,并接收回应。我们已经将最通用的一些命令封装在了solrServer类中了。Adding Data to Solr添加DOC到Solr索引首先需要获得一个server的实例,SolrServer server = getSolrServer();如果,你使用的是一个远程的solrServer的话呢,你或许会这样来实现getSolrServer()这个方法:public SolrServer getSolrServer() return new HttpSolrServer(url); 如果,你使用的是一个本地的solrServer的话,你或许会这样来实现getSolrServer()方法:public SolrServer getSolrServer() /the instance can be reused return new EmbeddedSolrServer(); 如果,你在添加数据之前,想清空现有的索引,那么你可以这么做:server.deleteByQuery( *:* );/ delete everything!构造一个documentSolrInputDocument doc1 = new SolrInputDocument();doc1.addField( id, id1, 1.0f );doc1.addField( name, doc1, 1.0f );doc1.addField( price, 10 );构造另外一个文档,每个文档都能够被独自地提交给solr,但是,批量提交是更高效的。每一个对SolrServer的请求都是http请求,当然对于EmbeddedSolrServer来说,是不一样的。SolrInputDocument doc2 =newSolrInputDocument();doc2.addField(id, id2, 1.0f);doc2.addField(name, doc2, 1.0f);doc2.addField(price, 20 );构造一个文档的集合Collection docs =newArrayList();docs.add( doc1 );docs.add( doc2 );将documents提交给solrserver.add( docs );提交一个mit();在添加完documents后,立即做一个commit,你可以这样来写你的程序:UpdateRequest req =newUpdateRequest();req.setAction( UpdateRequest.ACTION.COMMIT,false,false);req.add( docs );UpdateResponse rsp= cess( server );Directly adding POJOs to Solr使用 java 注释创建java bean。Field,可以被用在域上,或者是setter方法上。如果一个域的名称跟bean的名称是不一样的,那么在java注释中填写别名,具体的,可以参照下面的域categoriesimportorg.apache.solr.client.solrj.beans.Field;publicclassItem FieldString id;Field(cat)String categories;FieldListfeatures;java注释也可以使用在setter方法上,如下面的例子:Field(cat)publicvoidsetCategory(String c)this.categories =c;创建bean实例Item item =newItem();item.id= one;item.categories=newString aaa, bbb, ccc ;添加给Solrserver.addBean(item);将多个bean提交给solrListbeans ;/add Item objects to the listserver.addBeans(beans);注意: 你可以重复使用SolrServer,这样可以提高性能。Reading Data from Solr搜索获取solrserver的实例SolrServer server = getSolrServer();构造 SolrQuerySolrQuery query =newSolrQuery();query.setQuery(*:*);query.addSortField(price, SolrQuery.ORDER.asc );向服务器发出查询请求QueryResponse rsp = server.query( query );获取结果。SolrDocumentList docs = rsp.getResults();想要以javabean的方式获取结果,那么这个javabean必须像之前的例子一样有java注释List beans = rsp.getBeans(Item.class);高级用法solrJ 提供了一组API,来帮助我们创建查询,下面是一个faceted query的例子。SolrServer server =getSolrServer();SolrQuery solrQuery=newSolrQuery().setQuery(ipod).setFacet(true).setFacetMinCount(1).setFacetLimit(8).addFacetField(category).addFacetField(inStock);QueryResponse rsp= server.query(solrQuery);所有的 setter/add 方法都是返回它自己本身的实例,所以就像你所看到的一样,上面的用法是链式的posted 2012-05-24 17:38 浪浪仔 阅读(99) 评论(0)编辑Solr入门之SolrServer实例化方式Solr3.6版本SolrServer实例化类型有httpClient,和本地化,如果Solr服务器不在本地就用httpClient,在本地就用EmbeddedSolrServerSolrServer可以操作索引,包括更新删除查询等操作以下是httpClient实例化方式,需要tomcat运行Solr服务1、ConcurrentUpdateSolrServer实例化SolrServer,该类实例化多用于更新删除索引操作ConcurrentUpdateSolrServer(String solrServerUrl, int queueSize, int threadCount)solrServerUrl是Solr服务器的地址,queueSize缓冲区大小threadCount 后
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 地理高考试题来源及答案
- 2025年中国纳米液体玻璃项目创业投资方案
- 2025租赁合同:房屋及土地租赁协议
- 2025普通高校毕业生短期合同就业协议
- 老公说要签婚前协议书
- 剪板工考试试题及答案
- 农村分家分户协议书
- 家庭调解协议书
- 2025年碳中和碳达峰项目可行性分析报告
- 深圳协议书车被骗
- 台球厅吸引人活动方案
- 《人工智能语言与伦理》章节测试题及答案
- 免疫系统趣味讲解
- 2025-2026学年湘科版(2024)小学科学三年级上册(全册)教学设计(附目录P208)
- 2025年产业规模预测新能源产业发展趋势深度分析方案
- 建筑垃圾现场分拣作业流程方案
- 储能电池产品售后服务与维保方案
- 银行监控中心保密协议书
- 架空输电线路线路检测质量缺陷及预控措施
- 胃肠镜检查课件
- 8 回忆鲁迅先生(课件)语文统编版2024八年级上册
评论
0/150
提交评论