首页 文章

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

提问于
浏览
1

我有一个包含多值字段的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

    如果您愿意解析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 .

    Disclaimer :我既没有在一个字段中使用多个可选属性,也没有看到任何这样做的示例 .

相关问题