可选元素或布尔属性

时间:2013-04-19 07:23:32

标签: xml solr

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

使用属性:

<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>

最后,根据this question

<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,我想知道最有效的结构是什么。在将信息加载到数据库或索引之前,这些差异是否会对转换过程产生明显影响?

1 个答案:

答案 0 :(得分:1)

我个人会去找属性,理由是

  • 始终清楚该元素是否为clicket(逻辑如“如果我没有指定,那么假设A”是我从未喜欢过的东西)
  • xml总是具有相同的结构,无论是否访问过该元素,这可能看起来不是什么大问题,但使解析更容易,更不容易出错
  • 您可以节省空间,因为添加属性而不是新标记会更便宜,但可能并非总是如此,因为它取决于点击元素的频率。