跟益达学Solr5之索引文件夹下所有文件

   上篇我们学习了如何从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的,我会上传到我的百度网盘)。

  百度网盘下载地址:solr_home.rar

 

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

或者加裙
一起交流学习!

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

时间: 2024-08-18 04:29:39

跟益达学Solr5之索引文件夹下所有文件的相关文章

跟益达学Solr5之索引网络上远程文件

       我们的文件有时候不在本地,可能是在网络上,这时候我们该如何对其进行索引呢?当然你可以先通过爬虫把它抓取下来保存到本地硬盘,然后通过上篇博客介绍的方式对其进行索引,其实Solr内置了URLDataSource,支持直接获取远程资源进行索引的,下面就详细介绍该如何配置实现.废话不多说,我直接贴相应的配置文件:  solrconfig.xml配置文件基本没什么变化,依赖的jar请从上篇博客里获取,  关键点是dataSource必须是urlDataSource类型才能加载远程资源文件,u

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

   Solr5中如何增量索引MySQL数据库表中的数据,这个问题之前有某个童鞋问过我,今天午休时间就腾空更新篇博客,希望能帮助到你们.        为了测试方便,我首先从京东网站弄了点测试数据,如图:    这里要声明下,我不是在给京东商城打广告哈,仅仅是随便找个网站弄点测试数据,这部分工作全是我无聊手动插入MySQL数据库中的,如图:  建表SQL以及测试数据,我待会儿会上传到底下的附件里.然后你需要在solrconfig.xml配置文件中启用全量导入和增量导入请求处理器,如图:  然后分

跟益达学Solr5之从MySQL数据库导入数据并索引

  最近有小伙伴跟我抱怨说:益达,最近博客更新的有点慢呐.其实不是我变懒了,我是不想因为数量而降低了博客的质量,我需要抱着对你们负责的态度来写每一篇博客,绝不能含糊啊,所以,还望大家多多包涵呐. 今天群里一朋友问我Solr如何对数据库表里的数据进行索引,为此,今晚特地更新此篇博客,这里我以Solr当前最新版本5.1.0,数据库MySQL为例进行讲解说明. 首先我们需要准备一张测试表,如图:      测试表创建好了之后,我们需要让表里插入几条测试数据,如图:  然后需要把E:\solr-5.1.

跟益达学Solr5之批量索引JSON数据

     假定你有这样一堆JSON数据,   Json代码   [     {"id":"1", "name":"Red Lobster", "city":"San Francisco, CA", "type":"Sit-down Chain", "state":"California", "tag

跟益达学Solr5之使用Tomcat部署Solr

  最近忙着面试以及生活琐事把时间都霸占了,博客拖了4天没更新了,让各位久等了,望多多包涵!不过还好,工作已经敲定了,终于可以安心的学习Solr并分享我学习的点点滴滴啦!         上回我们在Jetty下部署了,不过我想小伙伴们使用Tomcat还是要多点,所以这回我们就来试试把Solr5部署到Tomcat下,这里以Win7 64bit Tomcat7.0.55为例,linux环境下同理,没太大区别:         首先你要去Solr官网下载Solr5.x的zip压缩包,至于怎么下载我这里

java实现读取、删除文件夹下的文件

  本文给大家分享的是java实现读取.删除文件夹下的文件,其中File.delete()用于删除"某个文件或者空目录"!所以要删除某个目录及其中的所有文件和子目录,要进行递归删除,有需要的小伙伴可以参考下. java实现读取.删除文件夹下的文件 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43

百度开放云的bos存储,同一文件夹下的文件有个数限制么

问题描述 百度开放云的bos存储,同一文件夹下的文件有个数限制么 10C 如题:百度开放云的bos存储,同一文件夹下的文件有个数限制么 解决方案 没有没有没有没有........................ 解决方案二: 请参考百度提供的开发人员手册

文件读取-Android jni c++ 如何读取jni文件夹下的文件?

问题描述 Android jni c++ 如何读取jni文件夹下的文件? 在一个jni工程中,jni文件夹的结构如下: jni |--Android.mk |--Application.mk |--filer.h |--file.cpp |--res.txt file.cpp里边的代码如下: #include ""filer.h""#include <fstream>#include <string>using namespace std;j

eclipse+android-Eclipse下FileExplorer中只能显示data/data文件夹下的文件夹目录

问题描述 Eclipse下FileExplorer中只能显示data/data文件夹下的文件夹目录 Eclipse下FileExplorer中只能显示data/data文件夹下的文件夹目录,鼠标双击却不能打开某个具体的文件. 例如双击无法打开com.example.filepersisitencetest文件夹. 谢谢! 解决方案 点左边的箭头能展开么? 解决方案二: 在对应的工程目录中看看实际的路径是否存在吧