You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by us...@apache.org on 2013/10/18 01:16:46 UTC
svn commit: r1533286 -
/lucene/dev/branches/lucene4956/lucene/analysis/arirang/src/java/org/apache/lucene/analysis/ko/tagging/Tagger.java
Author: uschindler
Date: Thu Oct 17 23:16:46 2013
New Revision: 1533286
URL: http://svn.apache.org/r1533286
Log:
LUCENE-4956: Remove thread-unsafe lazy loading. Initialize in static ctor
Modified:
lucene/dev/branches/lucene4956/lucene/analysis/arirang/src/java/org/apache/lucene/analysis/ko/tagging/Tagger.java
Modified: lucene/dev/branches/lucene4956/lucene/analysis/arirang/src/java/org/apache/lucene/analysis/ko/tagging/Tagger.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4956/lucene/analysis/arirang/src/java/org/apache/lucene/analysis/ko/tagging/Tagger.java?rev=1533286&r1=1533285&r2=1533286&view=diff
==============================================================================
--- lucene/dev/branches/lucene4956/lucene/analysis/arirang/src/java/org/apache/lucene/analysis/ko/tagging/Tagger.java (original)
+++ lucene/dev/branches/lucene4956/lucene/analysis/arirang/src/java/org/apache/lucene/analysis/ko/tagging/Tagger.java Thu Oct 17 23:16:46 2013
@@ -17,6 +17,7 @@ package org.apache.lucene.analysis.ko.ta
* limitations under the License.
*/
+import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
@@ -34,7 +35,32 @@ import org.apache.lucene.analysis.ko.uti
*/
public class Tagger {
- private static Trie<String, String[]> occurrences;
+ private static final Trie<String, String[]> occurrences = new Trie<String, String[]>(true);;
+ static {
+ try {
+ List<String> strs = DictionaryResources.readLines(DictionaryResources.FILE_TAG_DIC);
+
+ for(String str : strs) {
+ if(str==null) continue;
+ str = str.trim();
+ String[] syls = str.split("[:]+");
+ if(syls.length!=4) continue;
+
+ String key = null;
+ if("F".equals(syls[0])) key = syls[2].substring(0,syls[2].lastIndexOf("/")+1) + syls[1].substring(0,syls[1].lastIndexOf("/"));
+ else key = syls[1].substring(0,syls[1].lastIndexOf("/")+1) + syls[2].substring(0,syls[2].lastIndexOf("/"));
+
+ final String joined = syls[1] + "/" + syls[2] + "/" + syls[3];
+ String[] patns = joined.split("[/]+");
+
+ occurrences.add(syls[0]+key, patns);
+
+ }
+
+ } catch (IOException ioe) {
+ throw new Error("Fail to read the tagger dictionary.", ioe);
+ }
+ }
private static final String NILL = "NILL";
@@ -261,39 +287,7 @@ public class Tagger {
@SuppressWarnings("unchecked")
public static synchronized Iterator<String[]> getGR(String prefix) throws MorphException {
-
- if(occurrences==null) loadTaggerDic();
-
return occurrences.getPrefixedBy(prefix);
}
- private static synchronized void loadTaggerDic() throws MorphException {
-
- occurrences = new Trie<String, String[]>(true);
-
- try {
-
- List<String> strs = DictionaryResources.readLines(DictionaryResources.FILE_TAG_DIC);
-
- for(String str : strs) {
- if(str==null) continue;
- str = str.trim();
- String[] syls = str.split("[:]+");
- if(syls.length!=4) continue;
-
- String key = null;
- if("F".equals(syls[0])) key = syls[2].substring(0,syls[2].lastIndexOf("/")+1) + syls[1].substring(0,syls[1].lastIndexOf("/"));
- else key = syls[1].substring(0,syls[1].lastIndexOf("/")+1) + syls[2].substring(0,syls[2].lastIndexOf("/"));
-
- final String joined = syls[1] + "/" + syls[2] + "/" + syls[3];
- String[] patns = joined.split("[/]+");
-
- occurrences.add(syls[0]+key, patns);
-
- }
-
- } catch (Exception e) {
- throw new MorphException("Fail to read the tagger dictionary: "+e.getMessage());
- }
- }
}