我想为RDF节点创建一个Lucene分析器。 RDF节点可以有多种类型(uri,bnode,普通文字,带有语言的普通文字,带数据类型的类型文字)。在分析术语时,我想创建一个RDFNodeTypeAttribute,LanguageAttribute和DatatypeAttribute来分别存储RDF节点的类型,文字的语言和数据类型属性。我的问题是如何将这些属性存储在lucene索引中。我是否必须编写自定义编解码器?我是否必须使用PayloadAttribute?一旦存储在索引中,我如何利用这些属性进行搜索? 谢谢你的帮助
答案 0 :(得分:1)
我无法完全满足您的要求,但如果您对Lucene索引的编码和解码方式不满意,您可以使用编解码器。编解码器使您可以灵活地拥有自己的PostingsFormat,SegmentInfosFormat,LiveDocsFormat等。因此,让我们说,您需要来自默认Lucence编解码器的不同postssFormat - 更像是每个术语,存储它出现的所有docId,它有多少次发生在文档中,在特定格式的什么位置等。如果您希望以不同的格式存储此信息,则需要编解码器。
我认为您不需要为此编写任何编解码器或任何PostingFormat。也许编写自己的Analyzer和Similarity类就足够了。如果您提供有关问题的更多信息,我可以进一步思考。
有效负载处于学期级别,典型用例是存储每个术语的元数据。因此,一个用例如:这个术语是用粗体写的,或者是名词等,是术语的元数据,应该存储在有效载荷中。实际上,您使用有效负载来评估文档,并且它们在赋予术语一定的权重时很重要。
虽然RDF是Web资源的元数据,但您可能正在谈论索引RDF本身。即使它是Web文档的一部分,您也要编制索引,因此将Web文档中每个术语的RDF信息放在一起是不可行的方法,因为有更好的方法可以为文档分配权重而不是。