pySolr:添加多值字段

2024-06-25 23:23:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我想从pandas数据帧填充solr索引。数据帧如下:

position        value
 5.6,-2.3        65
 -35.6,-1.2      43.1

#...

等等

我正在执行以下操作,将dataframe转换为json对象,然后将其添加到solr中:

^{pr2}$

我得到以下错误:

multiple values encountered for non multiValued field position

如果我将fied位置的名称改为位置,那么就可以了。从pysolr的文档页面,我了解到这会创建一个我并不真正想要的父/子依赖关系。 事实上,从指数中回溯:

results = solrServer.search(**{'q':'*'})
df2 = pd.DataFrame(list(results))
print(df2.head())

我得到了这样的结论:

_position        value
 [5.6,-2.3]        [65]
 [-35.6,-1.2]      [43.1]

#...

尽管有这种“老套”的解决方案,我仍然没有得到一个好的结果:每个元素都是一个列表。我更喜欢位置的元组,以及value的简单浮点。我想这是从转换为json时的orient关键字得到的。在

问题和预期输出

首先,我希望避免将位置重命名为位置。为了pysolr,Solr数据库不必包含重命名的字段。在

第二,我想避免在读取构建的Solr索引时使用列表。我知道Solr不必把列表作为数值元素。问题似乎来自于从DataFrame到json的转换。怎么做?在


Tags: 数据json元素dataframepandas列表valueposition