MatchRule9.java
01 package gate.creole.orthomatcher;
02 
03 
04 /**
05  * RULE #9: does one of the names match the token
06  * just before a trailing company designator
07  * in the other name?
08  * The company designator has already been chopped off,
09  * so the token before it, is in fact the last token
10  * e.g. "R.H. Macy Co." == "Macy"
11  * Applied to: organisation annotations only
12  */
13 public class MatchRule9 implements OrthoMatcherRule {
14 
15   OrthoMatcher orthomatcher;
16   
17   public MatchRule9(OrthoMatcher orthmatcher){
18     this.orthomatcher=orthmatcher;
19   }
20   
21   @Override
22   public boolean value(String s1, String s2) {
23     
24     boolean result=false;
25     
26     // if (s1.equalsIgnoreCase("news") || s2.equalsIgnoreCase("news"))
27     //  Out.prln("Rule 9 " + s1 + " and " + s2);
28         String s1_short = (String)
29         orthomatcher.tokensLongAnnot.get(
30             orthomatcher.tokensLongAnnot.size()-1).getFeatures().get(OrthoMatcher.TOKEN_STRING_FEATURE_NAME);
31     //  Out.prln("Converted to " + s1_short);
32         if (orthomatcher.tokensLongAnnot.size()>1) {
33           boolean matched = OrthoMatcherHelper.straightCompare(s1_short, s2, orthomatcher.caseSensitive);
34           //we need to make sure all names match, instead of assuming transitivity,
35           //to avoid matching BBC News with News then News with ITV News, which
36           //by transitivity leads to BBC News matching ITV News which is not what
37           //we want
38           if (matched)
39             orthomatcher.allMatchingNeeded = true;
40           result = matched;
41         //if
42 
43         if (resultOrthoMatcherHelper.usedRule(9);
44         return result;
45   }
46   
47   @Override
48   public String getId(){
49     return "MatchRule9";
50   }
51 }