首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在用python向Solr添加数据时遇到麻烦吗?

在用python向Solr添加数据时遇到麻烦吗?
EN

Stack Overflow用户
提问于 2015-10-15 01:11:55
回答 1查看 1.4K关注 0票数 0

我正在使用python3.4.3并将一些文档添加到Solr(5.2.1)中。以下代码直接来自晒黑的文档:

代码语言:javascript
复制
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)

当我运行上面的命令时,我得到以下信息:

代码语言:javascript
复制
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尝试了相同的文档,如下所示:

代码语言:javascript
复制
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)

其中规定如下:

代码语言:javascript
复制
/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

我做了一些谷歌搜索,但没有找到一个明确的答案,如何解决unicode或字节问题的输入。我尝试将字符串转换为字节和unicode,但似乎没有什么工作。

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-16 18:20:19

我想出来了,pysolr.py的文件

代码语言:javascript
复制
if response.startswith('<?xml'):

需要更改为

代码语言:javascript
复制
if response.startswith(b'<?xml'):

更多信息请访问:https://github.com/toastdriven/pysolr/issues/159

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33138190

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档