From: <and...@us...> - 2013-09-05 09:26:49
|
Revision: 4089 http://sourceforge.net/p/dl-learner/code/4089 Author: andremelo Date: 2013-09-05 09:26:44 +0000 (Thu, 05 Sep 2013) Log Message: ----------- Adding contains to PrefixTrie and fixing addEntry in SimpleEntityCandidatesTrie Modified Paths: -------------- trunk/components-core/src/main/java/org/dllearner/algorithms/isle/index/SimpleEntityCandidatesTrie.java trunk/components-core/src/main/java/org/dllearner/utilities/datastructures/PrefixTrie.java Modified: trunk/components-core/src/main/java/org/dllearner/algorithms/isle/index/SimpleEntityCandidatesTrie.java =================================================================== --- trunk/components-core/src/main/java/org/dllearner/algorithms/isle/index/SimpleEntityCandidatesTrie.java 2013-09-05 09:21:08 UTC (rev 4088) +++ trunk/components-core/src/main/java/org/dllearner/algorithms/isle/index/SimpleEntityCandidatesTrie.java 2013-09-05 09:26:44 UTC (rev 4089) @@ -43,8 +43,10 @@ @Override public void addEntry(String s, Entity e) { - Set<Entity> candidates = trie.get(s); - if (candidates==null) + Set<Entity> candidates; + if (trie.contains(s)) + candidates = trie.get(s); + else candidates = new HashSet<Entity>(); candidates.add(e); @@ -69,7 +71,7 @@ List<String> termsList = new ArrayList(trieMap.keySet()); Collections.sort(termsList); for (String key : termsList) { - output += key + ": ("; + output += key + ":\n"; for (Entity candidate: trieMap.get(key)) { output += "\t"+candidate+"\n"; } Modified: trunk/components-core/src/main/java/org/dllearner/utilities/datastructures/PrefixTrie.java =================================================================== --- trunk/components-core/src/main/java/org/dllearner/utilities/datastructures/PrefixTrie.java 2013-09-05 09:21:08 UTC (rev 4088) +++ trunk/components-core/src/main/java/org/dllearner/utilities/datastructures/PrefixTrie.java 2013-09-05 09:26:44 UTC (rev 4089) @@ -82,6 +82,21 @@ current.value = value; return oldValue; } + + public boolean contains(CharSequence s) { + Node<T> current = root; + for (int i = 0; i < s.length(); i++) { + int nodeIndex = s.charAt(i) - rangeOffset; + if (nodeIndex < 0 || rangeSize <= nodeIndex) { + return false; + } + current = current.next[nodeIndex]; + if (current == null) { + return false; + } + } + return (current.value!=null); + } /** {@inheritDoc} */ public T get(CharSequence s) { @@ -120,10 +135,10 @@ deepestWithValue = current; } } - if (i<=1 || deepestWithValue==root) + if (i<=1 || deepestWithValue==root || deepestWithValue.value==null) return null; else - return s.subSequence(1, i); + return s.subSequence(0, i); } /** This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |