From 79f676e45ec7205dbfc06d50814672bb3fd40d8c Mon Sep 17 00:00:00 2001 From: Simon Willnauer Date: Thu, 2 Jan 2014 12:20:12 +0100 Subject: [PATCH] Term Vector settings should be treated like flags without propergation today if a specific feature is disabled for term vectors with something like 'store_term_vector_positions = false' term vectors might be disabeled alltogether even if 'store_term_vectors=true' in the mapping. This depends on the order of the values in the mapping since the more specific one might override the less specific on. Closes #4582 --- .../index/mapper/core/AbstractFieldMapper.java | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/elasticsearch/index/mapper/core/AbstractFieldMapper.java b/src/main/java/org/elasticsearch/index/mapper/core/AbstractFieldMapper.java index 760f9ef448804..18f92af44e26e 100644 --- a/src/main/java/org/elasticsearch/index/mapper/core/AbstractFieldMapper.java +++ b/src/main/java/org/elasticsearch/index/mapper/core/AbstractFieldMapper.java @@ -117,24 +117,32 @@ public T docValues(boolean docValues) { } public T storeTermVectors(boolean termVectors) { - this.fieldType.setStoreTermVectors(termVectors); + if (termVectors) { + this.fieldType.setStoreTermVectors(termVectors); + } // don't set it to false, it is default and might be flipped by a more specific option return builder; } public T storeTermVectorOffsets(boolean termVectorOffsets) { - this.fieldType.setStoreTermVectors(termVectorOffsets); + if (termVectorOffsets) { + this.fieldType.setStoreTermVectors(termVectorOffsets); + } this.fieldType.setStoreTermVectorOffsets(termVectorOffsets); return builder; } public T storeTermVectorPositions(boolean termVectorPositions) { - this.fieldType.setStoreTermVectors(termVectorPositions); + if (termVectorPositions) { + this.fieldType.setStoreTermVectors(termVectorPositions); + } this.fieldType.setStoreTermVectorPositions(termVectorPositions); return builder; } public T storeTermVectorPayloads(boolean termVectorPayloads) { - this.fieldType.setStoreTermVectors(termVectorPayloads); + if (termVectorPayloads) { + this.fieldType.setStoreTermVectors(termVectorPayloads); + } this.fieldType.setStoreTermVectorPayloads(termVectorPayloads); return builder; }