title: What does Drools do with ambiguous matches?
body: <p>I'm playing around with some rules to standardize street addresses that failed look-up from a service provider.</p>
  
  <p>I've defined this rule</p>
  
  <pre><code>rule "Derive Street Aliases"
  when
      $street     : Street();
  then
      insert( new StreetAlias($street.getPrefixPart() + " " + $street.getStemmedPart(), $street.getName()) );
  end 
  </code></pre>
  
  <p>It takes a street name like "South Main Street" and creates the alias "South Main".</p>
  
  <p>This other rule then picks up the alias:</p>
  
  <pre><code>rule "Street Alias Match"
  when
    $userAddress : UserAddress();
    $streetAlias : StreetAlias(alias == $userAddress.getStreetPart());
  then  
    $userAddress.setResolvedAddress($userAddress.getNumberPart() + " " + $streetAlias.getName());
  end
  </code></pre>
  
  <p>This would work fine until a "South Main Avenue" is inserted. Then the alias "South Main" would become ambiguous.</p>
  
  <p>What then is supposed to happen in the 2nd rule? Would it detect a conflict? Would it fire twice so that the last one wins?</p>
  
  <p>I'm interested in the theory of what should happen, as I'm fairly new to Rules Engines.</p>