From 07bf865bd14056e7f55d375a5e15f07f57e095a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Yoann=20Rodi=C3=A8re?= Date: Thu, 30 Apr 2020 18:10:47 +0200 Subject: [PATCH] HSEARCH-3589 Expose named analyzers and normalizers through LuceneBackend --- .../search/backend/lucene/LuceneBackend.java | 18 +++++++++++++++++- .../backend/lucene/impl/LuceneBackendImpl.java | 12 ++++++++++++ .../lucene/index/LuceneIndexManager.java | 2 +- 3 files changed, 30 insertions(+), 2 deletions(-) diff --git a/backend/lucene/src/main/java/org/hibernate/search/backend/lucene/LuceneBackend.java b/backend/lucene/src/main/java/org/hibernate/search/backend/lucene/LuceneBackend.java index c5dfd8c3f0f..15b5400e586 100644 --- a/backend/lucene/src/main/java/org/hibernate/search/backend/lucene/LuceneBackend.java +++ b/backend/lucene/src/main/java/org/hibernate/search/backend/lucene/LuceneBackend.java @@ -6,10 +6,26 @@ */ package org.hibernate.search.backend.lucene; +import java.util.Optional; + import org.hibernate.search.engine.backend.Backend; +import org.hibernate.search.engine.backend.metamodel.IndexValueFieldTypeDescriptor; + +import org.apache.lucene.analysis.Analyzer; public interface LuceneBackend extends Backend { - // No Lucene-specific backend APIs yet + /** + * @param name An analyzer name, e.g. a name returned by {@link IndexValueFieldTypeDescriptor#analyzerName()} + * or {@link IndexValueFieldTypeDescriptor#searchAnalyzerName()}. + * @return The corresponding analyzer, or {@link Optional#empty()} if it doesn't exist. + */ + Optional analyzer(String name); + + /** + * @param name A normalizer name, e.g. a name returned by {@link IndexValueFieldTypeDescriptor#normalizerName()}. + * @return The corresponding normalizer, or {@link Optional#empty()} if it doesn't exist. + */ + Optional normalizer(String name); } diff --git a/backend/lucene/src/main/java/org/hibernate/search/backend/lucene/impl/LuceneBackendImpl.java b/backend/lucene/src/main/java/org/hibernate/search/backend/lucene/impl/LuceneBackendImpl.java index d5e38c010e3..bcd94141643 100644 --- a/backend/lucene/src/main/java/org/hibernate/search/backend/lucene/impl/LuceneBackendImpl.java +++ b/backend/lucene/src/main/java/org/hibernate/search/backend/lucene/impl/LuceneBackendImpl.java @@ -7,6 +7,7 @@ package org.hibernate.search.backend.lucene.impl; import java.lang.invoke.MethodHandles; +import java.util.Optional; import java.util.concurrent.CompletableFuture; import org.hibernate.search.backend.lucene.analysis.model.impl.LuceneAnalysisDefinitionRegistry; @@ -34,6 +35,7 @@ import org.hibernate.search.util.common.impl.Closer; import org.hibernate.search.util.common.logging.impl.LoggerFactory; +import org.apache.lucene.analysis.Analyzer; import org.apache.lucene.search.similarities.Similarity; @@ -134,6 +136,16 @@ public Backend toAPI() { return this; } + @Override + public Optional analyzer(String name) { + return Optional.ofNullable( analysisDefinitionRegistry.getAnalyzerDefinition( name ) ); + } + + @Override + public Optional normalizer(String name) { + return Optional.ofNullable( analysisDefinitionRegistry.getNormalizerDefinition( name ) ); + } + @Override public IndexManagerBuilder createIndexManagerBuilder( String indexName, String mappedTypeName, diff --git a/backend/lucene/src/main/java/org/hibernate/search/backend/lucene/index/LuceneIndexManager.java b/backend/lucene/src/main/java/org/hibernate/search/backend/lucene/index/LuceneIndexManager.java index d5bf898ba4c..f900cef21c2 100644 --- a/backend/lucene/src/main/java/org/hibernate/search/backend/lucene/index/LuceneIndexManager.java +++ b/backend/lucene/src/main/java/org/hibernate/search/backend/lucene/index/LuceneIndexManager.java @@ -10,6 +10,6 @@ public interface LuceneIndexManager extends IndexManager { - // No Lucene-specific index manager APIs yet. + // No Lucene-specific backend APIs yet }