我有一大堆文本文档,我将使用Solr进行索引,其格式是每行文本都有关联的元数据。例如:
#metadata1
A line of text.
#metadata2
Another long, broken line of
#metadata3
text that should be searchable.
我想对此进行索引,以便内容可搜索,包括跨越多行的词组匹配,但不包含元数据。但是,我无法丢弃元数据:我希望任何匹配仍然具有关联的元数据。
E.g。对“文本行”的查询将返回2个匹配,一个是第一行(及其关联的元数据“metadata1”),另一个是第二行和第三行(分别具有关联的“metadata1”和“metadata2”)。
任何人都可以描述如何做到这一点,或者参考一个可以让我开始的教程吗?
答案 0 :(得分:2)
由于Solr在封面下使用Lucene,您应该从Lucene文档模型开始:
搜索遍历一个或多个字段并将文档作为结果返回。因此,如果您希望跨多行进行跨度查询,则必须将它们放入一个文档中,但“文本行”查询将只匹配一个文档。
更新:似乎可以使用FieldMaskingSpanQuery搜索多个文件。
如果您不想搜索可行的元数据行(您根本不会将它们编入索引)。还要将元数据包含在结果中(我猜你想在搜索时索引和检索时存储它)。
答案 1 :(得分:1)
使用PatternReplaceCharFilterFactory配置fieldType,以便在索引时检测并删除元数据,并存储该字段,以便在匹配时返回元数据。