我有一个包含多值字段的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?
答案 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。
免责声明:我在一个字段中既没有使用多个可选属性,也没有看到任何示例。