3

我对 Solr 很陌生,我正在尝试添加一个多值字段,其中为每个值定义了 boost 值,所有这些值都是通过 JSON 定义的。换句话说,我希望这个工作:

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

我知道如何在 XML(多个<field name = 'tag' boost = '...'>)中做到这一点,但上面的 JSON 代码不起作用,服务器说“解析 JSON 字段值时出错。意外的 OBJECT_START”。Solr 有限制/错误吗?

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

编辑:似乎要走的路应该是有效载荷(http://wiki.apache.org/solr/Payloads),但我无法让它们在 Solr 上工作(遵循这个:http://sujitpal.blogspot。 co.uk/2011/01/payloads-with-solr.html)。让问题保持开放,看看是否有人可以提供进一步的帮助。

4

5 回答 5

4

Solr Relevancy FAQ - Query Elevation Component部分中找到以下句子

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

我认为为多值字段中的每个值添加单独的提升不会起作用。我知道 Xml 会允许它,但我猜它可能只应用从应用到字段的最后一个值的 boost 值。

因此,基于此,我会将 Json 更改为以下内容,看看是否可行。

[
    {
        "id": "ID1000",
        "tag": {
           "boost": 2, 
           "value": [ "A test value", "A boosted value"]
         }
    }
]
于 2013-02-06T12:48:57.307 回答
0

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

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

于 2014-02-22T07:43:05.973 回答
0

该错误与提升无关。我用一个非常简单的 json doc 得到了同样的错误。没有运气解决它。请参阅尝试解析集合时的 ​​Solr 错误:解析 JSON 字段值时出错。意外的 OBJECT_START

于 2013-06-04T02:56:10.403 回答
0

你遇到了一个极端情况。您可以对单个值进行提升,也可以拥有一组值。但不是一个内另一个(从我阅读 Solr 4.1 源代码

这可能是作为增强请求创建的东西。

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

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

我相信 Sols 会合并这些价值观。但是,如果您通过框架生成它,它很可能会禁止或覆盖多个对象属性名称(此处的标记)。

于 2013-02-06T13:01:48.737 回答
0

JSON 似乎是无效的缺少关闭]

[
    {
        "id": "ID1000",
        "tag": [
            {
                "boost": 1,
                "value": "A test value"
            },
            {
                "boost": 2,
                "value": "A boosted value"
            }
        ]
    }
]
于 2013-02-06T03:44:10.570 回答