【问题标题】:How to store custom token attribute in Lucene Index如何在 Lucene 索引中存储自定义令牌属性
【发布时间】:2014-06-04 15:23:30
【问题描述】:

我想为 RDF 节点创建一个 Lucene 分析器。 RDF 节点可以有多种类型(uri、bnode、普通文字、带有语言的普通文字、带有数据类型的类型文字)。在分析术语时,我想创建一个 RDFNodeTypeAttribute、LanguageAttribute 和 DatatypeAttribute 来分别存储 RDF 节点的类型、文字的语言和数据类型属性。我的问题是如何将这些属性存储在 lucene 索引中。我必须编写自定义编解码器吗?我必须使用 PayloadAttribute 吗?一旦存储在索引中,我如何利用这些属性进行搜索? 谢谢你的帮助

【问题讨论】:

    标签: lucene


    【解决方案1】:

    我无法完全满足您的要求,但如果您对 Lucene 索引的编码和解码方式不满意,您可以使用 Codecs。编解码器让您可以灵活地拥有自己的 PostingsFormat、SegmentInfosFormat、LiveDocsFormat 等。所以让我们说,您想要一个与默认 Lucence 编解码器不同的 postsFormat - 这更像是每个术语,存储它出现的所有 docId,它出现的次数以特定格式出现在文档中,在什么位置等。如果您希望此信息以不同的格式存储,则需要编解码器。

    我认为您不需要为此编写任何 Codec 或任何 PostingFormat。也许编写自己的分析器和相似性类就足够了。如果您提供有关您的问题的更多信息,我可以进一步考虑。

    有效负载处于术语级别,典型用例是存储每个术语的元数据。因此,像这样的用例:这个术语是用粗体写的,或者是一个名词等,是该术语的元数据,应该存储在有效负载中。您实际上使用有效载荷来对文档进行评分,它们对于赋予术语一些权重很重要。

    虽然 RDF 是 Web 资源的元数据,但您可能正在谈论对 RDF 本身进行索引。即使它是 Web 文档的一部分,您也在编制索引,将每个术语的 RDF 信息放在 Web 文档中也不是一种可行的方法,因为有比这更好的方法来为文档分配权重。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-13
      • 2011-12-30
      • 1970-01-01
      • 1970-01-01
      • 2020-12-06
      • 2021-09-17
      • 2018-06-02
      • 2010-10-05
      相关资源
      最近更新 更多