Solr,通过JSON添加一个带有多值字段和提升值的记录

Solr,通过JSON添加一个带有多值字段和提升值的记录,solr,Solr,我是Solr的新手,我正在尝试添加一个多值字段,为每个值定义boost值,所有这些值都是通过JSON定义的。换言之,我希望这能起作用: [{ "id": "ID1000", "tag": [ { "boost": 1, "value": "A test value" }, { "boost": 2, "value": "A boosted value" } ] }] 我知道如何在XML中实现这一点(多个),但是上面的JSON代码不起作用,服务器说“解析JSON字段值时出

我是Solr的新手,我正在尝试添加一个多值字段,为每个值定义boost值,所有这些值都是通过JSON定义的。换言之,我希望这能起作用:

[{ "id": "ID1000",
  "tag": [ 
    { "boost": 1, "value": "A test value" }, 
    { "boost": 2, "value": "A boosted value" } ]
}]
我知道如何在XML中实现这一点(多个
),但是上面的JSON代码不起作用,服务器说“解析JSON字段值时出错。意外的对象\u启动”。Solr是否有限制/缺陷

PS:我修复了最初丢失的']',这不是问题所在


编辑:似乎应该使用有效负载(),但我无法让它们在Solr上工作(如下所示:)。保留问题,看看是否有人能提供进一步帮助。

JSON似乎无效,缺少结束语
]

[
    {
        "id": "ID1000",
        "tag": [
            {
                "boost": 1,
                "value": "A test value"
            },
            {
                "boost": 2,
                "value": "A boosted value"
            }
        ]
    }
]

在节中的中找到以下句子

多值字段值的索引时间提升将应用于该字段的所有值

我不认为给多值字段中的每个值增加一个单独的提升是可行的。我知道Xml会允许它,但我猜它可能只应用应用于字段的最后一个值的boost值

基于此,我将Json更改为以下内容,看看是否有效

[
    {
        "id": "ID1000",
        "tag": {
           "boost": 2, 
           "value": [ "A test value", "A boosted value"]
         }
    }
]

你撞到了边缘。您可以对单个值进行提升,也可以拥有一个值数组。但不是一个在另一个里面(来自)

这也许是值得一提的

如果手动生成JSON,可以尝试:

"tag": { "boost": 1, "value": "A test value" }, 
"tag": { "boost": 2, "value": "A boosted value" }

我相信SOL将合并这些值。但是,如果您是通过框架生成的,它很可能不允许或覆盖多个对象属性名称(此处的标记)。

该错误与增强无关。 我用一个非常简单的json文档得到了同样的错误。 没办法解决它。
请参见

我遇到了相同的错误消息。实际上,错误消息放错了位置。潜在的真正错误是json有效负载中缺少solr配置中的两个必需字段per schema.xml


“文档中缺少必需的参数”之类的错误消息在这里会更有帮助。您可能需要检查json有效负载中是否缺少一些必填字段。

谢谢,但这不是问题,最初我有好的json(通过验证),只是在这里重新格式化时丢失了括号。您是否尝试完全删除外部[]?这是一个非常清楚的解释,确实您的版本正在工作,非常感谢。然而,我想知道如何覆盖我的用例:我有附加了标签和标签权重的文档,其中权重是该标签对文档的重要性的度量。我想在标签上搜索文档,并根据查询关键字的不同,对如下内容进行评分:(article1、sport(3)、society(2)、gossip(1))。有可能处理这样的案件吗?如何处理?不,那是行不通的。似乎其他人已经注意到了这个问题:但尚未修复…:-(看起来像是一个相关但独立的问题。它是说,即使你设法提高了价值,也不会达到预期的效果。你是说你甚至不能用JSON格式获得提升。