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

[经验分享] solr创建文件索引代码

[复制链接]
累计签到:2 天
连续签到:1 天
发表于 2015-11-12 08:12:25 | 显示全部楼层 |阅读模式
  废话就不多说了,直接上代码,其中索引的字段需要自己在配置文件中配置,这个相信不用多说了吧。
  





package com.search.commons;
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.ResourceBundle;
import org.apache.log4j.Logger;
import org.apache.solr.client.solrj.SolrServer;
import org.apache.solr.client.solrj.impl.HttpSolrServer;
import org.apache.solr.client.solrj.request.AbstractUpdateRequest;
import org.apache.solr.client.solrj.request.ContentStreamUpdateRequest;

/**
* =用sql语句查询各个类别的文件(环评批复,报告书。。。),把路径存在list里面,在同一调用不同的core生成各个的索引,
* 查询结合类SolrJSearcheDemo即可。
* @author Administrator
*
*/
public  class TestCreate {
private static Logger log = Logger.getLogger(TestCreate.class);
/**
* 生成文件索引方法
* @param id
* @param fileurl
* @param filename
* @param homename
* @param mytitle
* @param savetime
* @param myindextype
* @throws Exception
*/
public static void indexFilesSolr(String id,String fileurl,String filename,String homename,String mytitle,String savetime,String myindextype,String myyears) throws Exception
{
SolrServer solr=new HttpSolrServer(getServerurl()+homename);
ContentStreamUpdateRequest up=new ContentStreamUpdateRequest("/update/extract");
String contenttype=getFileContentType(filename);
if(!contenttype.equals("othertype"))
{
File file=new File(fileurl)    ;
if(file.exists()){
log.info("开始建索引:"+fileurl);
up.addFile(file, contenttype);
up.setParam("literal.id", id);
up.setParam("literal.mytitle", mytitle);
up.setParam("literal.mytime", dataTurntoLong(savetime));
up.setParam("literal.myindextype", myindextype);
up.setParam("literal.myyears", myyears);
up.setParam("fmap.content", "content");
up.setAction(AbstractUpdateRequest.ACTION.COMMIT, true, true);
solr.request(up);
log.info("结束建索引:"+fileurl);
}else
{
//    log.info("文件不存在");
}
}
}
/**
* 获得毫秒数
* @param date
* @return
*/
public static String dataTurntoLong(String date) {      
Date d = null;
try {
d = new SimpleDateFormat("yyyyMMddHHmmss").parse(date);
} catch (ParseException e) {
e.printStackTrace();
}
return String.valueOf(d.getTime());
}
/**
* 获取系统路径
* @return
*/
public static String getServerurl()
{
ResourceBundle res=    ResourceBundle.getBundle("solrserver");
return res.getString("serverurl");
}
/**
* 根据文件名获取文件的ContentType类型
* @param filename
* @return
*/
public static String getFileContentType(String filename)
{
String contentType="";
String prefix=filename.substring(filename.lastIndexOf(".")+1);
if(prefix.equals("xlsx"))
{
contentType="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
}else if(prefix.equals("pdf"))
{
contentType="application/pdf";
}else if(prefix.equals("doc"))
{
contentType="application/msword";
}else if(prefix.equals("txt"))
{
contentType="text/plain";
}else if(prefix.equals("xls"))
{
contentType="application/vnd.ms-excel";
}else if(prefix.equals("docx"))
{
contentType="application/vnd.openxmlformats-officedocument.wordprocessingml.document";
}else if(prefix.equals("ppt"))
{
contentType="application/vnd.ms-powerpoint";
}else if(prefix.equals("pptx"))
{
contentType="application/vnd.openxmlformats-officedocument.presentationml.presentation";
}
else
{
contentType="othertype";
}
return contentType;
}
/**
* 返回文件ContentType
* @param paths
* @return
*/
public static String getContentType(String paths)
{
Path path = Paths.get(paths);
String contentType = null;
try {
contentType = Files.probeContentType(path);
} catch (IOException e) {
e.printStackTrace();
}
log.info("文件类型 : " + contentType);
return contentType;
}
public static void main(String args[])
{
File file=new File("D:\\logs");
String files[]=file.list();
for(int i=0;i<files.length;i++)
{
String a=files;
String path=&quot;D:/logs/&quot;+files;
String type=&quot;A&quot;;
try {
if(i%2==0)
{
type=&quot;B&quot;;
}
indexFilesSolr(path,path, a, &quot;filecore&quot;,a,&quot;2014-06-26 15:19:06&quot;,type,&quot;200&quot;+i);
} catch (Exception e) {
e.printStackTrace();
}
}
}
}




     
  

版权声明:本文为博主原创文章,未经博主允许不得转载。

运维网声明 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-138095-1-1.html 上篇帖子: 大数据——nutch1.8+solr 4 配置过程+ikanalayzer2012 中文分词器 下篇帖子: solr 启动慢原因分析一则
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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