2012-10-09 41 views
0

我的理解是,通过Solr索引PDF,Word,Excel等文档将允许搜索但不会突出显示。我有这样的代码来执行索引:Solr - Tika - 解析内容以启用突出显示

 String urlString = "http://localhost:8983/solr"; 
     SolrServer solr = new HttpSolrServer(urlString); 
     ContentStreamUpdateRequest up = new ContentStreamUpdateRequest("/update/extract"); 

     for (MultipartFile file : files) { 
      if (file.getOriginalFilename().equals("")) { 
       continue; 
      } 
      File destFile = new File(destPath, file.getOriginalFilename()); 
      file.transferTo(destFile); 
      up.addFile(destFile); 

      up.setParam("literal.id", destFile.getAbsolutePath()); 
      up.setAction(AbstractUpdateRequest.ACTION.COMMIT, true, true); 

      try { 
       solr.request(up); 

      } catch (SolrServerException sse) { 
       sse.printStackTrace(); 
      } 

     } 

    } 
    } catch (IOException ioe) { 
     ioe.printStackTrace(); 
    } 

我已阅读,为了能够突出我将需要“存储/解析的内容?”如何才能做到这一点?谢谢你的帮助。

回答

2

您需要修改您的Solr实例的Schema文件,并为content字段设置stored="true"。我假设您正在使用ExtractingRequestHandler的默认字段设置,以针对该字段返回高亮结果。

请参考Field Options By Use Case了解矩阵,并注意必须启用哪些字段选项才能使突出显示和其他功能正常工作。

+0

谢谢佩奇。我没有在架构中找到内容字段。我可以创建一个,但似乎文本字段已经索引数据。将其存储从false更改为true会有什么问题吗?另外,我没有更改ExtractingRequestHandler上的任何设置。 – James

+0

不,不存在更改文本字段存储值的任何问题,因为我假设您要强调这一点。 –

+0

这是正确的。看来ExtractingRequestHandler的默认设置是将其内容存储到文本字段中(见下文)。所以,我会保留这个默认值并在文本字段上更改存储的值。 ( <! - 所有主要内容进入“文本“...如果您需要返回 提取的文本或进行突出显示,请使用存储的字段。 - > text) – James