Skip to content
Snippets Groups Projects
Commit 1d0f21ae authored by a.niebisch's avatar a.niebisch
Browse files

#1059353 refactored id filter for the duplicates search

parent db3a5df3
No related branches found
No related tags found
No related merge requests found
......@@ -910,9 +910,8 @@ pResultFields, pRecordIdValueToIgnore, pFormatValuesConsumeWebserviceCallback, p
let ignoreSourceRecordPattern = _DuplicateScannerUtils._getIgnoreSourceRecordPattern(pRecordIdValueToIgnore);
let indexPatternWithValues = _DuplicateScannerUtils._replacePlaceholderForValuesInPattern(pIndexPattern, pEntityFieldConfigValuesRay);
indexPatternWithValues = ignoreSourceRecordPattern + indexPatternWithValues + ")";
possibleDuplicates = _DuplicateScannerUtils._callIndexSearch(pTargetEntity, indexPatternWithValues, pResultFields, 100);
possibleDuplicates = _DuplicateScannerUtils._callIndexSearch(pTargetEntity, indexPatternWithValues, ignoreSourceRecordPattern, pResultFields, 100);
if(possibleDuplicates == null)
return null;
......@@ -948,11 +947,12 @@ _DuplicateScannerUtils._isUseExternalWebservice = function(pFilterName, pTargetE
*
* @param {String} pTargetEntity Entity which has been configured
* @param {String} pIndexPatternWithValues The pattern used to search. Has to contain the values already.
* @param {String} pIdFilter The filter pattern used to exclude the current record from the result.
* @param {String} pResultFields The result field config. Use "DuplicateScannerUtils.LoadResultFields"
* @param {String} pResultSetRows todo
* @returns {[["key", "value"]] || null} Array of Key-Value-Pairs based on the configured pResultFields, if no pattern exists null
*/
_DuplicateScannerUtils._callIndexSearch = function(pTargetEntity, pIndexPatternWithValues, pResultFields, pResultSetRows)
_DuplicateScannerUtils._callIndexSearch = function(pTargetEntity, pIndexPatternWithValues, pIdFilter, pResultFields, pResultSetRows)
{
logging.log(pIndexPatternWithValues)
//The indexPattern can't be null because it is required to run the search.
......@@ -961,9 +961,13 @@ _DuplicateScannerUtils._callIndexSearch = function(pTargetEntity, pIndexPatternW
let indexQuery = indexsearch.createIndexQuery()
.setPattern(pIndexPatternWithValues)
.setEntities([pTargetEntity])
// .addFilter(pIdFilter);
// .setDefaultOperator(indexsearch.OPERATOR_AND)
//.addSearchFields("Person_entity.FIRSTNAME", "Person_entity.LASTNAME", "Person_entity.CONTACTID")
//.setRows(pResultSetRows);
if(pIdFilter && pIdFilter.length > 0)
indexQuery.addFilter(pIdFilter);
indexQuery = _DuplicateScannerUtils._setResultFields(indexQuery, pResultFields);
return indexsearch.searchIndex(indexQuery);
}
......@@ -1102,14 +1106,20 @@ _DuplicateScannerUtils._buildDeleteCachedUnrelatedDuplicateQuery = function(pSou
}
/*
* Creates a pattern which excludes the field and it's value
* Creates a filter pattern which excludes results with the provided id from the search.
*
* @param {String} pRecordIdValueToIgnore The fields value
* @returns {String} Pattern which excludes the gived field in combination with the value
* @param {String} pRecordIdValueToIgnore The id value to exclude from the result.
* @returns {String} Filter pattern which excludes hits with the given id (index) from the result.
*/
_DuplicateScannerUtils._getIgnoreSourceRecordPattern = function(pRecordIdValueToIgnore)
{
return "( +( -" + indexsearch.FIELD_ID + ":(" + pRecordIdValueToIgnore + ") ) ";
// creates -_local_id_:"<pRecordIdValueToIgnore>"
if(pRecordIdValueToIgnore && pRecordIdValueToIgnore.length > 0)
return indexsearch.buildPattern(indexsearch.createPatternConfig().minus(
indexsearch.createPhraseTerm(pRecordIdValueToIgnore)
.setIndexField(indexsearch.FIELD_ID)
));
return null;
}
_DuplicateScannerUtils._buildUpdateContactIdStatements = function(pTableInfos, pSourceContactId, pTargetContactId, pAlias)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment