diff options
Diffstat (limited to 'linguistics')
-rw-r--r-- | linguistics/src/main/java/com/yahoo/language/simple/SimpleDetector.java | 52 |
1 files changed, 32 insertions, 20 deletions
diff --git a/linguistics/src/main/java/com/yahoo/language/simple/SimpleDetector.java b/linguistics/src/main/java/com/yahoo/language/simple/SimpleDetector.java index f29ec691c60..0503ac61df1 100644 --- a/linguistics/src/main/java/com/yahoo/language/simple/SimpleDetector.java +++ b/linguistics/src/main/java/com/yahoo/language/simple/SimpleDetector.java @@ -38,36 +38,48 @@ import java.util.Locale; */ public class SimpleDetector implements Detector { - static private TextObjectFactory textObjectFactory; - static private LanguageDetector languageDetector; - - static { - // origin: https://github.com/optimaize/language-detector - //load all languages: - List<LanguageProfile> languageProfiles; - try { - languageProfiles = new LanguageProfileReader().readAllBuiltIn(); - } catch (IOException e) { - throw new RuntimeException(e); - } + static private Object initGuard = new Object(); + static private TextObjectFactory textObjectFactory = null; + static private LanguageDetector languageDetector = null; + + static private void initOptimaize (boolean useOptimaize) { + if (!useOptimaize) return; + synchronized (initGuard) { + if ((textObjectFactory != null) && (languageDetector != null)) return; + + // origin: https://github.com/optimaize/language-detector + //load all languages: + List<LanguageProfile> languageProfiles; + try { + languageProfiles = new LanguageProfileReader().readAllBuiltIn(); + } catch (IOException e) { + throw new RuntimeException(e); + } - //build language detector: - languageDetector = LanguageDetectorBuilder.create(NgramExtractors.standard()) - .withProfiles(languageProfiles) - .build(); + //build language detector: + languageDetector = LanguageDetectorBuilder.create(NgramExtractors.standard()) + .withProfiles(languageProfiles) + .build(); - //create a text object factory - textObjectFactory = CommonTextObjectFactories.forDetectingOnLargeText(); + //create a text object factory + textObjectFactory = CommonTextObjectFactories.forDetectingOnLargeText(); + } } private final boolean enableOptimaize; + private SimpleDetector(boolean enableOptimaize) { + initOptimaize(enableOptimaize); + this.enableOptimaize = enableOptimaize; + + } + public SimpleDetector() { - this.enableOptimaize = true; + this(true); } public SimpleDetector(SimpleLinguisticsConfig.Detector detector) { - this.enableOptimaize = detector.enableOptimaize(); + this(detector.enableOptimaize()); } @Override |