3

我有一个包含多值字段的 Solr 模式。我在 Solr 外部解析文档并使用http://wiki.apache.org/solr/UpdateJSON更新索引(另请参见http://wiki.apache.org/solr/UpdateXmlMessages)。下面是一个演示我要解决的问题的玩具示例。

{
  "add": {
    "doc": {
      "id": "MyDocumentID",
      "user": "MyUserID",
      "meals": ["pizza", "pizza", "pizza", "burger"]
    }
  }
}

我希望找到某种语法,可以让我指出“披萨”出现了 3 次,而实际上没有写出 3 次。问题是这些频率中的一些可能是数千或数万。(我正在使用存储的词频对搜索结果进行过滤和排名。)这样的语法存在吗?我正在编造这个,但这里有一个例子来说明这可能看起来如何。

{
  "add": {
    "doc": {
      "id": "MyDocumentID",
      "user": "MyUserID",
      "meals": ["pizza"*3, "burger"]
    }
  }
}

我怀疑答案是,如果我想要这样的行为,我需要自己编写一些 Solr 代码。我希望避免这种情况,但如果是这种情况,您仍然可以通过将我指向要处理的代码的正确区域来帮助我。

这是一个相关的 Lucene 问题:我可以在不生成 TokenStream 的情况下将文档插入 Lucene 吗?

4

1 回答 1

0

如果您愿意解析 JSON 以创建 xml,则可能有一种解决方法:

代替

 <add>
 <doc>
  <field name="employeeId">05991</field>
  <field name="skills" update="set">Python</field>
  <field name="skills" update="set">Python</field>
  <field name="skills" update="set">Python</field>
  <field name="skills" update="set">Java</field>
</doc>
</add>

您应该可以使用它(注意技能是一个多值字段):

<add>
 <doc>
  <field name="employeeId">05991</field>
  <field name="skills" update="set" boost="3.0">Python</field>
  <field name="skills" update="set">Java</field>
</doc>
</add>

这是来自solr wiki

免责声明:我没有在一个字段中使用多个可选属性,也没有看到任何这样做的示例。

于 2013-08-02T01:17:29.053 回答