That is a very good question you asked. I like our condition syntax because you can code conditions with
- basic syntax that catches 90% or more of the cases ( these are + and & )
- extended syntax that allows you to adjust for highly specialized cases (creating exceptions, etc)
&^ as I think you saw, means different match
%CITIES.LIST &^ %COUNTRIES.LIST would be true for “Chicago, Jamaica” but false for a simple input “Jamaica”
& means the condition parts around the AND(s) could match for the same words in an input. The condition %CITIES.LIST & %COUNTRIES.LIST would be true for both “Chicago, Jamaica” and “Jamaica”. In the case of the simple input “Jamaica” - that slips through because there are also some cities called Jamaica. So &^ prevents a potential source of error where you have overlapping language objects.
So the reasons to use & are not that substantial:
- & means somewhat simpler looking conditions (if you know lobs are totally unique)
- & is more efficient for engine to evaluate (though with today’s computing power, this may be an imaginary difference).
Reason to use &^ (different match):
- More robust.
- Guarantees that the condition parts match on different words/phrases