`

solr创建文件索引代码

    博客分类:
  • solr
 
阅读更多

转自:http://blog.csdn.net/mozheshashou/article/details/28610947

废话就不多说了,直接上代码,其中索引的字段需要自己在配置文件中配置,这个相信不用多说了吧。

 

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[i];
            String path="D:/logs/"+files[i];
            String type="A";
            try {
                if(i%2==0)
                {
                    type="B";
                }
                indexFilesSolr(path,path, a, "filecore",a,"2014-06-26 15:19:06",type,"200"+i);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        
    }
    
    
}

 

分享到:
评论

相关推荐

    跟益达学Solr5之增量索引MySQL数据库表数据

    Solr 是一个流行的开源全文搜索引擎,它允许开发者创建、管理和搜索大规模数据集合。在这个主题“跟益达学Solr5之增量索引MySQL数据库表数据”中,我们将深入探讨如何利用Solr 5来实现对MySQL数据库表数据的增量索引...

    ambari离线安装solr所需文件

    4. **创建自定义服务**:在Ambari中,需要为Solr创建一个自定义服务。这通常涉及到编写XML配置文件(如blueprint、service-definition等),定义Solr的角色、配置和依赖关系。 5. **上传服务定义**:将自定义的Solr...

    SSM+spring-data-solr+solr7.7 全文搜索代码

    8. **项目实战**:`universalSearch`可能包含了实现上述功能的源代码,包括配置文件、Solr的实体类、Repository接口、Service层和Controller层的代码。通过学习这些代码,你可以了解如何在实际项目中集成SSM与Solr,...

    Solr 4.0 源代码实例

    `solrconfig.xml`文件是每个Solr核心的配置文件,它控制着索引的创建、更新和查询行为。这个文件包含了许多重要的设置,如查询解析器、过滤器、索引编写器、缓存策略等。通过实例分析,你可以深入理解这些配置项如何...

    Solr全文索引

    - **代码示例**:创建一个Document对象,填充字段值,然后使用SolrServer.Add方法将其添加到索引;构建SolrQuery,执行Search方法获取结果。 综上所述,"Weiz.Solr"可能是一个类似SolrNet的C#客户端库,用于简化C#...

    solr查询索引

    1. **建立索引**:Solr通过分析和索引文档内容来创建索引,这个过程包括分词、词干提取、停用词过滤等文本预处理步骤。在本例中,虽然没有具体的源代码,但我们可以假设这些库文件如`wstx-asl-3.2.7.jar`(Woodstox ...

    solr in action配套代码和数据

    Solr in Action的配套代码能够帮助读者看到实际的配置文件、Java代码和XML数据,从而更好地理解如何设置和操作Solr实例。 压缩包中的"solr-in-action-master"很可能包含了多个子目录,每个对应书中一个章节或主题。...

    solr简单应用操作的代码部分

    在安装和配置Solr后,我们通常会创建一个名为“collection”的索引空间,这可以通过Solr的管理界面或API完成。例如,我们可以创建一个名为“simple”的集合,用于存储和检索我们的数据。 接下来是数据导入,Solr...

    solr示例(含代码,jar包,文档)

    - **示例代码**:可能包含Java或Python等语言的示例,展示了如何使用Solr API进行索引创建、文档添加、查询操作等。 - **jar包**:Solr的库文件,包括solr-jar和相关依赖,这些jar包是运行和开发Solr应用的基础。 ...

    lucene solr框架代码实例(可直接运行)

    1. **配置友好**:Solr通过XML配置文件定义索引字段和处理规则,简化了设置过程。 2. **Web服务接口**:Solr提供HTTP RESTful API,使得跨平台集成变得简单。 3. **集群支持**:SolrCloud支持分布式索引和搜索,可以...

    solr4.1安装配置

    - 这段代码创建了一个文档并将其添加到索引,然后提交更改。 总结,本文详细介绍了如何在Windows 7环境下安装配置Solr 4.1,包括JDK和Tomcat的安装,Solr的部署,以及IK分词器的集成。同时,我们还展示了如何使用...

    Solr项目源码及solr资源包

    10. **实战演练**:通过这个项目,你可以学习如何创建Solr索引,如何编写Solr查询,如何使用Spring Data Solr进行数据的增删改查,以及如何优化搜索性能。 通过深入研究和实践这个“Solr项目源码及solr资源包”,...

    基于Solr4.9.0的搜索系统:包括Solr索引建立、Solr索引查询DUBBO接口等内容。.zip

    在SpringBoot环境下,通过配置Solr客户端,我们可以便捷地进行索引的创建、更新和删除操作。 SpringBoot以其简化Spring应用程序开发的特性,成为了微服务架构中的热门选择。在这个搜索系统中,SpringBoot作为基础...

    solr4.3源代码二

    例如,你可以查看源代码来学习Solr的查询解析、索引构建、查询执行和结果排序机制,甚至可以创建自定义查询处理器或过滤器。同时,源代码中的模块化设计也能让你了解到Solr是如何通过插件机制实现高度可扩展性的。 ...

    solr同步数据库需要jar包

    这些jar包包含了处理数据库连接、读取数据、创建和更新Solr索引所需的各种类和方法。 首先,我们来了解一下Solr的增量索引。增量索引是Solr中一种优化性能的技术,它只索引自上次索引以来数据库中新增或修改的记录...

    solr的学习

    通过上述内容,我们不仅了解了 Solr 的基本概念、Solr 与 Lucene 的区别,还学习了如何安装和配置 Solr,以及如何使用 Solr 进行索引的创建和搜索。Solr 作为一款企业级的搜索引擎,凭借其强大的功能和灵活性,在...

    solr(solr-9.0.0-src.tgz)源码

    - **索引**:Solr使用Lucene来创建、维护和搜索索引。索引包括倒排索引,允许快速查找包含特定词汇的文档。 - **请求处理**:当请求到达时,Solr使用RequestHandler来解析和处理这些请求,返回结果。 - **配置**...

    php与solr交互扩展库包

    2. 创建索引:构建SolrDocument对象,添加字段和值,然后将其提交到Solr服务进行索引。 3. 查询索引:利用Solr的查询语法构造查询语句,获取匹配的结果集。 4. 更新索引:对已存在的索引进行修改,如增加、删除或...

    solr导航搜索工具+文档+配置代码

    1. SolrCore:Solr的基本工作单元,包含索引、配置文件和请求处理逻辑。 2. Collection:在分布式环境中,SolrCore的集合形式,可以看作是由多个SolrCore组成的逻辑单元。 3. ZooKeeper:负责协调集群状态,管理...

    solr demo

    在这个"solr demo"中,你可以看到如何创建和管理Solr的核心(collection),以及如何设置字段类型和配置文件。 要运行这个例子,首先确保你已经安装了MyEclipse,并且配置了Java开发环境。然后,下载提供的压缩包,...

Global site tag (gtag.js) - Google Analytics