博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
跟益达学Solr5之索引文件夹下所有文件
阅读量:6594 次
发布时间:2019-06-24

本文共 3648 字,大约阅读时间需要 12 分钟。

   上篇我们学习了如何从PDF文件中提取文本进行索引,今天我们来学习如何对一个文件夹下所有文本文件进行索引。废话不多说,我直接贴相关配置:

       首先依然是在solrconfig.xml配置文件中配置dataimport请求处理器,并指定data-config.xml配置文件加载路径:

Xml代码  
  1. <requestHandler name="/dataimport" class="solr.DataImportHandler">  
  2.     <lst name="defaults">  
  3.       <str name="config">data-config.xml</str>  
  4.     </lst>  
  5. </requestHandler>  

    指定依赖的jar包加载路径:

Xml代码  
  1. <dataDir>C:\solr_home\core1\data</dataDir>  
  2. <lib dir="./lib" regex=".*\.jar"/>  

    依赖的jar包如图:

 然后重点是配置我们的data-config.xml了,配置内容如下:

Xml代码  
  1. <dataConfig>  
  2.     <dataSource name="fileDataSource" type="FileDataSource" />  
  3.     <!--  
  4.     <document>  
  5.         <entity name="tika-test" processor="TikaEntityProcessor"  
  6.                 url="C:/docs/solr-word.pdf" format="text">  
  7.                 <field column="Author" name="author" meta="true"/>  
  8.                 <field column="title" name="title" meta="true"/>  
  9.                 <field column="text" name="text"/>  
  10.         </entity>  
  11.     </document>  
  12.     -->  
  13.     <dataSource name="urlDataSource" type="BinURLDataSource" />  
  14.     <document>  
  15.             <entity name="files" dataSource="null" rootEntity="false"  
  16.             processor="FileListEntityProcessor"  
  17.             baseDir="c:/docs" fileName=".*\.(doc)|(pdf)|(docx)|(txt)"  
  18.             onError="skip"  
  19.             recursive="true">  
  20.                 <field column="fileAbsolutePath" name="filePath" />  
  21.                 <field column="fileSize" name="size" />  
  22.                 <field column="fileLastModified" name="lastModified" />  
  23.                    
  24.                 <entity processor="PlainTextEntityProcessor" name="txtfile" url="${files.fileAbsolutePath}" dataSource="fileDataSource">  
  25.                     <field column="plainText" name="text"/>  
  26.                 </entity>  
  27.         </entity>  
  28.     </document>   
  29. </dataConfig>  

    baseDir表示获取这个文件夹下的文件,fileName支持使用正则表达式来过滤一些baseDir文件夹下你不想被索引的文件,processor是用来生成Entity的处理器,而不同Entity默认会生成不同的Field域。FileListEntityProcessor处理器会根据指定的文件夹生成多个Entity,且生成的Entity会包含fileAbsolutePathfileSizefileLastModifiedfileName这几个域,recursive表示是否递归查找子目录下的文件,onError表示当出现异常时是否跳过这个条件不处理。

 然后我们需要在schema.xml中定义域,

Xml代码  
  1. <field name="userName" type="string" indexed="true" stored="true" omitNorms="true"/>    
  2.    <field name="sex" type="boolean" indexed="true" stored="true" omitNorms="true"/>    
  3.    <field name="birth" type="cndate" indexed="true" stored="true" omitNorms="true"/>   
  4.    <field name="salary" type="int" indexed="true" stored="true" omitNorms="true"/>  
  5.   
  6.    <field name="text" type="text_ik" indexed="true" stored="true" omitNorms="true" multiValued="false"/>  
  7.    <field name="author" type="string" indexed="true" stored="true" />  
  8.    <field name="title" type="string" indexed="true" stored="true" />  
  9.   
  10.    <field name="fileName" type="string" indexed="true" stored="true" />  
  11.    <field name="filePath" type="string" indexed="true" stored="true" required="true" multiValued="false" />  
  12.    <field name="size" type="long" indexed="true" stored="true" />  
  13.    <field name="lastModified" type="cndate" indexed="true" stored="true" />  
  14.    <!-- Only remove the "id" field if you have a very good reason to. While not strictly  
  15.      required, it is highly recommended. A <uniqueKey> is present in almost all Solr   
  16.      installations. See the <uniqueKey> declaration below where <uniqueKey> is set to "id".  
  17.      Do NOT change the type and apply index-time analysis to the <uniqueKey> as it will likely   
  18.      make routing in SolrCloud and document replacement in general fail. Limited _query_ time  
  19.      analysis is possible as long as the indexing process is guaranteed to index the term  
  20.      in a compatible way. Any analysis applied to the <uniqueKey> should _not_ produce multiple  
  21.      tokens  
  22.    -->     
  23.    <field name="id" type="string" indexed="true" stored="true" required="false" multiValued="false" />   

 到此,配置工作就完毕了,在C:/docs目录下准备几个txt文件用于测试,注意,txt文件编码请保证是UTF-8编码,默认txt文件的编码是GBK,这是很多小白容易犯的错误,特此提醒!!!!!!

 然后重启你的tomcat,执行索引导入,如图:
 
 照例,切换到Query菜单进行查询测试,如图:
 OK,大功告成!本篇博客示例配置文件以及测试用的txt文件我待会儿会上传到底下附件(由于jar包体积太大,附件里不会包含jar包,包含完整jar的,我会上传到我的百度网盘)。

  百度网盘下载地址:

 

  如果你还有什么问题请加我Q-Q:7-3-6-0-3-1-3-0-5,

或者加裙

一起交流学习!

转载:http://iamyida.iteye.com/blog/2214905

你可能感兴趣的文章
Citrix服务器虚拟化之二十九 XenApp 6.5发布服务器上的应用程序
查看>>
工作的准备:atoi,itoa,strcpy,memcpy,strcmp,二分查找,strcat
查看>>
Android 在闹钟开机时,如何解决开机动画没有播完就进入Launcher M
查看>>
2014第11周三
查看>>
jQuery File Upload跨域上传
查看>>
重构第27天 去除上帝类(Remove God Classes)
查看>>
用 Hexo + Next + GitHubPages 搭建漂亮的免费博客
查看>>
近期暴涨的BCH前景利好还是利空?未来能否撼动龙头老大的地位?
查看>>
少侠,留步,图片预览术
查看>>
304与缓存
查看>>
前端面试题-display:none和visibility:hidden的区别
查看>>
ES6小记
查看>>
Vue.js源码学习三 —— 事件 Event 学习
查看>>
vscode编辑器
查看>>
nuxt element-ui 上cdn
查看>>
利用K8S技术栈打造个人私有云(连载之:K8S环境理解和练手)
查看>>
学习笔记CB004:提问、检索、回答、NLPIR
查看>>
Android性能优化之UI实战
查看>>
Facebook Docusaurus 中文文档 siteConfig.js 详解
查看>>
iMooc-张鑫旭 CSS
查看>>