获取与Solr / Lucene中匹配内容关联的元数据

时间:2012-01-16 16:54:01

标签: solr lucene indexing metadata

我有一大堆文本文档,我将使用Solr进行索引,其格式是每行文本都有关联的元数据。例如:

#metadata1
A line of text.
#metadata2
Another long, broken line of
#metadata3
text that should be searchable.

我想对此进行索引,以便内容可搜索,包括跨越多行的词组匹配,但不包含元数据。但是,我无法丢弃元数据:我希望任何匹配仍然具有关联的元数据。

E.g。对“文本行”的查询将返回2个匹配,一个是第一行(及其关联的元数据“metadata1”),另一个是第二行和第三行(分别具有关联的“metadata1”和“metadata2”)。

任何人都可以描述如何做到这一点,或者参考一个可以让我开始的教程吗?

2 个答案:

答案 0 :(得分:2)

由于Solr在封面下使用Lucene,您应该从Lucene文档模型开始:

  • index是文档集合
  • 文档是一系列字段。
  • 字段是一个命名的术语序列。
  • 术语是一个字符串。

搜索遍历一个或多个字段并将文档作为结果返回。因此,如果您希望跨多行进行跨度查询,则必须将它们放入一个文档中,但“文本行”查询将只匹配一个文档。

更新:似乎可以使用FieldMaskingSpanQuery搜索多个文件。

如果您不想搜索可行的元数据行(您根本不会将它们编入索引)。还要将元数据包含在结果中(我猜你想在搜索时索引和检索时存储它)。

答案 1 :(得分:1)

使用PatternReplaceCharFilterFactory配置fieldType,以便在索引时检测并删除元数据,并存储该字段,以便在匹配时返回元数据。