mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-07 17:49:17 +00:00
Search API updates. FTS fixes for range and dual tokenisation.
git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@14419 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -27,6 +27,7 @@ package org.alfresco.cmis.mapping;
|
||||
import java.io.Serializable;
|
||||
import java.util.Collection;
|
||||
|
||||
import org.alfresco.repo.search.impl.lucene.AnalysisMode;
|
||||
import org.alfresco.repo.search.impl.lucene.LuceneQueryParser;
|
||||
import org.alfresco.repo.search.impl.querymodel.PredicateMode;
|
||||
import org.alfresco.service.ServiceRegistry;
|
||||
@@ -77,7 +78,7 @@ public abstract class AbstractSimpleProperty extends AbstractProperty
|
||||
*/
|
||||
public Query buildLuceneEquality(LuceneQueryParser lqp, Serializable value, PredicateMode mode) throws ParseException
|
||||
{
|
||||
return lqp.getFieldQuery(getLuceneFieldName(), getValueAsString(value));
|
||||
return lqp.getFieldQuery(getLuceneFieldName(), getValueAsString(value), AnalysisMode.IDENTIFIER);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -88,11 +89,11 @@ public abstract class AbstractSimpleProperty extends AbstractProperty
|
||||
{
|
||||
if (not)
|
||||
{
|
||||
return lqp.getFieldQuery("ISNULL", getQNameForExists().toString());
|
||||
return lqp.getFieldQuery("ISNULL", getQNameForExists().toString(), AnalysisMode.DEFAULT);
|
||||
}
|
||||
else
|
||||
{
|
||||
return lqp.getFieldQuery("ISNOTNULL", getQNameForExists().toString());
|
||||
return lqp.getFieldQuery("ISNOTNULL", getQNameForExists().toString(), AnalysisMode.DEFAULT);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -104,7 +105,7 @@ public abstract class AbstractSimpleProperty extends AbstractProperty
|
||||
{
|
||||
String field = getLuceneFieldName();
|
||||
String stringValue = getValueAsString(value);
|
||||
return lqp.getRangeQuery(field, stringValue, getRangeMax(), false, true);
|
||||
return lqp.getRangeQuery(field, stringValue, getRangeMax(), false, true, AnalysisMode.IDENTIFIER);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -115,7 +116,7 @@ public abstract class AbstractSimpleProperty extends AbstractProperty
|
||||
{
|
||||
String field = getLuceneFieldName();
|
||||
String stringValue = getValueAsString(value);
|
||||
return lqp.getRangeQuery(field, stringValue, getRangeMax(), true, true);
|
||||
return lqp.getRangeQuery(field, stringValue, getRangeMax(), true, true, AnalysisMode.IDENTIFIER);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -148,11 +149,11 @@ public abstract class AbstractSimpleProperty extends AbstractProperty
|
||||
String value = asStrings.iterator().next();
|
||||
if (not)
|
||||
{
|
||||
return lqp.getDoesNotMatchFieldQuery(field, value);
|
||||
return lqp.getDoesNotMatchFieldQuery(field, value, AnalysisMode.IDENTIFIER);
|
||||
}
|
||||
else
|
||||
{
|
||||
return lqp.getFieldQuery(field, value);
|
||||
return lqp.getFieldQuery(field, value, AnalysisMode.IDENTIFIER);
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -164,7 +165,7 @@ public abstract class AbstractSimpleProperty extends AbstractProperty
|
||||
}
|
||||
for (String value : asStrings)
|
||||
{
|
||||
Query any = lqp.getFieldQuery(field, value);
|
||||
Query any = lqp.getFieldQuery(field, value, AnalysisMode.IDENTIFIER);
|
||||
if (not)
|
||||
{
|
||||
booleanQuery.add(any, Occur.MUST_NOT);
|
||||
@@ -186,7 +187,7 @@ public abstract class AbstractSimpleProperty extends AbstractProperty
|
||||
{
|
||||
String field = getLuceneFieldName();
|
||||
String stringValue = getValueAsString(value);
|
||||
return lqp.getDoesNotMatchFieldQuery(field, stringValue);
|
||||
return lqp.getDoesNotMatchFieldQuery(field, stringValue, AnalysisMode.IDENTIFIER);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -197,7 +198,7 @@ public abstract class AbstractSimpleProperty extends AbstractProperty
|
||||
{
|
||||
String field = getLuceneFieldName();
|
||||
String stringValue = getValueAsString(value);
|
||||
return lqp.getRangeQuery(field, getRangeMin(), stringValue, true, false);
|
||||
return lqp.getRangeQuery(field, getRangeMin(), stringValue, true, false, AnalysisMode.IDENTIFIER);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -208,7 +209,7 @@ public abstract class AbstractSimpleProperty extends AbstractProperty
|
||||
{
|
||||
String field = getLuceneFieldName();
|
||||
String stringValue = getValueAsString(value);
|
||||
return lqp.getRangeQuery(field, getRangeMin(), stringValue, true, true);
|
||||
return lqp.getRangeQuery(field, getRangeMin(), stringValue, true, true, AnalysisMode.IDENTIFIER);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -224,12 +225,12 @@ public abstract class AbstractSimpleProperty extends AbstractProperty
|
||||
{
|
||||
BooleanQuery booleanQuery = new BooleanQuery();
|
||||
booleanQuery.add(new MatchAllDocsQuery(), Occur.MUST);
|
||||
booleanQuery.add(lqp.getLikeQuery(field, stringValue), Occur.MUST_NOT);
|
||||
booleanQuery.add(lqp.getLikeQuery(field, stringValue, AnalysisMode.IDENTIFIER), Occur.MUST_NOT);
|
||||
return booleanQuery;
|
||||
}
|
||||
else
|
||||
{
|
||||
return lqp.getLikeQuery(field, stringValue);
|
||||
return lqp.getLikeQuery(field, stringValue, AnalysisMode.IDENTIFIER);
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -30,6 +30,7 @@ import java.util.Collection;
|
||||
import org.alfresco.cmis.CMISDictionaryModel;
|
||||
import org.alfresco.cmis.CMISQueryException;
|
||||
import org.alfresco.model.ContentModel;
|
||||
import org.alfresco.repo.search.impl.lucene.AnalysisMode;
|
||||
import org.alfresco.repo.search.impl.lucene.LuceneQueryParser;
|
||||
import org.alfresco.repo.search.impl.querymodel.PredicateMode;
|
||||
import org.alfresco.service.ServiceRegistry;
|
||||
@@ -104,7 +105,7 @@ public class ObjectIdProperty extends AbstractProperty
|
||||
{
|
||||
String field = getLuceneFieldName();
|
||||
String stringValue = getValueAsString(value);
|
||||
return lqp.getFieldQuery(field, stringValue);
|
||||
return lqp.getFieldQuery(field, stringValue, AnalysisMode.IDENTIFIER);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -171,11 +172,11 @@ public class ObjectIdProperty extends AbstractProperty
|
||||
String value = asStrings.iterator().next();
|
||||
if (not)
|
||||
{
|
||||
return lqp.getDoesNotMatchFieldQuery(field, value);
|
||||
return lqp.getDoesNotMatchFieldQuery(field, value, AnalysisMode.IDENTIFIER);
|
||||
}
|
||||
else
|
||||
{
|
||||
return lqp.getFieldQuery(field, value);
|
||||
return lqp.getFieldQuery(field, value, AnalysisMode.IDENTIFIER);
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -187,7 +188,7 @@ public class ObjectIdProperty extends AbstractProperty
|
||||
}
|
||||
for (String value : asStrings)
|
||||
{
|
||||
Query any = lqp.getFieldQuery(field, value);
|
||||
Query any = lqp.getFieldQuery(field, value, AnalysisMode.IDENTIFIER);
|
||||
if (not)
|
||||
{
|
||||
booleanQuery.add(any, Occur.MUST_NOT);
|
||||
@@ -209,7 +210,7 @@ public class ObjectIdProperty extends AbstractProperty
|
||||
{
|
||||
String field = getLuceneFieldName();
|
||||
String stringValue = getValueAsString(value);
|
||||
return lqp.getDoesNotMatchFieldQuery(field, stringValue);
|
||||
return lqp.getDoesNotMatchFieldQuery(field, stringValue, AnalysisMode.IDENTIFIER);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -245,12 +246,12 @@ public class ObjectIdProperty extends AbstractProperty
|
||||
{
|
||||
BooleanQuery booleanQuery = new BooleanQuery();
|
||||
booleanQuery.add(new MatchAllDocsQuery(), Occur.MUST);
|
||||
booleanQuery.add(lqp.getLikeQuery(field, stringValue), Occur.MUST_NOT);
|
||||
booleanQuery.add(lqp.getLikeQuery(field, stringValue, AnalysisMode.IDENTIFIER), Occur.MUST_NOT);
|
||||
return booleanQuery;
|
||||
}
|
||||
else
|
||||
{
|
||||
return lqp.getLikeQuery(field, stringValue);
|
||||
return lqp.getLikeQuery(field, stringValue, AnalysisMode.IDENTIFIER);
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -31,6 +31,7 @@ import java.util.Collection;
|
||||
import org.alfresco.cmis.CMISDictionaryModel;
|
||||
import org.alfresco.cmis.CMISQueryException;
|
||||
import org.alfresco.cmis.CMISTypeDefinition;
|
||||
import org.alfresco.repo.search.impl.lucene.AnalysisMode;
|
||||
import org.alfresco.repo.search.impl.lucene.LuceneQueryParser;
|
||||
import org.alfresco.repo.search.impl.querymodel.PredicateMode;
|
||||
import org.alfresco.service.ServiceRegistry;
|
||||
@@ -96,7 +97,7 @@ public class ObjectTypeIdProperty extends AbstractProperty
|
||||
String field = getLuceneFieldName();
|
||||
String stringValue = getValueAsString(value);
|
||||
CMISTypeDefinition type = getServiceRegistry().getCMISDictionaryService().findType(stringValue);
|
||||
return lqp.getFieldQuery(field, type.getTypeId().getQName().toString());
|
||||
return lqp.getFieldQuery(field, type.getTypeId().getQName().toString(), AnalysisMode.IDENTIFIER);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -165,11 +166,11 @@ public class ObjectTypeIdProperty extends AbstractProperty
|
||||
String value = asStrings.iterator().next();
|
||||
if (not)
|
||||
{
|
||||
return lqp.getDoesNotMatchFieldQuery(field, value);
|
||||
return lqp.getDoesNotMatchFieldQuery(field, value, AnalysisMode.IDENTIFIER);
|
||||
}
|
||||
else
|
||||
{
|
||||
return lqp.getFieldQuery(field, value);
|
||||
return lqp.getFieldQuery(field, value, AnalysisMode.IDENTIFIER);
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -181,7 +182,7 @@ public class ObjectTypeIdProperty extends AbstractProperty
|
||||
}
|
||||
for (String value : asStrings)
|
||||
{
|
||||
Query any = lqp.getFieldQuery(field, value);
|
||||
Query any = lqp.getFieldQuery(field, value, AnalysisMode.IDENTIFIER);
|
||||
if (not)
|
||||
{
|
||||
booleanQuery.add(any, Occur.MUST_NOT);
|
||||
@@ -204,7 +205,7 @@ public class ObjectTypeIdProperty extends AbstractProperty
|
||||
String field = getLuceneFieldName();
|
||||
String stringValue = getValueAsString(value);
|
||||
CMISTypeDefinition type = getServiceRegistry().getCMISDictionaryService().findType(stringValue);
|
||||
return lqp.getDoesNotMatchFieldQuery(field, type.getTypeId().getQName().toString());
|
||||
return lqp.getDoesNotMatchFieldQuery(field, type.getTypeId().getQName().toString(), AnalysisMode.IDENTIFIER);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -240,12 +241,12 @@ public class ObjectTypeIdProperty extends AbstractProperty
|
||||
{
|
||||
BooleanQuery booleanQuery = new BooleanQuery();
|
||||
booleanQuery.add(new MatchAllDocsQuery(), Occur.MUST);
|
||||
booleanQuery.add(lqp.getLikeQuery(field, typeQName), Occur.MUST_NOT);
|
||||
booleanQuery.add(lqp.getLikeQuery(field, typeQName, AnalysisMode.IDENTIFIER), Occur.MUST_NOT);
|
||||
return booleanQuery;
|
||||
}
|
||||
else
|
||||
{
|
||||
return lqp.getLikeQuery(field, typeQName);
|
||||
return lqp.getLikeQuery(field, typeQName, AnalysisMode.IDENTIFIER);
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -28,6 +28,7 @@ import java.io.Serializable;
|
||||
import java.util.Collection;
|
||||
|
||||
import org.alfresco.cmis.CMISDictionaryModel;
|
||||
import org.alfresco.repo.search.impl.lucene.AnalysisMode;
|
||||
import org.alfresco.repo.search.impl.lucene.LuceneQueryParser;
|
||||
import org.alfresco.repo.search.impl.querymodel.PredicateMode;
|
||||
import org.alfresco.service.ServiceRegistry;
|
||||
@@ -103,7 +104,7 @@ public class ParentProperty extends AbstractProperty
|
||||
{
|
||||
String field = getLuceneFieldName();
|
||||
String stringValue = getValueAsString(value);
|
||||
return lqp.getFieldQuery(field, stringValue);
|
||||
return lqp.getFieldQuery(field, stringValue, AnalysisMode.IDENTIFIER);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -152,11 +153,11 @@ public class ParentProperty extends AbstractProperty
|
||||
String value = asStrings.iterator().next();
|
||||
if (not)
|
||||
{
|
||||
return lqp.getDoesNotMatchFieldQuery(field, value);
|
||||
return lqp.getDoesNotMatchFieldQuery(field, value, AnalysisMode.IDENTIFIER);
|
||||
}
|
||||
else
|
||||
{
|
||||
return lqp.getFieldQuery(field, value);
|
||||
return lqp.getFieldQuery(field, value, AnalysisMode.IDENTIFIER);
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -168,7 +169,7 @@ public class ParentProperty extends AbstractProperty
|
||||
}
|
||||
for (String value : asStrings)
|
||||
{
|
||||
Query any = lqp.getFieldQuery(field, value);
|
||||
Query any = lqp.getFieldQuery(field, value, AnalysisMode.IDENTIFIER);
|
||||
if (not)
|
||||
{
|
||||
booleanQuery.add(any, Occur.MUST_NOT);
|
||||
@@ -190,7 +191,7 @@ public class ParentProperty extends AbstractProperty
|
||||
{
|
||||
String field = getLuceneFieldName();
|
||||
String stringValue = getValueAsString(value);
|
||||
return lqp.getDoesNotMatchFieldQuery(field, stringValue);
|
||||
return lqp.getDoesNotMatchFieldQuery(field, stringValue, AnalysisMode.IDENTIFIER);
|
||||
}
|
||||
|
||||
|
||||
@@ -207,12 +208,12 @@ public class ParentProperty extends AbstractProperty
|
||||
{
|
||||
BooleanQuery booleanQuery = new BooleanQuery();
|
||||
booleanQuery.add(new MatchAllDocsQuery(), Occur.MUST);
|
||||
booleanQuery.add(lqp.getLikeQuery(field, stringValue), Occur.MUST_NOT);
|
||||
booleanQuery.add(lqp.getLikeQuery(field, stringValue, AnalysisMode.IDENTIFIER), Occur.MUST_NOT);
|
||||
return booleanQuery;
|
||||
}
|
||||
else
|
||||
{
|
||||
return lqp.getLikeQuery(field, stringValue);
|
||||
return lqp.getLikeQuery(field, stringValue, AnalysisMode.IDENTIFIER);
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user