在Solr更新中指定多值项频率?

时间:2013-08-01 14:17:37

标签: solr

我有一个包含多值字段的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问题:Can I insert a Document into Lucene without generating a TokenStream?

1 个答案:

答案 0 :(得分: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

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