2013-03-28 85 views
1

我有一个使用urllib2通过python发布PDF文件到SOLR的问题。我正在尝试的代码如下通过python发布PDF文件到SOLR

import urllib2 
with open('key.pdf', 'rb') as data_file: 
    my_data = data_file.read() 
req = urllib2.Request(url='http:// localhost:8983/solr/update/pdf?commit=true',data=my_data) 
req.add_header('Content-type', 'application/pdf') 
f = urllib2.urlopen(req) 

我得到一个错误HTTP 404错误代码。

但是我能使用此命令成功发布:

http:// localhost:8983/solr/update/extract?literal._id=doc2 -Dtype=application/pdf -jar post.jar key.pdf 

能否请你让我知道我现在做的错误。对于上述命令,我配置了SOLR提取处理程序。

进一步就此进行了更改如下

import urllib2 
with open('key.pdf', 'rb') as data_file: 
my_data = data_file.read() 
req = urllib2.Request(url='http ://localhost:8983/solr/update/extract?commit=true',data=my_data) 
req.add_header('Content-type', 'application/pdf') 
f = urllib2.urlopen(req) 

我得到一个HTTP 400错误,现在和SOLR登录可以看到错误“文件丢失mandaotory唯一键字段:_id”

如何做我合并到_id以上的Python代码。如果是这样怎么样?

感谢

回答

1

使用literal.fieldname使用提取处理时,包括fieldname到Solr。

http://wiki.apache.org/solr/ExtractingRequestHandler#Literals

Requests可以采取params字典一样{'commit': 'true', 'field':'this/ ?text may invalidate your url'}做使它网址安全的工作。

+0

谢谢Aithnyu。这工作。 req = urllib2.Request(url ='http:// localhost:8983/solr/update/extract?commit = true&literal._id = doc25',data = my_data) – 2013-03-28 12:57:36

+0

如果您发现问题的答案有用,请接受它们(点击答案旁边的检查)。 – aitchnyu 2013-03-28 13:02:59