代码之家  ›  专栏  ›  技术社区  ›  Rui Carneiro

SOLR中的动态场

  •  0
  • Rui Carneiro  · 技术社区  · 17 年前

    在我当前的项目中,我需要索引来自多个邮箱的所有电子邮件及其附件。

    我将使用solr,但我不知道构建索引结构的最佳方法是什么。我的第一个方法是:

    <fields>
    <field name="id" require="true"/>
    <field name="uid" require="true"/>
    //A lot of other fields
    <dynamicField name="attachmentName_*" require="false">
    <dynamicField name="attachmentBody_*" require="false">
    </fields>
    

    但现在我不确定它是否是最好的结构。我想我找不到一个词(例如 栈溢出 )并且知道这个术语在哪里(例如 附件正文 或 二级 或 三级 等)通过一个查询。

    有人对我的索引结构有更好的建议吗?

    2 回复  |  直到 15 年前
        1
  •  4
  •   KenE    17 年前

    可以对attachmentname和attachmentbody使用多值字段。所以您将有两个常规字段而不是动态字段。然后,可以使用突出显示返回与周围上下文匹配的特定值。

    另一种选择是使每个附件成为一个单独的文档,并存储一些内容来标识它属于哪个电子邮件。这种方法的缺点是,您可能需要多次索引来自电子邮件本身的任何数据。但是,如果大多数电子邮件都有多个附件,这实际上只是一个问题。

        2
  •  0
  •   Rui Carneiro    17 年前

    我找到了一个可能的解决办法。我需要做的就是将AttachmentBody设置为已存储。

    这个解决方案不够好,因为索引的空间将显著增加,但在我的例子中没有问题,因为我也将实现突出显示功能,并且需要存储这些字段。