2012-01-19 91 views
8

基本上我试图指数Word或PDF文件在Solr中,发现ExtractingRequestHandler,但无法弄清楚如何编写C#代码执行像HTTP POST请求Solr wiki:http://wiki.apache.org/solr/ExtractingRequestHandler索引PDF文件

我一直使用从Solr的拉链的例子/ Solr的目录中的文件在Tomcat 7(7.0.22)安装Solr的3.4和我没有改变任何东西。 ExtractingRequestHandler应该在solrconfig.xml中配置,并可以使用,对不对?

你们能否给出一个C#(HttpWebRequest)的例子,说明如何在Solr wiki中使用curl完成HTTP POST请求并上传PDF文件?

我已经看遍这个网站和其他许多人试图找到一个例子或如何做到这一点的教程,但没有发现任何东西。

编辑:

我终于设法得到它使用SolrNet工作!

为了它的工作,你需要这在Solr的安装目录从Solr的拉链复制到一个lib文件夹:

  • Apache的Solr的细胞-3.4.0.jar文件从DIST文件夹
  • 内容的contrib \提取\ lib目录

随着SolrNet 0.4.0 beta 2版本中,这个代码的工作:

Startup.Init<IndexDocument>("YOUR-SOLR-SERVICE-PATH"); 
var solr = ServiceLocator.Current.GetInstance<ISolrOperations<IndexDocument>>(); 

using (FileStream fileStream = File.OpenRead("FILE-PATH-FOR-THE-FILE-TO-BE-INDEXED")) 
{ 
    var response = 
     solr.Extract(
      new ExtractParameters(fileStream, "doc1") 
      { 
       ExtractFormat = ExtractFormat.Text, 
       ExtractOnly = false 
      }); 
} 

solr.Commit(); 

对不起。不过,我希望别人会觉得这很有用。

+0

非常有用的信息 - >它适用于我。 – FrenkyB

+0

你可以发布你的IndexDocument类吗?谢谢! – CmdrTallen

+0

为了使用ExtractParameters你需要SolrNet> 0.3.1(“安装 - 包SolrNet - 售前”) – CmdrTallen

回答

3

我会建议使用SolrNet客户端。它支持ExtractingRequestHandler。

+0

我用SolrNet已经但是不知道ExtractingRequestHandler得到了支持。有没有这方面的文件? – jonasm

+0

我已经遍布SolrNet文档,它似乎只支持最新的beta版本。如果可能的话,我仍然会喜欢使用HttpWebRequest的示例。 – jonasm

+0

即使支持这个版本的SolrNet版本是Beta版本,它也是完全稳定和可用的。我已经使用SolrNet 2年多了,并且在我们的生产环境中运行Beta版本时没有任何问题。举个例子,我会研究SolrNet源代码 - https://github.com/mausch/solrnet,因为我知道它正在做一个HttpWebRequest来调用Solr,所以你应该能够关注它正在做什么。 –