gpt4 book ai didi

python - solrpy 的 Solr 索引问题

转载 作者:太空宇宙 更新时间:2023-11-04 01:24:22 27 4
gpt4 key购买 nike

刚开始学习solr。我正在尝试使用 solrpy 作为客户端。我的 python 代码是:

import solr

# create a connection to a solr server
s = solr.SolrConnection('http://localhost:8983/solr')

# add a document to the index
doc = dict(
id='testid123',
title='Lucene in Action',
author=['Erik Hatcher', 'Otis Gospodneti'],
)
s.add(doc, commit=True)

# do a search
response = s.query('title:lucene')
for hit in response.results:
print hit['title']

这是来自给定的示例 here

我的 solr schema.xml 是 solr 分发时附带的默认模式。我没有对此进行任何更改。它有一个 uniqueKey 字段作为“id”。

<uniqueKey>id</uniqueKey>

而且是字符串类型

<field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" /> 

仍然当我运行我的代码时,在我的客户端我得到错误:

Traceback (most recent call last):
File "/Users/user1/Documents/workspace/PyDelight/src/Test.py", line 12, in <module>
s.add(doc, commit=True)
File "/Library/Python/2.7/site-packages/solrpy-0.9.5-py2.7.egg/solr/core.py", line 678, in add
return Solr.add_many(self, [fields], commit=_commit)
File "/Library/Python/2.7/site-packages/solrpy-0.9.5-py2.7.egg/solr/core.py", line 326, in wrapper
return self._update(content, query)
File "/Library/Python/2.7/site-packages/solrpy-0.9.5-py2.7.egg/solr/core.py", line 550, in _update
rsp = self._post(selector, request, self.xmlheaders)
File "/Library/Python/2.7/site-packages/solrpy-0.9.5-py2.7.egg/solr/core.py", line 639, in _post
return check_response_status(self.conn.getresponse())
File "/Library/Python/2.7/site-packages/solrpy-0.9.5-py2.7.egg/solr/core.py", line 1097, in check_response_status
raise ex
solr.core.SolrException: HTTP code=400, reason=Bad Request

在 solr trace 端我得到错误:

843169 [qtp1151734776-20] INFO  org.apache.solr.update.processor.LogUpdateProcessor  ? [collection1] webapp=/solr path=/update params={commit=true} {} 0 0
843170 [qtp1151734776-20] ERROR org.apache.solr.core.SolrCore ? org.apache.solr.common.SolrException: Document is missing mandatory uniqueKey field: id

schema.xml 文件在 solr-4.4.0/example/solr/collection1/conf

我通过简单地在示例目录中运行 start.jar 来运行 solr。

知道我哪里出错了吗?

最佳答案

我没有太多地使用 solrpy(并且还没有安装它)但是从最初的例子来看,它看起来像是想要用 attribute=value 对而不是字典来调用。 (我知道您发布的示例来自在线 0.9.2 文档!但是 github 上的当前资源在评论中有这个):

add(**params)
Add a document. Pass in all document fields as
keyword parameters:
add(id='foo', notes='bar')
You must "commit" for the addition to be saved.

那么试试这个:

s.add(commit=True, **doc)     

它可能会起作用。您可能需要提取提交并单独执行,我不知道。

我不是 solr 专家,只是稍微玩了一下,而且我使用 sunburnt 运气更好。比 solrpy。也许值得一试。

编辑:指向该文件的 github 指针在这里:http://code.google.com/p/solrpy/source/browse/solr/core.py

关于python - solrpy 的 Solr 索引问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19023050/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com