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实现。

  
    
      true
      ignored_

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

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

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

  
  

  
  

  
  

  
  
把需要的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 result = server.request(up); 
  



你可能感兴趣的:(solr)