solr使用.docx
- 文档编号:8161788
- 上传时间:2023-01-29
- 格式:DOCX
- 页数:10
- 大小:19.13KB
solr使用.docx
《solr使用.docx》由会员分享,可在线阅读,更多相关《solr使用.docx(10页珍藏版)》请在冰豆网上搜索。
solr使用
Solr1.4.1配置和SolrJ的用法
一、Solr基本安装和配置
imageLenssamples
0;position: fixed;"> both;"/> //www.script-tooriginalarticlepage
1,使用slorj的清除原有的索引.或者手动删除。
2,编写代码,将lucene建立的索引(1G左右,874400条记录),按照比例通过solrj分发到三台solr(shard)服务器上,代码如下:
publicclassIndexCreate{
privatestaticCommonsHttpSolrServerserver;
publicCommonsHttpSolrServergetServer(StringhostUrl){
CommonsHttpSolrServerserver=null;
try{
server=newCommonsHttpSolrServer(hostUrl);
server.setConnectionTimeout(100);
server.setDefaultMaxConnectionsPerHost(100);
server.setMaxTotalConnections(100);
}catch(IOExceptione){
System.out.println("请检查tomcat服务器或端口是否开启!
");
}
returnserver;
}
@SuppressWarnings("deprecation")
publicvoidreaderHostCreate(String[]hosts)throwsCorruptIndexException,IOException{
IndexReaderreader=IndexReader.open("c:
\\index");
System.out.println("总记录数:
"+reader.numDocs());
inthostNum=hosts.length;
intlengh=reader.numDocs()/hostNum;//根据主机数平分索引长度
intj=reader.numDocs()%hostNum;//取余
for(inti=0;i longstartTime=newDate().getTime(); Stringurl=hosts[i].substring(hosts[i].indexOf("//")+2,hosts[i].lastIndexOf("/")); System.out.println("第"+(i+1)+"次,在主机: "+url+"上创建索引,创建时间"+newDate()); if(i==(hosts.length-1)){ hostlist(reader,lengh*i,lengh*(i+1)+j,hosts[i]); }else{ hostlist(reader,lengh*i,lengh*(i+1),hosts[i]); } System.out.println("结束时间"+newDate()); longendTime=newDate().getTime(); longms=(endTime-startTime)%60000-(((endTime-startTime)%60000)/1000)*1000; System.out.println("本次索引创建完毕,一共用了"+(endTime-startTime)/60000+"分"+ ""+((endTime-startTime)%60000)/1000+"秒"+ms+"毫秒"); System.out.println("****************************"); } reader.close(); } publicvoidcreateIndex(List try{ server.addBeans(beans); mit(); }catch(SolrServerExceptione){ e.printStackTrace(); }catch(IOExceptione){ e.printStackTrace(); } } publicstaticvoidmain(String[]args)throwsCorruptIndexException,IOException{ IndexCreateas=newIndexCreate(); String[]hosts=newString[]{"http: //192.168.169.121: 9888/solr","http: //192.168.169.121: 9088/solr","http: //192.168.169.48: 9888/solr"}; longstartTime=newDate().getTime(); as.readerHostCreate(hosts); longendTime=newDate().getTime(); System.out.println("-------------------"); longms=(endTime-startTime)%60000-(((endTime-startTime)%60000)/1000)*1000; System.out.println("全部索引创建完毕,一共用了"+(endTime-startTime)/60000+"分"+ ""+((endTime-startTime)%60000)/1000+"秒"+ms+"毫秒"); } } JavaBean类BookIndex.java代码如下: 说明变量名与sechma.xml中的配置要相同.注意: 不能使用score这个变量或者字段,与slor配置冲突,报exception。 importorg.apache.solr.client.solrj.beans.Field; publicclassBookIndex{ @Field privateStringzjid; @Field privateStringtitle; @Field privateStringssid; @Field privateStringdxid; @Field privateStringbookname; @Field privateStringauthor; @Field privateStringpublisher; @Field privateStringpubdate; @Field privateStringyear; @Field privateStringfenlei; @Field privateStringscore1; @Field privateStringisbn; @Field privateStringfenleiurl; @Field privateStringmulu; @Field privateStringisp; @Field privateStringiep; publicgetters();//get方法 publicsetters();//set方法 } 3,同时开启四台服务器,运行上面代码: 4,打开IE查询 打开: http: //localhost/solr 打开: http: //localhost: 9888/solr 打开http: //localhost: 9008/solr 打开http: //192.168.168.48: 9888/solr 四、Solr的Multicore(分片)配置 body{background: #eee;margin: 0;padding: 0} .example{background: #FFF;width: 800px;border: 1px#000solid;margin: 20pxauto;padding: 15px;-moz-border-radius: 3px;-webkit-border-radius: 3px} .exampleimg{margin: 22px} } 六、一个简单的web引用: 首先说明的是索引来源,是根据已有的lucene索引上开发的,又因为lucene的索引直接用solrJ应用效果不好,会出现很多问题,找不到类似的解决办法,比如全字段查询,和高亮分组等,和多级索引目录…。 但用solrJ创建的索引不存在类似的问题. 大致的思路是,读取已有的lucene索引,再用solrJ创建索引并分发到多台机器上,最后再做开发. 第一步: 读取lucene的多级索引目录,用solrJ创建和分发索引; 需注意的是: 要加大虚拟机的内存,因为采用的map做为缓存,理论上虚拟机的内存大,map的存储的索引文档数也就多.主要是针对内存溢出. 代码: packageorg.readerIndex; importorg.apache.solr.client.solrj.beans.Field; publicclassBookIndex2{ @Field privateStringzjid; @Field privateStringzhangjie; @Field privateStringssid; @Field privateStringqwpos; @Field privateStringpublishDate; @Field privateStringmulu; @Field privateStringfenleiurl; @Field privateStringfenlei; @Field privateStringdxid; @Field privateStringauthor; @Field privateStringaddress; @Field privateStringbookname; publicStringgetZjid(){ returnzjid; ………………………………………… } packageorg.readerIndex; importjava.io.File; importjava.io.IOException; importjava.text.SimpleDateFormat; importjava.util.ArrayList; importjava.util.Date; importjava.util.List; importorg.apache.lucene.document.Document; importorg.apache.lucene.index.CorruptIndexException; importorg.apache.lucene.index.IndexReader; importorg.apache.lucene.store.LockObtainFailedException; importorg.apache.solr.client.solrj.SolrServerException; importorg.apache.solr.client.solrj.impl.CommonsHttpSolrServer; publicclassReaderIndex{ publicCommonsHttpSolrServergetServer(StringhostUrl){ CommonsHttpSolrServerserver=null; try{ server=newCommonsHttpSolrServer(hostUrl); server.setConnectionTimeout(100); server.setDefaultMaxConnectionsPerHost(100); server.setMaxTotalConnections(100); }catch(IOExceptione){ System.out.println("请检查tomcat服务器或端口是否开启! "); } returnserver; } publicvoidindexDocuements(Stringpath,String[]hostUrls)throwsCorruptIndexException,LockObtainFailedException,IOException{ FilepareFile=newFile(path); List getFile(pareFile,list);//递归方法得到路径保存到list中 System.out.println("***程序一共递归到"+list.size()+"个索引目录***"); intarevageSize=list.size()/hostUrls.length;//根据主机数平分目录 intremainSize=list.size()%hostUrls.length;//取余 SimpleDateFormatsdf=newSimpleDateFormat("yyyy-MM-ddHH: mm: ss"); for(inti=0;i DatestartDate=newDate(); Stringurl=hostUrls[i].substring(hostUrls[i].indexOf("//")+2,hostUrls[i].lastIndexOf("/")); System.out.println("第"+(i+1)+"次,在主机: "+url+"上创建索引,创建时间"+sdf.format(startDate)); if(i==(hostUrls.length-1)){ list(list,arevageSize*i,arevageSize*(i+1)+remainSize,hostUrls[i]); /* */ (function($){ $.fn.imageLens=function(options){ vardefaults={ lensSize: 100, borderSize: 4, borderColor: "#888" }; varoptions=$.extend(defaults,options); varlensStyle="background-position: 0px0px;width: "+String(options.lensSize)+"px;height: "+String(options.lensSize) +"px;float: left;display: none;border-radius: "+String(options.lensSize/2+options.borderSize) +"px;border: "+String(options.borderSize)+"pxsolid"+options.borderColor +";background-repeat: no-repeat;position: absolute;"; returnthis.each(function(){ obj=$(this); varoffset=$(this).offset(); //Creatinglens vartarget=$("
vartargetSize=target.size();
//Calculatingactualsizeofimage
varimageSrc=options.imageSrc?
options.imageSrc:
$(this).attr("src");
varimageTag=" none;'src='"+imageSrc+"'/>"; varwidthRatio=0; varheightRatio=0; $(imageTag).load(function(){ widthRatio=$(this).width()/obj.width(); heightRatio=$(this).height()/obj.height(); }).appendTo($(this).parent()); target.css({backgroundImage: "url('"+imageSrc+"')"}); target.mousemove(setPosition); $(this).mousemove(setPosition); functionsetPosition(e){ varleftPos=parseInt(e.pageX-offset.left); vartopPos=parseInt(e.pageY-offset.top); if(leftPos<0||topPos<0||leftPos>obj.width()||topPos>obj.height()){ target.hide(); } else{ target.show(); leftPos=String(((e.pageX-offset.left)*widthRatio-target.width()/2)*(-1)); topPos=String(((e.pageY-offset.top)*heightRatio-target.height()/2)*(-1)); target.css({backgroundPosition: leftPos+'px'+topPos+'px'}); leftPos=String(e.pageX-target.width()/2); topPos=String(e.pageY-target.height()/2); target.css({left: leftPos+'px',top: topPos+'px'}); } } }); }; })(jQuery);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- solr 使用