summaryrefslogtreecommitdiffstats
path: root/linguistics
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2018-09-10 15:17:10 +0200
committerHenning Baldersheim <balder@yahoo-inc.com>2018-09-10 15:17:10 +0200
commit1110552f0653571f73a9adb2c00905ae7956f30e (patch)
tree60a8b4f85220be63367d5e7063c698f7d3881701 /linguistics
parent38b582486ca45285a1a17c2bfcb5edaac3f0b6fe (diff)
Defer loading the huge optimaize knowledgepool until you really need it. This cuts min memory footprint by 100MB+.
Diffstat (limited to 'linguistics')
-rw-r--r--linguistics/src/main/java/com/yahoo/language/simple/SimpleDetector.java52
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