【问题标题】:Solr + schema.xml creating custom FieldType ObjectSolr + schema.xml 创建自定义 FieldType 对象
【发布时间】:2015-10-13 11:50:04
【问题描述】:

这只是一个例子,但它会帮助我更进一步

我有一个对象“人”,字段为 [Age,Name]

我的 schema.xml

<field name="age" type="string" indexed="true" stored="false"/>
<field name="name" type="string" indexed="true" stored="false"/>

一切正常,但我想再添加 +1 字段“关系”(或父母、孩子等) Person[age,name,relation] -> Relation 也有 [age,name]

我怎样才能在我的 schema.xml 中插入一个 FieldType 关系?

<field name="age" type="string" indexed="true" stored="false"/>
<field name="name" type="string" indexed="true" stored="false"/>
<field name="relation" type="???" indexed="true" stored="false"/>

我想添加一个字段,它包含上面所有现有的字段

<field name="field1" type="string">
<field name="field2" type="string">
<field name="field3" type="string">
<field name="field4" type="field1,field2,field3">

【问题讨论】:

    标签: indexing solr schema fieldtype


    【解决方案1】:

    Solr 更喜欢一切都以非规范化的方式。多值在那个方向。但正如@MatsLindh 所说,它涉及2 个查询,因为大多数时候子实体不仅仅是一个字段(字符串数组v/s 实体数组)。

    (在您的情况下,父母和孩子是个人和“关系”) 嵌套的子文档,更多的是对象关系,就像我们在其他框架中所做的那样。您有父文档,您有子文档,并且 solr 维护了这种关系,我们应该有一个字段来识别父级和子级。这样做的好处是

    1. 您可以获取具有子字段匹配的父文档
    2. 父字段匹配的所有子文档
    3. 最后只有一个查询

    嵌套的东西,是最近添加的。我们正在使用 Lucid 作品与 solr 进行交互。他们建议不要使用嵌套文档,所以我们最终得到了多值。但是,如果您的基础设施允许,并且 solr 框架本身具有该功能,我认为使用它没有错。

    【讨论】:

      【解决方案2】:

      Solr 并不真正支持您想要的内容,因此您可能会使用包含指向其他文档的 id 的多值字段对其进行索引,例如(为什么年龄字段是字符串而不是诠释?):

      <field name="id" type="int" indexed="true" stored="false"/>
      <field name="age" type="string" indexed="true" stored="false"/>
      <field name="name" type="string" indexed="true" stored="false"/>
      <field name="relation" type="int" multiValued="true" indexed="true" stored="false" />
      

      .. 然后在显示文档时查询具有给定关系的所有文档(对 Solr 进行两次查询)。

      您可以also use nested child documents,但需要更多处理(因为所有内容都包含在一个文档中,您必须一起更新所有内容)。

      【讨论】:

      • 这是一个错误,年龄应该是整数。存储 ID 的想法非常聪明。我会试试的。而且我之前看过嵌套的子文档,但他们没有解释他们使用什么样的fieldType
      • 它们使用与索引的其余部分相同的字段类型。它们与“父”文档在同一个核心中被索引,但在您查询和索引时被“连接”为一个块。如果您查看上面链接的示例,您可以看到它们的 id 对于每个文档或子文档都是不同的。
      猜你喜欢
      • 2013-04-11
      • 2014-03-06
      • 1970-01-01
      • 1970-01-01
      • 2018-04-19
      • 1970-01-01
      • 2013-03-01
      • 2010-09-18
      • 1970-01-01
      相关资源
      最近更新 更多