【发布时间】:2014-02-23 12:46:58
【问题描述】:
我想用 Lucene 对一些文档进行文本搜索。提供的文档已在表格中标记:|documentID|token|position|
'documentID' 是令牌所在文档的 ID
'position' 描述了令牌写入文档中的哪个位置
我的第一次尝试是创建一个索引来搜索令牌并返回 documentID。所以我为每个 documentID 创建了一个 Lucene 文档。对于每个 Lucene 文档,我为该文档中的每个标记添加了一个 IntField 'documentID' 和几个 StringFields 'token'。因此,没有问题。
现在我开始了第二次尝试,包括位置信息。第一个想法:'没问题,只需将 StringFields 'position' 添加到 Lucene 文档!'但是......那么我的位置和令牌之间没有关系。这是我最后想要的一个例子:INPUT:tomatoOUTPUT:docID1|position1docID1|position2docID2|position1
@ 987654328@
我怎样才能做到这一点?在我看来,最简单的解决方案是停止转换 document->Lucene-document 并开始将单个标记映射到 Lucene-documents。
因此,我为每个唯一的令牌/documentID 组合创建了一个 Lucene 文档(当然只是针对包含该令牌的 documentID)。然后我将令牌和 documentID 作为字段添加到文档中。此外,对于每个命中,都会有一个包含表中“位置”的 IntField。
示例:
StringField 'token1'IntField 'documentID1'IntField 'position1'IntField 'position2'IntFIeld 'position3'
StringField 'token1'IntField 'documentID2'IntField 'position1'IntField 'position2'
还有其他存储链接字段的方法吗?
【问题讨论】:
标签: java lucene full-text-indexing