什么是使用块连接(嵌套字段)的schema.xml示例?

时间:2015-03-02 17:42:59

标签: solr solr4

我找到了使用JSON写入solr with block join(基本上是嵌套字段)的好例子,但schema.xml会是什么样子?

例如,我有一个包含许多SKU的文档,我希望在这些skus上有标签。这些标签(描述,用户,类型)有多个信息位,并且它们是多值的,因为SKU可以有多个标签。

  • SKU1
    • TagName1,UserId1,Type1
    • TagName2,UserId1,Type1
    • TagName3,UserId2,Type1
    • TagName4,UserId1,Type2
  • SKU2
    • TagName1,UserId1,Type1
    • TagName2,UserId1,Type1
    • TagName3,UserId2,Type1
  • SKU3
    • TagName4,UserId3,Type1

solr schema.xml如何看待这样的示例?

我正在使用Solr 4.10 - 如果我们升级到5.0会解决这个问题吗?

1 个答案:

答案 0 :(得分:3)

我想我已经明白了。

Schema看起来像这样:

<fields>
    <field name="_root_" type="string" indexed="true" stored="false"/>
    <field name="type" type="string" indexed="true" stored="true" />
    <field name="Id" type="text_general" indexed="true" stored="true" required="true" />
    <field name="StockNumber" type="text_general" indexed="true" stored="true" /> 
    <field name="TagName" type="text_general" indexed="true" stored="true" /> 
    <field name="TagUser" type="text_general" indexed="true" stored="true" /> 
    <field name="TagType" type="tint" indexed="true" stored="true" />
<fields>

写信给它,看起来像这样:

<add>
    <doc>
          <field name="Id">SkuTest111</field>
          <field name="type">SKU</field>
          <field name="StockNum">Test111</field>
              <doc>
                  <field name="Id">TagTest111cat</field>
                  <field name="type">Tag</field>
                  <field name="TagName">Cat</field>
                  <field name="TagUser">Eldorian</field>
                  <field name="TagType">1</field>
                  <field name="StockNum">Test111</field>
              </doc>
              <doc>
                  <field name="Id">TagTest111dog</field>
                  <field name="type">Tag</field>
                  <field name="TagName">Dog</field>
                  <field name="TagUser">Eldorian</field>
                  <field name="TagType">2</field>
                  <field name="StockNum">Test111</field>
              </doc>
    </doc>
</add>

在这个示例中,您将拥有一个带有2个标签,即猫和狗的Test111的SKU。

只有在您执行扩展查询时才会显示此信息,例如,您可以在solr管理员处使用此网址:

http://localhost:8983/solr/collection1/select?q= {!parent which ='type:SKU'}&amp; fq = StockNum:Test111&amp; wt = xml&amp; indent = true&amp; expand = true&amp; expand.field = StockNum&amp; expand.q = StockNum :Test111