diff --git a/source/java/org/alfresco/cmis/search/CMISQueryParser.java b/source/java/org/alfresco/cmis/search/CMISQueryParser.java index 0be0e2f87d..51c49185de 100644 --- a/source/java/org/alfresco/cmis/search/CMISQueryParser.java +++ b/source/java/org/alfresco/cmis/search/CMISQueryParser.java @@ -400,7 +400,7 @@ public class CMISQueryParser defaultFieldConnective = options.getDefaultFTSFieldConnective(); } return ftsQueryParser.buildFTS(ftsExpression.substring(1, ftsExpression.length() - 1), factory, functionEvaluationContext, selector, columns, defaultConnective, - defaultFieldConnective, null); + defaultFieldConnective, null, options.getDefaultFieldName()); case CMISParser.PRED_IN: functionName = In.NAME; function = factory.getFunction(functionName); diff --git a/source/java/org/alfresco/repo/search/impl/lucene/ADMLuceneIndexerImpl.java b/source/java/org/alfresco/repo/search/impl/lucene/ADMLuceneIndexerImpl.java index bb5b5d14b5..e38de81f76 100644 --- a/source/java/org/alfresco/repo/search/impl/lucene/ADMLuceneIndexerImpl.java +++ b/source/java/org/alfresco/repo/search/impl/lucene/ADMLuceneIndexerImpl.java @@ -1000,7 +1000,6 @@ public class ADMLuceneIndexerImpl extends AbstractLuceneIndexerImpl imp + (reader == null ? " --- " : Boolean.toString(reader.exists()))); } // not indexed: content missing - doc.add(new Field("TEXT", NOT_INDEXED_CONTENT_MISSING, Field.Store.NO, Field.Index.TOKENIZED, Field.TermVector.NO)); doc.add(new Field(attributeName, NOT_INDEXED_CONTENT_MISSING, Field.Store.NO, Field.Index.TOKENIZED, Field.TermVector.NO)); } } diff --git a/source/java/org/alfresco/repo/search/impl/lucene/ADMLuceneSearcherImpl.java b/source/java/org/alfresco/repo/search/impl/lucene/ADMLuceneSearcherImpl.java index 924cb8398b..50ee6acc33 100644 --- a/source/java/org/alfresco/repo/search/impl/lucene/ADMLuceneSearcherImpl.java +++ b/source/java/org/alfresco/repo/search/impl/lucene/ADMLuceneSearcherImpl.java @@ -108,11 +108,6 @@ public class ADMLuceneSearcherImpl extends AbstractLuceneBase implements LuceneS { static Log s_logger = LogFactory.getLog(ADMLuceneSearcherImpl.class); - /** - * Default field name - */ - private static final String DEFAULT_FIELD = "TEXT"; - private NamespacePrefixResolver namespacePrefixResolver; private NodeService nodeService; @@ -295,7 +290,7 @@ public class ADMLuceneSearcherImpl extends AbstractLuceneBase implements LuceneS } ClosingIndexSearcher searcher = getSearcher(indexer); - Query query = LuceneQueryParser.parse(parameterisedQueryString, DEFAULT_FIELD, new LuceneAnalyser(getDictionaryService(), + Query query = LuceneQueryParser.parse(parameterisedQueryString, searchParameters.getDefaultFieldName(), new LuceneAnalyser(getDictionaryService(), searchParameters.getMlAnalaysisMode() == null ? getLuceneConfig().getDefaultMLSearchAnalysisMode() : searchParameters.getMlAnalaysisMode()), namespacePrefixResolver, getDictionaryService(), tenantService, defaultOperator, searchParameters, getLuceneConfig(), searcher.getIndexReader()); if (s_logger.isDebugEnabled()) diff --git a/source/java/org/alfresco/repo/search/impl/lucene/ADMLuceneTest.java b/source/java/org/alfresco/repo/search/impl/lucene/ADMLuceneTest.java index 3bc3975355..493e333091 100644 --- a/source/java/org/alfresco/repo/search/impl/lucene/ADMLuceneTest.java +++ b/source/java/org/alfresco/repo/search/impl/lucene/ADMLuceneTest.java @@ -1199,6 +1199,14 @@ public class ADMLuceneTest extends TestCase ftsQueryWithCount(searcher, "+PATH:\"/app:company_home/st:sites/cm:rmtestnew1/cm:documentLibrary//*\" AND -TYPE:\"{http://www.alfresco.org/model/content/1.0}thumbnail\"", 0); + + ftsQueryWithCount(searcher, "(brown *(6) dog)", 1); + ftsQueryWithCount(searcher, "TEXT:(brown *(6) dog)", 1); + ftsQueryWithCount(searcher, "\"//.\"", 0); + ftsQueryWithCount(searcher, "PATH", "\"//.\"", 15); + ftsQueryWithCount(searcher, "cm:content:brown", 1); + ftsQueryWithCount(searcher, "ANDY:brown", 1); + ftsQueryWithCount(searcher, "ANDY", "brown", 1); } public void ftsQueryWithCount(ADMLuceneSearcherImpl searcher, String query, int count) @@ -1214,6 +1222,21 @@ public class ADMLuceneTest extends TestCase assertEquals(count, results.length()); results.close(); } + + public void ftsQueryWithCount(ADMLuceneSearcherImpl searcher, String defaultFieldName, String query, int count) + { + SearchParameters sp = new SearchParameters(); + sp.setLanguage(SearchService.LANGUAGE_FTS_ALFRESCO); + sp.addStore(rootNodeRef.getStoreRef()); + sp.setQuery(query); + sp.addQueryTemplate("ANDY", "%cm:content"); + sp.setNamespace(NamespaceService.CONTENT_MODEL_1_0_URI); + sp.excludeDataInTheCurrentTransaction(true); + sp.setDefaultFieldName(defaultFieldName); + ResultSet results = searcher.query(sp); + assertEquals(count, results.length()); + results.close(); + } public void ftsQueryWithCount(ADMLuceneSearcherImpl searcher, String query, int count, NodeRef first, NodeRef last) { diff --git a/source/java/org/alfresco/repo/search/impl/lucene/AVMLuceneIndexerImpl.java b/source/java/org/alfresco/repo/search/impl/lucene/AVMLuceneIndexerImpl.java index 6caa046738..d4feba7da9 100644 --- a/source/java/org/alfresco/repo/search/impl/lucene/AVMLuceneIndexerImpl.java +++ b/source/java/org/alfresco/repo/search/impl/lucene/AVMLuceneIndexerImpl.java @@ -879,7 +879,6 @@ public class AVMLuceneIndexerImpl extends AbstractLuceneIndexerImpl impl + (reader == null ? " --- " : Boolean.toString(reader.exists()))); } // not indexed: content missing - doc.add(new Field("TEXT", NOT_INDEXED_CONTENT_MISSING, Field.Store.NO, Field.Index.TOKENIZED, Field.TermVector.NO)); doc.add(new Field(attributeName, NOT_INDEXED_CONTENT_MISSING, Field.Store.NO, Field.Index.TOKENIZED, Field.TermVector.NO)); } } diff --git a/source/java/org/alfresco/repo/search/impl/lucene/LuceneAlfrescoFtsQueryLanguage.java b/source/java/org/alfresco/repo/search/impl/lucene/LuceneAlfrescoFtsQueryLanguage.java index e8236e7953..3b4b02f367 100644 --- a/source/java/org/alfresco/repo/search/impl/lucene/LuceneAlfrescoFtsQueryLanguage.java +++ b/source/java/org/alfresco/repo/search/impl/lucene/LuceneAlfrescoFtsQueryLanguage.java @@ -64,6 +64,7 @@ public class LuceneAlfrescoFtsQueryLanguage implements LuceneQueryLanguageSPI options.setSkipCount(searchParameters.getSkipCount()); options.setMaxPermissionChecks(searchParameters.getMaxPermissionChecks()); options.setMaxPermissionCheckTimeMillis(searchParameters.getMaxPermissionCheckTimeMillis()); + options.setDefaultFieldName(searchParameters.getDefaultFieldName()); if (searchParameters.getLimitBy() == LimitBy.FINAL_SIZE) { options.setMaxItems(searchParameters.getLimit()); @@ -77,7 +78,7 @@ public class LuceneAlfrescoFtsQueryLanguage implements LuceneQueryLanguageSPI options.setStores(searchParameters.getStores()); Constraint constraint = FTSQueryParser.buildFTS(ftsExpression, factory, context, null, null, options.getDefaultFTSConnective(), options.getDefaultFTSFieldConnective(), - searchParameters.getQueryTemplates()); + searchParameters.getQueryTemplates(), options.getDefaultFieldName()); org.alfresco.repo.search.impl.querymodel.Query query = factory.createQuery(null, null, constraint, buildOrderings(factory, searchParameters)); QueryEngineResults results = queryEngine.executeQuery(query, options, context); diff --git a/source/java/org/alfresco/repo/search/impl/lucene/LuceneAlfrescoSqlQueryLanguage.java b/source/java/org/alfresco/repo/search/impl/lucene/LuceneAlfrescoSqlQueryLanguage.java index ff5cb95129..d5aba0c28b 100644 --- a/source/java/org/alfresco/repo/search/impl/lucene/LuceneAlfrescoSqlQueryLanguage.java +++ b/source/java/org/alfresco/repo/search/impl/lucene/LuceneAlfrescoSqlQueryLanguage.java @@ -69,6 +69,7 @@ public class LuceneAlfrescoSqlQueryLanguage implements LuceneQueryLanguageSPI options.setSkipCount(searchParameters.getSkipCount()); options.setMaxPermissionChecks(searchParameters.getMaxPermissionChecks()); options.setMaxPermissionCheckTimeMillis(searchParameters.getMaxPermissionCheckTimeMillis()); + options.setDefaultFieldName(searchParameters.getDefaultFieldName()); if (searchParameters.getLimitBy() == LimitBy.FINAL_SIZE) { options.setMaxItems(searchParameters.getLimit()); diff --git a/source/java/org/alfresco/repo/search/impl/parsers/FTSQueryParser.java b/source/java/org/alfresco/repo/search/impl/parsers/FTSQueryParser.java index 95e3717b48..5f5a635ad8 100644 --- a/source/java/org/alfresco/repo/search/impl/parsers/FTSQueryParser.java +++ b/source/java/org/alfresco/repo/search/impl/parsers/FTSQueryParser.java @@ -63,7 +63,7 @@ import org.antlr.runtime.tree.Tree; public class FTSQueryParser { static public Constraint buildFTS(String ftsExpression, QueryModelFactory factory, FunctionEvaluationContext functionEvaluationContext, Selector selector, - ArrayList columns, Connective defaultConnective, Connective defaultFieldConnective, Map templates) + ArrayList columns, Connective defaultConnective, Connective defaultFieldConnective, Map templates, String defaultField) { // TODO: Decode sql escape for '' should do in CMIS layer @@ -113,7 +113,7 @@ public class FTSQueryParser parser.setDefaultConjunction(defaultConnective == Connective.AND ? true : false); parser.setDefaultFieldConjunction(defaultFieldConnective == Connective.AND ? true : false); CommonTree ftsNode = (CommonTree) parser.ftsQuery().getTree(); - return buildFTSConnective(null, ftsNode, factory, functionEvaluationContext, selector, columns, templateTrees); + return buildFTSConnective(null, ftsNode, factory, functionEvaluationContext, selector, columns, templateTrees, defaultField); } catch (RecognitionException e) { @@ -130,7 +130,7 @@ public class FTSQueryParser } static private Constraint buildFTSConnective(CommonTree fieldReferenceNode, CommonTree node, QueryModelFactory factory, FunctionEvaluationContext functionEvaluationContext, - Selector selector, ArrayList columns, Map templateTrees) + Selector selector, ArrayList columns, Map templateTrees, String defaultField) { Connective connective; switch (node.getType()) @@ -159,41 +159,41 @@ public class FTSQueryParser case FTSParser.FIELD_DISJUNCTION: case FTSParser.CONJUNCTION: case FTSParser.FIELD_CONJUNCTION: - constraint = buildFTSConnective(fieldReferenceNode, subNode, factory, functionEvaluationContext, selector, columns, templateTrees); + constraint = buildFTSConnective(fieldReferenceNode, subNode, factory, functionEvaluationContext, selector, columns, templateTrees, defaultField); setBoost(constraint, subNode); break; case FTSParser.NEGATION: case FTSParser.FIELD_NEGATION: testNode = (CommonTree) subNode.getChild(0); - constraint = buildFTSTest(fieldReferenceNode, testNode, factory, functionEvaluationContext, selector, columns, templateTrees); + constraint = buildFTSTest(fieldReferenceNode, testNode, factory, functionEvaluationContext, selector, columns, templateTrees, defaultField); constraint.setOccur(Occur.EXCLUDE); setBoost(constraint, subNode); break; case FTSParser.DEFAULT: case FTSParser.FIELD_DEFAULT: testNode = (CommonTree) subNode.getChild(0); - constraint = buildFTSTest(fieldReferenceNode, testNode, factory, functionEvaluationContext, selector, columns, templateTrees); + constraint = buildFTSTest(fieldReferenceNode, testNode, factory, functionEvaluationContext, selector, columns, templateTrees, defaultField); constraint.setOccur(Occur.DEFAULT); setBoost(constraint, subNode); break; case FTSParser.MANDATORY: case FTSParser.FIELD_MANDATORY: testNode = (CommonTree) subNode.getChild(0); - constraint = buildFTSTest(fieldReferenceNode, testNode, factory, functionEvaluationContext, selector, columns, templateTrees); + constraint = buildFTSTest(fieldReferenceNode, testNode, factory, functionEvaluationContext, selector, columns, templateTrees, defaultField); constraint.setOccur(Occur.MANDATORY); setBoost(constraint, subNode); break; case FTSParser.OPTIONAL: case FTSParser.FIELD_OPTIONAL: testNode = (CommonTree) subNode.getChild(0); - constraint = buildFTSTest(fieldReferenceNode, testNode, factory, functionEvaluationContext, selector, columns, templateTrees); + constraint = buildFTSTest(fieldReferenceNode, testNode, factory, functionEvaluationContext, selector, columns, templateTrees, defaultField); constraint.setOccur(Occur.OPTIONAL); setBoost(constraint, subNode); break; case FTSParser.EXCLUDE: case FTSParser.FIELD_EXCLUDE: testNode = (CommonTree) subNode.getChild(0); - constraint = buildFTSTest(fieldReferenceNode, testNode, factory, functionEvaluationContext, selector, columns, templateTrees); + constraint = buildFTSTest(fieldReferenceNode, testNode, factory, functionEvaluationContext, selector, columns, templateTrees, defaultField); constraint.setOccur(Occur.EXCLUDE); setBoost(constraint, subNode); break; @@ -236,7 +236,7 @@ public class FTSQueryParser } static private Constraint buildFTSTest(CommonTree fieldReferenceNode, CommonTree argNode, QueryModelFactory factory, FunctionEvaluationContext functionEvaluationContext, - Selector selector, ArrayList columns, Map templateTrees) + Selector selector, ArrayList columns, Map templateTrees, String defaultField) { CommonTree testNode = argNode; // Check for template replacement @@ -262,6 +262,17 @@ public class FTSQueryParser testNode = copyAndReplace(template, testNode); } } + else + { + if(hasOptionalFieldReference(testNode)) + { + CommonTree template = templateTrees.get(defaultField); + if (template != null) + { + testNode = copyAndReplace(template, testNode); + } + } + } Tree termNode; Float fuzzy = findFuzzy(testNode); @@ -271,7 +282,7 @@ public class FTSQueryParser case FTSParser.FIELD_DISJUNCTION: case FTSParser.CONJUNCTION: case FTSParser.FIELD_CONJUNCTION: - return buildFTSConnective(fieldReferenceNode, testNode, factory, functionEvaluationContext, selector, columns, templateTrees); + return buildFTSConnective(fieldReferenceNode, testNode, factory, functionEvaluationContext, selector, columns, templateTrees, defaultField); case FTSParser.TERM: case FTSParser.FG_TERM: termNode = testNode.getChild(0); @@ -366,7 +377,7 @@ public class FTSQueryParser } CommonTree newFieldReferenceNode = (CommonTree) testNode.getChild(0); CommonTree fieldExperssion = (CommonTree) testNode.getChild(1); - return buildFTSConnective(newFieldReferenceNode, fieldExperssion, factory, functionEvaluationContext, selector, columns, templateTrees); + return buildFTSConnective(newFieldReferenceNode, fieldExperssion, factory, functionEvaluationContext, selector, columns, templateTrees, defaultField); default: throw new FTSQueryException("Unsupported FTS option " + testNode.getText()); } @@ -559,7 +570,7 @@ public class FTSQueryParser CommonTree newChild = insertTreeAndFixFieldRefs(insert, fieldReferenceNode); def.addChild(newChild); } - + } else { @@ -625,47 +636,47 @@ public class FTSQueryParser public void setChannel(int arg0) { // TODO Auto-generated method stub - + } public void setCharPositionInLine(int arg0) { // TODO Auto-generated method stub - + } public void setInputStream(CharStream arg0) { // TODO Auto-generated method stub - + } public void setLine(int arg0) { // TODO Auto-generated method stub - + } public void setText(String arg0) { // TODO Auto-generated method stub - + } public void setTokenIndex(int arg0) { // TODO Auto-generated method stub - + } public void setType(int arg0) { // TODO Auto-generated method stub - + } - + } - + static class DefaultToken implements Token { @@ -713,47 +724,47 @@ public class FTSQueryParser public void setChannel(int arg0) { // TODO Auto-generated method stub - + } public void setCharPositionInLine(int arg0) { // TODO Auto-generated method stub - + } public void setInputStream(CharStream arg0) { // TODO Auto-generated method stub - + } public void setLine(int arg0) { // TODO Auto-generated method stub - + } public void setText(String arg0) { // TODO Auto-generated method stub - + } public void setTokenIndex(int arg0) { // TODO Auto-generated method stub - + } public void setType(int arg0) { // TODO Auto-generated method stub - + } - + } - + static private CommonTree copy(CommonTree source) { CommonTree newNode = new CommonTree(source); @@ -771,6 +782,7 @@ public class FTSQueryParser private static CommonTree insertTreeAndFixFieldRefs(CommonTree source, CommonTree fieldReferenceNode) { + boolean foundRef = false; CommonTree newNode = new CommonTree(source); if (source.getChildCount() > 0) { @@ -781,6 +793,7 @@ public class FTSQueryParser { CommonTree newChild = copy(fieldReferenceNode); newNode.addChild(newChild); + foundRef = true; } else { @@ -789,9 +802,31 @@ public class FTSQueryParser } } } + // if no ref found and it should have one we are creating one in place of the default + if(!foundRef && hasOptionalFieldReference(source)) + { + CommonTree newChild = copy(fieldReferenceNode); + newNode.addChild(newChild); + } return newNode; } + private static boolean hasOptionalFieldReference(CommonTree node) + { + switch (node.getType()) + { + case FTSParser.TERM: + case FTSParser.EXACT_TERM: + case FTSParser.PHRASE: + case FTSParser.SYNONYM: + case FTSParser.PROXIMITY: + case FTSParser.RANGE: + return true; + default: + return false; + } + } + static private Constraint buildFuzzyTerm(Float fuzzy, CommonTree fieldReferenceNode, CommonTree testNode, QueryModelFactory factory, FunctionEvaluationContext functionEvaluationContext, Selector selector, ArrayList columns) { @@ -960,7 +995,7 @@ public class FTSQueryParser return unescape(text); } case FTSParser.FTSPHRASE: - String phrase = text.substring(1, text.length()-1); + String phrase = text.substring(1, text.length() - 1); index = phrase.indexOf('\\'); if (index == -1) { diff --git a/source/java/org/alfresco/repo/search/impl/parsers/fts_test.gunit b/source/java/org/alfresco/repo/search/impl/parsers/fts_test.gunit index 63f8754172..7852e6da83 100644 --- a/source/java/org/alfresco/repo/search/impl/parsers/fts_test.gunit +++ b/source/java/org/alfresco/repo/search/impl/parsers/fts_test.gunit @@ -416,7 +416,7 @@ FTSWORD: "×" FAIL "Ø" OK "÷" FAIL -"ə" FAIL +"ə" OK DECIMAL_INTEGER_LITERAL: diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/QueryOptions.java b/source/java/org/alfresco/repo/search/impl/querymodel/QueryOptions.java index 7699f12834..a0defc3d6a 100644 --- a/source/java/org/alfresco/repo/search/impl/querymodel/QueryOptions.java +++ b/source/java/org/alfresco/repo/search/impl/querymodel/QueryOptions.java @@ -73,6 +73,8 @@ public class QueryOptions // By default uses the central config private long maxPermissionCheckTimeMillis = -1; + private String defaultFieldName = "TEXT"; + /** * Create a CMISQueryOptions instance with the default options other than the query and store ref. The query will be * run using the locale returned by I18NUtil.getLocale() @@ -368,4 +370,19 @@ public class QueryOptions this.maxPermissionChecks = maxPermissionChecks; } + /** + * @return the default field name + */ + public String getDefaultFieldName() + { + return defaultFieldName; + } + + /** + * @param defaultFieldName - the default field name to use + */ + public void setDefaultFieldName(String defaultFieldName) + { + this.defaultFieldName = defaultFieldName; + } } diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/LuceneQueryBuilderContext.java b/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/LuceneQueryBuilderContext.java index fb5bc60eec..90a034f93a 100644 --- a/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/LuceneQueryBuilderContext.java +++ b/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/LuceneQueryBuilderContext.java @@ -57,7 +57,7 @@ public class LuceneQueryBuilderContext { LuceneAnalyser analyzer = new LuceneAnalyser(dictionaryService, searchParameters.getMlAnalaysisMode() == null ? config.getDefaultMLSearchAnalysisMode() : searchParameters .getMlAnalaysisMode()); - lqp = new LuceneQueryParser("TEXT", analyzer); + lqp = new LuceneQueryParser(searchParameters.getDefaultFieldName(), analyzer); lqp.setDefaultOperator(LuceneQueryParser.OR_OPERATOR); lqp.setDictionaryService(dictionaryService); lqp.setNamespacePrefixResolver(namespacePrefixResolver); diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/LuceneQueryEngine.java b/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/LuceneQueryEngine.java index 1972c98236..f564dccdaf 100644 --- a/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/LuceneQueryEngine.java +++ b/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/LuceneQueryEngine.java @@ -146,6 +146,7 @@ public class LuceneQueryEngine implements QueryEngine searchParameters.setSkipCount(options.getSkipCount()); searchParameters.setMaxPermissionChecks(options.getMaxPermissionChecks()); searchParameters.setMaxPermissionCheckTimeMillis(options.getMaxPermissionCheckTimeMillis()); + searchParameters.setDefaultFieldName(options.getDefaultFieldName()); if (options.getMaxItems() >= 0) { searchParameters.setLimitBy(LimitBy.FINAL_SIZE); diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/functions/LuceneFTSFuzzyTerm.java b/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/functions/LuceneFTSFuzzyTerm.java index 5ccfd1c249..7920201baf 100644 --- a/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/functions/LuceneFTSFuzzyTerm.java +++ b/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/functions/LuceneFTSFuzzyTerm.java @@ -78,7 +78,7 @@ public class LuceneFTSFuzzyTerm extends FTSFuzzyTerm implements LuceneQueryBuild } else { - query = lqp.getFuzzyQuery("TEXT", term, minSimilarity); + query = lqp.getFuzzyQuery(lqp.getField(), term, minSimilarity); } return query; diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/functions/LuceneFTSPhrase.java b/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/functions/LuceneFTSPhrase.java index 5a28c0feed..b64e96bd6e 100644 --- a/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/functions/LuceneFTSPhrase.java +++ b/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/functions/LuceneFTSPhrase.java @@ -83,7 +83,7 @@ public class LuceneFTSPhrase extends FTSPhrase implements LuceneQueryBuilderComp } else { - query = lqp.getFieldQuery("TEXT", term, AnalysisMode.TOKENISE, slop, LuceneFunction.FIELD); + query = lqp.getFieldQuery(lqp.getField(), term, AnalysisMode.TOKENISE, slop, LuceneFunction.FIELD); } return query; diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/functions/LuceneFTSPrefixTerm.java b/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/functions/LuceneFTSPrefixTerm.java index 1738df5bb1..083c0594c5 100644 --- a/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/functions/LuceneFTSPrefixTerm.java +++ b/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/functions/LuceneFTSPrefixTerm.java @@ -77,7 +77,7 @@ public class LuceneFTSPrefixTerm extends FTSPrefixTerm implements LuceneQueryBui } else { - query = lqp.getPrefixQuery("TEXT", term); + query = lqp.getPrefixQuery(lqp.getField(), term); } return query; diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/functions/LuceneFTSProximity.java b/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/functions/LuceneFTSProximity.java index a7bc61c5ca..c549c5a024 100644 --- a/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/functions/LuceneFTSProximity.java +++ b/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/functions/LuceneFTSProximity.java @@ -87,7 +87,7 @@ public class LuceneFTSProximity extends FTSProximity implements LuceneQueryBuild } else { - query = lqp.getSpanQuery("TEXT", first, last, slop, true); + query = lqp.getSpanQuery(lqp.getField(), first, last, slop, true); } return query; diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/functions/LuceneFTSRange.java b/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/functions/LuceneFTSRange.java index 6f162908eb..29a6d509ce 100644 --- a/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/functions/LuceneFTSRange.java +++ b/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/functions/LuceneFTSRange.java @@ -83,7 +83,7 @@ public class LuceneFTSRange extends FTSRange implements LuceneQueryBuilderCompon } else { - query = lqp.getRangeQuery("TEXT", from, to, fromInc, toInc, AnalysisMode.DEFAULT, LuceneFunction.FIELD); + query = lqp.getRangeQuery(lqp.getField(), from, to, fromInc, toInc, AnalysisMode.DEFAULT, LuceneFunction.FIELD); } return query; } diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/functions/LuceneFTSTerm.java b/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/functions/LuceneFTSTerm.java index 7dfebba73a..f62b7afd3f 100644 --- a/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/functions/LuceneFTSTerm.java +++ b/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/functions/LuceneFTSTerm.java @@ -77,7 +77,7 @@ public class LuceneFTSTerm extends FTSTerm implements LuceneQueryBuilderComponen } else { - query = lqp.getFieldQuery("TEXT", term, mode, LuceneFunction.FIELD); + query = lqp.getFieldQuery(lqp.getField(), term, mode, LuceneFunction.FIELD); } return query; diff --git a/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/functions/LuceneFTSWildTerm.java b/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/functions/LuceneFTSWildTerm.java index 8d6c430827..f987d2f933 100644 --- a/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/functions/LuceneFTSWildTerm.java +++ b/source/java/org/alfresco/repo/search/impl/querymodel/impl/lucene/functions/LuceneFTSWildTerm.java @@ -76,7 +76,7 @@ public class LuceneFTSWildTerm extends FTSWildTerm implements LuceneQueryBuilder } else { - query = lqp.getWildcardQuery("TEXT", term); + query = lqp.getWildcardQuery(lqp.getField(), term); } return query; diff --git a/source/java/org/alfresco/service/cmr/search/SearchParameters.java b/source/java/org/alfresco/service/cmr/search/SearchParameters.java index 1ee29d90e6..50f2b66294 100644 --- a/source/java/org/alfresco/service/cmr/search/SearchParameters.java +++ b/source/java/org/alfresco/service/cmr/search/SearchParameters.java @@ -157,6 +157,8 @@ public class SearchParameters // By default uses the central config private long maxPermissionCheckTimeMillis = -1; + private String defaultFieldName = "TEXT"; + /** * Default constructor */ @@ -768,4 +770,20 @@ public class SearchParameters } + /** + * @return the default field name + */ + public String getDefaultFieldName() + { + return defaultFieldName; + } + + /** + * @param defaultFieldName - the default field name to use + */ + public void setDefaultFieldName(String defaultFieldName) + { + this.defaultFieldName = defaultFieldName; + } + }