From 7098073a663b888be50486c7c576a9a21366a135 Mon Sep 17 00:00:00 2001 From: Britta Weber Date: Mon, 15 Jul 2013 14:15:51 +0200 Subject: [PATCH] fix term vector api retrieved wrong doc The previous loading of term vectors from the top level reader did not use the correct docId. The docId in Versions.DocIdAndVersion is relative to the segment reader in Versions.DocIdAndVersion and not to the top level reader. Consequently the term vectors for the wrong document were returned if the document was not on the first segment of the shard. --- .../termvector/TransportSingleShardTermVectorAction.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/elasticsearch/action/termvector/TransportSingleShardTermVectorAction.java b/src/main/java/org/elasticsearch/action/termvector/TransportSingleShardTermVectorAction.java index 55222c21110..90ad6f106c2 100644 --- a/src/main/java/org/elasticsearch/action/termvector/TransportSingleShardTermVectorAction.java +++ b/src/main/java/org/elasticsearch/action/termvector/TransportSingleShardTermVectorAction.java @@ -108,8 +108,9 @@ public class TransportSingleShardTermVectorAction extends TransportShardSingleOp try { Fields topLevelFields = MultiFields.getFields(topLevelReader); Versions.DocIdAndVersion docIdAndVersion = Versions.loadDocIdAndVersion(topLevelReader, uidTerm); - if(docIdAndVersion!=null) { - termVectorResponse.setFields(topLevelReader.getTermVectors(docIdAndVersion.docId), request.selectedFields(), + + if (docIdAndVersion != null) { + termVectorResponse.setFields(docIdAndVersion.context.reader().getTermVectors(docIdAndVersion.docId), request.selectedFields(), request.getFlags(), topLevelFields); termVectorResponse.setDocVersion(docIdAndVersion.version); } else {