0

我正在定义一个 XML 模式,该模式将包含搜索查询信息,这些信息将被(重新)导入 Solr 进行处理。我要为查询结果保存的方面之一是它们是否被访问过,如果是的话,需要多长时间。现在我想知道如何最好地在我的结构中定义这些数据,我可以为“结果”元素使用属性,也可以添加一个可选的子元素来保存单击时的所有信息。

带有一个属性:

<result index="1" clicked="true">
    <timeViewed>45.21</timeViewed>
    <title>Alpha</title>
</result>
<result index="2" clicked="false">
    <title>Beta</title>
</result>

带有子元素:

<result index="1">
    <clickInfo timeViewed="45.21"/>
    <title>Alpha</title>
</result>
<result index="2">
    <title>Beta</title>
</result>

最后,按照这个问题

<result index="1">
    <clicked timeViewed="45.21">true</clicked>
    <title>Alpha</title>
</result>
<result index="2">
    <clicked>false</clicked>
    <title>Beta</title>
</result>

由于我会将大量这些 XML 文件索引到 Solr 和可能的 MongoDB 中,我想知道最有效的结构是什么。在将信息加载到数据库或索引之前,这些差异是否会对转换过程产生显着影响?

4

1 回答 1

1

我个人会选择这个属性,原因是

  • 它总是清楚元素是否是 clicket (逻辑如“如果我不指定,则假设 A”是我不喜欢的东西)
  • xml 总是具有相同的结构,无论元素是否被访问,这可能看起来没什么大不了,但使解析更容易,更不容易出错
  • 您可以节省空间,因为添加属性而不是新标签更便宜,但情况可能并非总是如此,因为这取决于单击元素的频率。
于 2013-04-19T07:26:59.397 回答