FTS Parser (MOB-571): Field Groups; Proximity; Escaping in phrases, terms, and identifiers; return to the old default to OR terms together; support for |+-! and not; forced tokenisation

git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@14104 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Andrew Hind
2009-04-28 13:36:38 +00:00
parent 8ebf11b2fc
commit f743983dcb
27 changed files with 2890 additions and 1640 deletions

View File

@@ -63,6 +63,8 @@ import org.alfresco.repo.search.impl.querymodel.QueryModelFactory;
import org.alfresco.repo.search.impl.querymodel.Selector;
import org.alfresco.repo.search.impl.querymodel.SelectorArgument;
import org.alfresco.repo.search.impl.querymodel.Source;
import org.alfresco.repo.search.impl.querymodel.Constraint.Occur;
import org.alfresco.repo.search.impl.querymodel.QueryOptions.Connective;
import org.alfresco.repo.search.impl.querymodel.impl.BaseComparison;
import org.alfresco.repo.search.impl.querymodel.impl.functions.Child;
import org.alfresco.repo.search.impl.querymodel.impl.functions.Descendant;
@@ -232,7 +234,8 @@ public class CMISQueryParser
if (notNode.getType() == CMISParser.NEGATION)
{
Constraint constraint = buildTest((CommonTree) notNode.getChild(0), factory, functionEvaluationContext, selectors, columns);
return factory.createNegation(constraint);
constraint.setOccur(Occur.EXCLUDE);
return constraint;
}
else
{
@@ -379,7 +382,7 @@ public class CMISQueryParser
throw new CMISQueryException("A selector must be specified when there are two or more selectors");
}
}
return ftsQueryParser.buildFTS(ftsExpression.substring(1, ftsExpression.length() - 1), factory, functionEvaluationContext, selector, columns);
return ftsQueryParser.buildFTS(ftsExpression.substring(1, ftsExpression.length() - 1), factory, functionEvaluationContext, selector, columns, Connective.OR, Connective.OR);
case CMISParser.PRED_IN:
functionName = In.NAME;
function = factory.getFunction(functionName);