solr使用.docx

上传人:b****5 文档编号:8161788 上传时间:2023-01-29 格式:DOCX 页数:10 大小:19.13KB
下载 相关 举报
solr使用.docx_第1页
第1页 / 共10页
solr使用.docx_第2页
第2页 / 共10页
solr使用.docx_第3页
第3页 / 共10页
solr使用.docx_第4页
第4页 / 共10页
solr使用.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

solr使用.docx

《solr使用.docx》由会员分享,可在线阅读,更多相关《solr使用.docx(10页珍藏版)》请在冰豆网上搜索。

solr使用.docx

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(Listbeans,StringhostUrl,CommonsHttpSolrServerserver){

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);

Listlist=newArrayList();

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=$(" ").appendTo($(this).parent());

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);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1