如何在Lucene中返回搜索结果中多值字段的索引?

如何在Lucene中返回搜索结果中多值字段的索引?,lucene,Lucene,我有一个包含标记的文档字段,我这样添加它: for (Tag tag : tags) { //rock, disco, jazz fields.add(new StringField("Tag", tag.name, Field.Store.YES)) } 现在,当我执行搜索时,我不仅希望得到有标记的文档,而且希望得到与查询匹配的标记字段中的特定索引。 例如,现在当我搜索jazz时,我还需要搜索结果index=2。要知道匹配的确切标记(因为我还使用前缀搜索和短语搜索)

我有一个包含
标记的文档
字段,我这样添加它:

for (Tag tag : tags) { //rock, disco, jazz
   fields.add(new StringField("Tag", tag.name, Field.Store.YES))
}
现在,当我执行搜索时,我不仅希望得到有标记的文档,而且希望得到与查询匹配的
标记
字段中的特定索引。 例如,现在当我搜索
jazz
时,我还需要搜索结果
index=2
。要知道匹配的确切标记(因为我还使用前缀搜索和短语搜索)


使用Lucene如何实现这一点?

我的方法是从
reader.getTermVector(hit.doc,“field\u name”)
获取术语向量集。这允许我访问匹配文档中所有术语的偏移量和索引。但随后我不得不迭代这些术语,以找到一个特定搜索术语所需的偏移量。正如德米特里指出的,这是双重工作。我不知道如何直接在搜索结果中选择一个必需的术语。你的例子也是一种方法。但是,我简化了这个问题,实际搜索标记更加复杂,因此在每个匹配的文档中再次迭代和搜索不是一个选项。