From 9e3f0e559dc5ecadc9047a5db0f241df9351d655 Mon Sep 17 00:00:00 2001 From: Manav Patel Date: Tue, 4 Feb 2025 10:07:24 -0800 Subject: [PATCH] Added checks for adding analyzer and index analyzer when set --- .../server/field/PrefixFieldDef.java | 4 +-- .../nrtsearch/server/field/TextFieldDef.java | 27 +++++++++---------- 2 files changed, 14 insertions(+), 17 deletions(-) diff --git a/src/main/java/com/yelp/nrtsearch/server/field/PrefixFieldDef.java b/src/main/java/com/yelp/nrtsearch/server/field/PrefixFieldDef.java index faeb6af24..7b54b7b7e 100644 --- a/src/main/java/com/yelp/nrtsearch/server/field/PrefixFieldDef.java +++ b/src/main/java/com/yelp/nrtsearch/server/field/PrefixFieldDef.java @@ -48,9 +48,7 @@ public PrefixFieldDef( protected void setSearchProperties(FieldType fieldType, Field requestField) { fieldType.setOmitNorms(true); fieldType.setTokenized(true); - if (requestField.getSearch()) { - setIndexOptions(requestField.getIndexOptions(), fieldType, IndexOptions.DOCS); - } + fieldType.setIndexOptions(IndexOptions.DOCS); } @Override diff --git a/src/main/java/com/yelp/nrtsearch/server/field/TextFieldDef.java b/src/main/java/com/yelp/nrtsearch/server/field/TextFieldDef.java index 4e50422bf..3f1159294 100644 --- a/src/main/java/com/yelp/nrtsearch/server/field/TextFieldDef.java +++ b/src/main/java/com/yelp/nrtsearch/server/field/TextFieldDef.java @@ -52,21 +52,20 @@ public TextFieldDef( ? requestField.getIndexPrefixes().getMaxChars() : DEFAULT_MAX_CHARS; validatePrefix(minChars, maxChars); + Field.Builder prefixFieldBuilder = + Field.newBuilder() + .setSearch(true) + .setIndexPrefixes( + IndexPrefixes.newBuilder().setMinChars(minChars).setMaxChars(maxChars).build()); - this.prefixFieldDef = - new PrefixFieldDef( - getName(), - Field.newBuilder() - .setSearch(true) - .setAnalyzer(requestField.getAnalyzer()) - .setIndexAnalyzer(requestField.getIndexAnalyzer()) - .setIndexPrefixes( - IndexPrefixes.newBuilder() - .setMinChars(minChars) - .setMaxChars(maxChars) - .build()) - .build(), - context); + if (requestField.hasAnalyzer()) { + prefixFieldBuilder.setAnalyzer(requestField.getAnalyzer()); + } + if (requestField.hasIndexAnalyzer()) { + prefixFieldBuilder.setIndexAnalyzer(requestField.getIndexAnalyzer()); + } + + this.prefixFieldDef = new PrefixFieldDef(getName(), prefixFieldBuilder.build(), context); Map> childFieldsMap = new HashMap<>(super.getChildFields()); childFieldsMap.put(prefixFieldDef.getName(), prefixFieldDef);