7.跟我学solr---对文件数据添加索引

简介

solr可以对文件数据进行解析,提取可索引内容进行建立索引,底层实现是依赖apache Tika的,Tika利用现有的解析类库,从不同格式的文档中(例如HTML,PDF,Doc),侦测和提取出元数据和结构化内容,然后交由solr建立索引。

添加文件数据索引例子

首先要保证你的solr版本在1.4以上,然后进入到进入到文件所在的目录,然后使用curl命令,把文件数据添加到solr中即可。

cd site/html
curl "http://localhost:8080/solr/update/extract?literal.id=doc1&commit=true" -F "[email protected]"

从发送的请求中我们可以看到请求的uri为/update/extract,回顾一下前面讲解提到的SolrRequestHandler,我们从solrconfig.xml文件中找到如下配置。

喜欢钻研的同学就可以看看ExtractingRequestHandler实现。

  <requestHandler name="/update/extract"
                  startup="lazy"
                  class="solr.extraction.ExtractingRequestHandler" >
    <lst name="defaults">
      <str name="lowernames">true</str>
      <str name="uprefix">ignored_</str>

      <!-- capture link hrefs but ignore div attributes -->
      <str name="captureAttr">true</str>
      <str name="fmap.a">links</str>
      <str name="fmap.div">ignored_</str>
    </lst>
  </requestHandler>

另外,细心的同学可以看到提交的url中还有一个参数commit=ture。这个参数是用来告诉solr,是否提交索引,如果你是批量文件数据,应该等所有的文件都上传了再传这个commit=ture的参数,一起更新索引。

现在你就可以使用http://localhost:8080/solr/select?q=tutorial来搜索刚才提交的数据了。

添加的过程中,可能会报错:lazy loading error,这个报错是由于SOLR_HOME/collection1\confs/olrconfig.xml文件的如下配置没有找到对应的lib目录

  <lib dir="../../../contrib/extraction/lib" regex=".*\.jar" />
  <lib dir="../../../dist/" regex="solr-cell-\d.*\.jar" />

  <lib dir="../../../contrib/clustering/lib/" regex=".*\.jar" />
  <lib dir="../../../dist/" regex="solr-clustering-\d.*\.jar" />

  <lib dir="../../../contrib/langid/lib/" regex=".*\.jar" />
  <lib dir="../../../dist/" regex="solr-langid-\d.*\.jar" />

  <lib dir="../../../contrib/velocity/lib" regex=".*\.jar" />
  <lib dir="../../../dist/" regex="solr-velocity-\d.*\.jar" />

把需要的lib文件目录拷贝到这个相对路径下即可,或者直接指定绝对路径也可以,这些lib目录可以在solr解压的包的根目录下找到。

使用solrj添加

当然,在平时开发中我们比较少使用命令的方式提交数据,下面为大家讲解一下怎么使用solrj提交文件数据。沿用上面的例子,代码非常简单,server对象的说明请参考前面的章节。

		ContentStreamUpdateRequest up = new ContentStreamUpdateRequest("/update/extract");
		up.addFile(new File("tutorial.html"),"text/html");
		up.setParam("literal.id", "testSolrHtml001");
		up.setAction(org.apache.solr.client.solrj.request.AbstractUpdateRequest.ACTION.COMMIT, true, true);
		NamedList<Object> result = server.request(up);

7.跟我学solr---对文件数据添加索引

时间: 2024-10-14 20:17:13

7.跟我学solr---对文件数据添加索引的相关文章

python读取csv文件并添加索引

对于csv文件进行处理一个重要的步骤是为数据添加索引,方便后续的数据操作,这里我们使用pandas库中的read_csv()函数,在读取csv数据的同时可以对其添加行索引和列索引. import pandas as pd obj=pd.read_csv('testdata.csv') print(obj) read_csv()不对属性进行设置的缺省状态下,对于csv文件进行读取操作后,即使原来的数据存在索引,也会自动添加数字的行索引和列索引. obj=pd.read_csv('testdata.

.Net_把文件数据添加到数据库中(面试题)

一个文本文件含有如下内容: 4580616022644994|3000|赵涛 4580616022645017|6000|张屹 4580616022645090|3200|郑欣夏 上述文件每行为一个转账记录,第一列表示帐号,第二列表示金额,第三列表示开户人姓名. 创建一张数据库表(MS SQLServer数据库,表名和字段名自拟),请将上述文件逐条插入此表中. static void Main(string[] args) { //把文件数据读取到数组中 string[] str=File.Re

hadoop输出lzo文件并添加索引

public static void main(String[] args) throws Exception { Configuration conf = new Configuration(); conf.set("mapred.job.tracker", Constants.HADOOP_MAIN_IP + Constants.MAO_HAO + Constants.HADOOP_MAIN_PORT); if (args.length != 3) { System.err.pri

(四) 一起学 APUE 之 系统数据文件和信息

. . . . . 目录 (一) 一起学 APUE 之 标准 IO (二) 一起学 APUE 之 文件 IO (三) 一起学 APUE 之 文件和目录 (四) 一起学 APUE 之 系统数据文件和信息 1.getpwnam(3).getpwuid(3) 1 getpwnam, getpwuid - get password file entry 2 3 #include <sys/types.h> 4 #include <pwd.h> 5 6 struct passwd *getp

一步一步学solr:在开始前我们应该明白什么

我就用自己的项目来讲solr应用了,当然他的功能很多,大家可以看这里 http://my.oschina.net/fengnote/blog/288581 功能那是相当的多. solr可以理解为与应用分离的一个搜索服务,我们要搭建应用+搜索服务的关联配置实现部分业务. 我们的项目现在要改功能,一个内容发布系统,做一个站内搜索,原有的框架是SSI的,只把查询部分用solr来实现. 问题是: 我要查询一篇文章关联到N张表 我除了查询文章还要查询分类(也用solr实现) 新增.修改.删除文章/分类后要

Kafka+Flume+Morphline+Solr+Hue数据组合索引

背景:Kafka消息总线的建成,使各个系统的数据得以在kafka节点中汇聚,接下来面临的任务是最大化数据的价值,让数据“慧”说话. 环境准备: Kafka服务器*3. CDH 5.8.3服务器*3,安装Flume,Solr,Hue,HDFS,Zookeeper服务. Flume提供了可扩展的实时数据传输通道,Morphline提供了轻量级的ETL功能,SolrCloud+Hue提供了高性能搜索引擎和多样的数据展现形式. 一.环境安装(略) 二.修改CDH默认配置: 1.在Flume配置界面配置F

(三) 一起学 APUE 之 文件和目录

. . . . . 前面两篇博文讲了文件 IO 的基本操作,但是它们操作的都是文件本身所存储的有效数据.而文件系统保存文件的时候不仅仅要存储文件内的数据,还要存储许多亚数据,即文件属性和其它特征数据.这篇博文 LZ 就带领大家讨论文件系统亚数据的操作. 1.stat(2) 1 stat, fstat, lstat - get file status 2 3 #include <sys/types.h> 4 #include <sys/stat.h> 5 #include <u

Django框架进阶6 多对多三种创建方式, Ajax, Content-Type前后端传输数据编码格式, Ajax发送文件数据, django内置的序列化功能, Ajax结合sweetalert实现删除二次确认, 批量插入数据, 自定义分页器, ajax结合sweetalert实现删除二次确认

多对多三种创建方式 1.全自动(较为常用) class Book(models.Model): title = models.CharField(max_length=32) authors = models.ManyToManyField(to='Author') # orm就会自动帮你创建第三张表 class Author(models.Model): name = models.CharField(max_length=32) ''' 好处:第三张表自己创建 不足之处:第三张表无法扩展额外

重学Linux - 链接文件

目录 重学Linux - 链接文件 重学Linux - 链接文件 @ @auther 张念磊 @date 2020/1/30 ln命令 命令英文:link 功能:创建一个链接 语法:ln [源文件] [生产的链接文件] 参数: ? -s 生成软连接 示例: ln -s /etc/issue /tmp/issue.soft ln /etc/issur /tmp/issue.hard 软连接文件的特点 权限 文件大小 箭头 硬链接特征 拷贝 cp -p + 实时同步 不能跨分区 使用i节点 不能针对