Skip to content

Commit

Permalink
HSEARCH-3042 Add searchAnalyzer option to the programmatic API
Browse files Browse the repository at this point in the history
  • Loading branch information
fax4ever committed Sep 26, 2019
1 parent beead59 commit 7ec47ca
Show file tree
Hide file tree
Showing 8 changed files with 56 additions and 0 deletions.
Expand Up @@ -41,6 +41,8 @@ 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;
private Searchable searchable = Searchable.DEFAULT;
Expand All @@ -60,6 +62,12 @@ public ElasticsearchStringIndexFieldTypeOptionsStep analyzer(String analyzerName
return this;
}

@Override
public ElasticsearchStringIndexFieldTypeOptionsStep searchAnalyzer(String searchAnalyzerName) {
this.searchAnalyzerName = searchAnalyzerName;
return this;
}

@Override
public ElasticsearchStringIndexFieldTypeOptionsStep normalizer(String normalizerName) {
this.normalizerName = normalizerName;
Expand Down
Expand Up @@ -36,6 +36,8 @@ class LuceneStringIndexFieldTypeOptionsStep
private static final Log log = LoggerFactory.make( Log.class, MethodHandles.lookup() );

private String analyzerName;
// TODO HSEARCH-3042 use this value
private String searchAnalyzerName;
private Analyzer analyzer;
private String normalizerName;
private Analyzer normalizer;
Expand All @@ -59,6 +61,12 @@ public LuceneStringIndexFieldTypeOptionsStep analyzer(String analyzerName) {
return this;
}

@Override
public LuceneStringIndexFieldTypeOptionsStep searchAnalyzer(String searchAnalyzerName) {
this.searchAnalyzerName = searchAnalyzerName;
return this;
}

@Override
public LuceneStringIndexFieldTypeOptionsStep normalizer(String normalizerName) {
this.normalizerName = normalizerName;
Expand Down
Expand Up @@ -28,6 +28,18 @@ public interface StringIndexFieldTypeOptionsStep<S extends StringIndexFieldTypeO
*/
S analyzer(String analyzerName);

/**
* Overrides {@link #analyzer} to use for query parameters at search time.
* <p>
* A search analyzer can only be set if an analyzer was set through {@link #analyzer(String)}.
*
* @param searchAnalyzerName The name of an analyzer to apply to values when querying the index only.
* It overrides the {@link #analyzer(String)} when querying the index.
* See the reference documentation for more information about analyzers and how to define them.
* @return {@code this}, for method chaining.
*/
S searchAnalyzer(String searchAnalyzerName);

/**
* Define the type as normalized.
* <p>
Expand Down
Expand Up @@ -347,6 +347,10 @@ PropertyMappingFieldOptionsStep<?> initFieldMappingContext(PropertyMappingStep m
PropertyMappingFullTextFieldOptionsStep fieldContext = mappingContext.fullTextField( fieldName )
.analyzer( annotation.analyzer() );

if ( !annotation.searchAnalyzer().isEmpty() ) {
fieldContext.searchAnalyzer( annotation.searchAnalyzer() );
}

Norms norms = annotation.norms();
if ( !Norms.DEFAULT.equals( norms ) ) {
fieldContext.norms( norms );
Expand Down
Expand Up @@ -24,6 +24,13 @@ public interface PropertyMappingFullTextFieldOptionsStep
*/
PropertyMappingFullTextFieldOptionsStep analyzer(String analyzerName);

/**
* @param searchAnalyzerName A reference to the analyzer to use for query parameters at search time.
* @return {@code this}, for method chaining.
* @see FullTextField#searchAnalyzer()
*/
PropertyMappingFullTextFieldOptionsStep searchAnalyzer(String searchAnalyzerName);

/**
* @param norms Whether index time scoring information should be stored or not.
* @return {@code this}, for method chaining.
Expand Down
Expand Up @@ -42,6 +42,12 @@ public PropertyMappingFullTextFieldOptionsStep analyzer(String normalizerName) {
return thisAsS();
}

@Override
public PropertyMappingFullTextFieldOptionsStep searchAnalyzer(String searchAnalyzerName) {
fieldModelContributor.add( (c, b) -> c.searchAnalyzer( searchAnalyzerName ) );
return thisAsS();
}

@Override
public PropertyMappingFullTextFieldOptionsStep norms(Norms norms) {
fieldModelContributor.add( (c, b) -> c.norms( norms ) );
Expand Down
Expand Up @@ -138,6 +138,11 @@ public Builder analyzerName(String analyzerName) {
return this;
}

public Builder searchAnalyzerName(String searchAnalyzerName) {
attribute( "searchAnalyzerName", searchAnalyzerName );
return this;
}

public Builder normalizerName(String normalizerName) {
attribute( "normalizerName", normalizerName );
return this;
Expand Down
Expand Up @@ -29,6 +29,12 @@ public StubStringIndexFieldTypeOptionsStep analyzer(String analyzerName) {
return this;
}

@Override
public StubStringIndexFieldTypeOptionsStep searchAnalyzer(String searchAnalyzerName) {
modifiers.add( b -> b.searchAnalyzerName( searchAnalyzerName ) );
return this;
}

@Override
public StubStringIndexFieldTypeOptionsStep normalizer(String normalizerName) {
modifiers.add( b -> b.normalizerName( normalizerName ) );
Expand Down

0 comments on commit 7ec47ca

Please sign in to comment.