热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

学习笔记:从0开始学习大数据30.solr通过java导入doc,pdf文档建立全文检索

1.eclipse新建maven项目solr,pom.xml加入依赖2在项目下新建类updoctestpackagecom.linbin.solr;importja

1. eclipse 新建maven项目solr,pom.xml 加入依赖

2 在项目下新建类updoctest

package com.linbin.solr;import java.io.File;
import java.io.IOException;
import org.apache.solr.client.solrj.SolrClient;
import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.HttpSolrClient;
import org.apache.solr.client.solrj.request.AbstractUpdateRequest.ACTION;
import org.apache.solr.client.solrj.request.ContentStreamUpdateRequest;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.common.SolrDocument;
import org.apache.solr.common.SolrDocumentList;public class updoctest {public static String solrUrl = "http://centos7:8983/solr/mycore"; public static void main(String[] args) throws Exception {//查询 findIndex1();//删除 deleteIndexById();// 导入doc文档String fileName = "/home/linbin/文档/能工巧匠进校园.doc";String solrId = "能工巧匠进校园.doc";indexFilesSolrCell(solrId, solrId,fileName);}// 查询测试public static void findIndex1() throws IOException, SolrServerException {HttpSolrClient solrClient = new HttpSolrClient.Builder(solrUrl).build(); SolrQuery query = new SolrQuery(); // 创建搜索对象 query.set("q","*:*"); // 设置搜索条件query.setRows(10); //设置每页显示多少条QueryResponse response = solrClient.query(query); //发起搜索请求SolrDocumentList docs = response.getResults(); // 查询结果long cnt = docs.getNumFound(); // 查询结果总数System.out.println("总条数为"+cnt+"条"); for (SolrDocument doc : docs) {// System.out.println(doc);System.out.println("-------------\r\n");System.out.println("id:"+ doc.get("id") + ",autor:"+ doc.get("author") + ",text:"+ doc.get("text"));}solrClient.close();}//删除测试
public static void deleteIndexById() throws IOException, SolrServerException {HttpSolrClient solrClient = new HttpSolrClient.Builder(solrUrl).build(); //全删 //solrClient.deleteByQuery("*:*"); //模糊匹配删除(带有分词效果的删除)solrClient.deleteByQuery("id:solr-word.pdf"); //指定id删除 //solrClient.deleteById("1"); solrClient.commit();}// 导入doc文档测试
public static void indexFilesSolrCell(String fileName, String solrId, String path)throws IOException, SolrServerException{SolrClient solr = new HttpSolrClient.Builder(solrUrl).build();ContentStreamUpdateRequest up = new ContentStreamUpdateRequest("/update/extract");String contentType = getFileContentType(fileName);up.addFile(new File(path), contentType);up.setParam("literal.id", fileName);up.setParam("uprefix", "ignored_");up.setParam("fmap.content", "text");//文件内容up.setAction(ACTION.COMMIT, true, true);solr.request(up);System.out.println("upload ok! \r\n");}//根据文件拓展名获取文件类型
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;}}

2. 在solr的core目录下的solrconfig.xml增加如下内容:

 
     
      true
      ignored_ 

       text
     
 

其中 ignored_ 部分是把读取文件时不需要映射的字段忽略掉

  text  是把读取的fmap.content字段映射为solr的 text字段

3. 修改 managed-schema 文件,增加

 
 

这个是生成一个动态字段,类型为ignored,承接忽略的那些字段

4. 检查 solrconfig.xml

 
 

检查以上路径是否匹配,是相对于建立的mycore路径

5. 在mycore目录下建立lib目录(如果没有)

复制  solr-7.5.0/contrib/extraction/lib下的所有文件 到mycore/lib目录

复制 solr-7.5.0/dist/solr-cell-7.5.0.jar 到mycore/lib目录

6.重新启动solr,如正常启动,再在eclipse 运行第1步建立的java程序

7. 在solr网页查询可以检查到已上传doc文件的索引


推荐阅读
  • Servlet多用户登录时HttpSession会话信息覆盖问题的解决方案
    本文讨论了在Servlet多用户登录时可能出现的HttpSession会话信息覆盖问题,并提供了解决方案。通过分析JSESSIONID的作用机制和编码方式,我们可以得出每个HttpSession对象都是通过客户端发送的唯一JSESSIONID来识别的,因此无需担心会话信息被覆盖的问题。需要注意的是,本文讨论的是多个客户端级别上的多用户登录,而非同一个浏览器级别上的多用户登录。 ... [详细]
  • 本文介绍了解决Netty拆包粘包问题的一种方法——使用特殊结束符。在通讯过程中,客户端和服务器协商定义一个特殊的分隔符号,只要没有发送分隔符号,就代表一条数据没有结束。文章还提供了服务端的示例代码。 ... [详细]
  • 本文介绍了RPC框架Thrift的安装环境变量配置与第一个实例,讲解了RPC的概念以及如何解决跨语言、c++客户端、web服务端、远程调用等需求。Thrift开发方便上手快,性能和稳定性也不错,适合初学者学习和使用。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • 个人学习使用:谨慎参考1Client类importcom.thoughtworks.gauge.Step;importcom.thoughtworks.gauge.T ... [详细]
  • Java在运行已编译完成的类时,是通过java虚拟机来装载和执行的,java虚拟机通过操作系统命令JAVA_HOMEbinjava–option来启 ... [详细]
  • 本文介绍了如何清除Eclipse中SVN用户的设置。首先需要查看使用的SVN接口,然后根据接口类型找到相应的目录并删除相关文件。最后使用SVN更新或提交来应用更改。 ... [详细]
  • 本文介绍了使用cacti监控mssql 2005运行资源情况的操作步骤,包括安装必要的工具和驱动,测试mssql的连接,配置监控脚本等。通过php连接mssql来获取SQL 2005性能计算器的值,实现对mssql的监控。详细的操作步骤和代码请参考附件。 ... [详细]
  • Spring常用注解(绝对经典),全靠这份Java知识点PDF大全
    本文介绍了Spring常用注解和注入bean的注解,包括@Bean、@Autowired、@Inject等,同时提供了一个Java知识点PDF大全的资源链接。其中详细介绍了ColorFactoryBean的使用,以及@Autowired和@Inject的区别和用法。此外,还提到了@Required属性的配置和使用。 ... [详细]
  • 本文讨论了在VMWARE5.1的虚拟服务器Windows Server 2008R2上安装oracle 10g客户端时出现的问题,并提供了解决方法。错误日志显示了异常访问违例,通过分析日志中的问题帧,找到了解决问题的线索。文章详细介绍了解决方法,帮助读者顺利安装oracle 10g客户端。 ... [详细]
  • 项目运行环境配置及可行性分析
    本文介绍了项目运行环境配置的要求,包括Jdk1.8、Tomcat7.0、Mysql、HBuilderX等工具的使用。同时对项目的技术可行性、操作可行性、经济可行性、时间可行性和法律可行性进行了分析。通过对数据库的设计和功能模块的设计,确保系统的完整性和安全性。在系统登录、系统功能模块、管理员功能模块等方面进行了详细的介绍和展示。最后提供了JAVA毕设帮助、指导、源码分享和调试部署的服务。 ... [详细]
  • 初探PLC 的ST 语言转换成C++ 的方法
    自动控制软件绕不开ST(StructureText)语言。它是IEC61131-3标准中唯一的一个高级语言。目前,大多数PLC产品支持ST ... [详细]
  • Maven构建Hadoop,
    Maven构建Hadoop工程阅读目录序Maven安装构建示例下载系列索引 序  上一篇,我们编写了第一个MapReduce,并且成功的运行了Job,Hadoop1.x是通过ant ... [详细]
  • 使用python输入PDF编号自动下载freepatentsonline.com的文档#!usrbinenvpython3#codingutf-8#Version:python3. ... [详细]
author-avatar
聂依依mma
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有