Skip to content

Commit

Permalink
HSEARCH-3042 Support search analyzer in ES backend
Browse files Browse the repository at this point in the history
  • Loading branch information
fax4ever committed Sep 26, 2019
1 parent ace7ef0 commit 1054b8d
Show file tree
Hide file tree
Showing 5 changed files with 21 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,14 @@ public class PropertyMapping extends AbstractTypeMapping {

private String analyzer;

/*
* Text datatype
* https://www.elastic.co/guide/en/elasticsearch/reference/current/search-analyzer.html
*/

@SerializedName("search_analyzer")
private String searchAnalyzer;

/*
* Keyword datatype
* https://www.elastic.co/guide/en/elasticsearch/reference/current/keyword.html
Expand Down Expand Up @@ -144,6 +152,14 @@ public void setAnalyzer(String analyzer) {
this.analyzer = analyzer;
}

public String getSearchAnalyzer() {
return searchAnalyzer;
}

public void setSearchAnalyzer(String searchAnalyzer) {
this.searchAnalyzer = searchAnalyzer;
}

public String getNormalizer() {
return normalizer;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ protected <T> void addFields(Builder<T> builder) {
builder.add( "store", Boolean.class );
builder.add( "nullValue", JsonPrimitive.class );
builder.add( "analyzer", String.class );
builder.add( "searchAnalyzer", String.class );
builder.add( "normalizer", String.class );
builder.add( "format", new ElasticsearchFormatJsonAdapter() );
builder.add( "scalingFactor", Double.class );
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -585,6 +585,7 @@ private void validateIndexOptions(ValidationErrorCollector errorCollector, Prope

private void validateAnalyzerOptions(ValidationErrorCollector errorCollector, PropertyMapping expectedMapping, PropertyMapping actualMapping) {
validateEqualWithDefault( errorCollector, "analyzer", expectedMapping.getAnalyzer(), actualMapping.getAnalyzer(), "default" );
validateEqualWithoutDefault( errorCollector, "search_analyzer", expectedMapping.getSearchAnalyzer(), actualMapping.getSearchAnalyzer() );
validateEqualWithoutDefault( errorCollector, "normalizer", expectedMapping.getNormalizer(), actualMapping.getNormalizer() );
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,6 @@ class ElasticsearchStringIndexFieldTypeOptionsStep
private static final Log log = LoggerFactory.make( Log.class, MethodHandles.lookup() );

private String analyzerName;
// TODO HSEARCH-3042 use this value
private String searchAnalyzerName;
private String normalizerName;
private Projectable projectable = Projectable.DEFAULT;
Expand Down Expand Up @@ -130,6 +129,7 @@ public IndexFieldType<String> toIndexFieldType() {
if ( analyzerName != null ) {
mapping.setType( DataTypes.TEXT );
mapping.setAnalyzer( analyzerName );
mapping.setSearchAnalyzer( searchAnalyzerName );
mapping.setTermVector( resolveTermVector() );

if ( normalizerName != null ) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,8 @@ public ElasticsearchTextFieldPredicateBuilderFactory( boolean searchable,
ElasticsearchFieldCodec<String> codec, PropertyMapping mapping) {
super( searchable, converter, rawConverter, codec );
this.type = mapping.getType();
this.analyzer = mapping.getAnalyzer();
this.analyzer = ( mapping.getSearchAnalyzer() != null ) ?
mapping.getSearchAnalyzer() : mapping.getAnalyzer();
this.normalizer = mapping.getNormalizer();
}

Expand Down

0 comments on commit 1054b8d

Please sign in to comment.