2015-10-15 41 views
0

我正在使用python 3.4.3和sunburnt向Solr(5.2.1)添加一些文档。下面的代码是直接从晒黑的文档:无法用python向Solr添加数据?

import sunburnt 

si=sunburnt.SolrInterface("http://localhost:8983/solr/") 

document = {"id":"0553573403", 
     "cat":"book", 
     "name":"A Game of Thrones", 
     "price":7.99, 
     "inStock": True, 
     "author_t": 
     "George R.R. Martin", 
     "series_t":"A Song of Ice and Fire", 
     "sequence_i":1, 
     "genre_s":"fantasy"} 

si.add(document) 

,当我运行上面的命令,我得到以下几点:

NameError         Traceback (most recent call last) 
<ipython-input-1-1008a9ce394f> in <module>()----> 1 import sunburnt 
    2 
    3 si= sunburnt.SolrInterface("http://localhost:8983/solr/") 
    4 
    5 document = {"id":"0553573403", 

/Users/rmohan/venv_py3/lib/python3.4/site-packages/sunburnt/__init__.py in <module>() 
    1 from __future__ import absolute_import 
    2 
----> 3 from .strings import RawString 
    4 from .sunburnt import SolrError, SolrInterface 
    5 

/Users/rmohan/venv_py3/lib/python3.4/site-packages/sunburnt/strings.py in <module>() 
    2 
    3 
----> 4 class SolrString(unicode): 
    5  # The behaviour below is only really relevant for String fields rather 
    6  # than Text fields - most queryparsers will strip these characters out 

NameError: name 'unicode' is not defined 

所以,我想在同一个文档与pysolr如下:

import pysolr 
solr = pysolr.Solr('http://localhost:8983/solr/', timeout=10) 

document = [{"id":"0553573403", 
     "cat":"book", 
     "name":"A Game of Thrones", 
     "price":7.99, 
     "inStock": True, 
     "author_t": 
     "George R.R. Martin", 
     "series_t":"A Song of Ice and Fire", 
     "sequence_i":1, 
     "genre_s":"fantasy"}] 

solr.add(document) 

这给了以下内容:

/Users/rmohan/venv_py3/lib/python3.4/site-packages/pysolr.py in _scrape_response(self, headers, response) 
443   dom_tree = None 
444 
--> 445   if response.startswith('<?xml'): 
446    # Try a strict XML parse 
447    try: 

TypeError: startswith first arg must be bytes or a tuple of bytes, not str 

我做了一些Google搜索,但找不到关于如何解决unicode或输入字节问题的明确答案。我试图将字符串转换为字节和unicode,但似乎没有任何工作。

如果有人知道在SOLR中插入文档的更好方法,请分享。任何帮助将不胜感激。

+0

你确定你的版本”重新使用sunburnt和pysolr实际上是Python3兼容?这两个错误都是在3中引入的更改。至少我已经成功使用'mysolr'。 – MatsLindh

回答