mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-21 18:09:20 +00:00
Performance improvements for Share Repository browser queries.
DB with ~50,000 nodes under Company Home: Before: - I'm Editing - 16 secs, Favorites - 17 secs, Tag - 14 secs After: - I'm Editing - 1.5 secs, Favorites - 1.2 secs, Tag - 1.25 secs git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@31051 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -138,13 +138,7 @@ var Filters =
|
|||||||
date.setDate(date.getDate() - dayCount);
|
date.setDate(date.getDate() - dayCount);
|
||||||
var fromQuery = date.getFullYear() + "\\-" + (date.getMonth() + 1) + "\\-" + date.getDate();
|
var fromQuery = date.getFullYear() + "\\-" + (date.getMonth() + 1) + "\\-" + date.getDate();
|
||||||
|
|
||||||
filterQuery = "+PATH:\"" + parsedArgs.rootNode.qnamePath;
|
filterQuery = this.constructPathQuery(parsedArgs);
|
||||||
if (parsedArgs.nodeRef == "alfresco://sites/home")
|
|
||||||
{
|
|
||||||
// Special case for "Sites home" pseudo-nodeRef
|
|
||||||
filterQuery += "/*/cm:documentLibrary";
|
|
||||||
}
|
|
||||||
filterQuery += "//*\"";
|
|
||||||
filterQuery += " +@cm\\:" + dateField + ":[" + fromQuery + "T00\\:00\\:00.000 TO " + toQuery + "T23\\:59\\:59.999]";
|
filterQuery += " +@cm\\:" + dateField + ":[" + fromQuery + "T00\\:00\\:00.000 TO " + toQuery + "T23\\:59\\:59.999]";
|
||||||
if (onlySelf)
|
if (onlySelf)
|
||||||
{
|
{
|
||||||
@@ -161,24 +155,14 @@ var Filters =
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case "editingMe":
|
case "editingMe":
|
||||||
filterQuery = "+PATH:\"" + parsedArgs.rootNode.qnamePath;
|
filterQuery = this.constructPathQuery(parsedArgs);
|
||||||
if (parsedArgs.nodeRef == "alfresco://sites/home")
|
|
||||||
{
|
|
||||||
filterQuery += "/*/cm:documentLibrary";
|
|
||||||
}
|
|
||||||
filterQuery += "//*\"";
|
|
||||||
filterQuery += " +ASPECT:\"workingcopy\"";
|
filterQuery += " +ASPECT:\"workingcopy\"";
|
||||||
filterQuery += " +@cm\\:workingCopyOwner:\"" + person.properties.userName + '"';
|
filterQuery += " +@cm\\:workingCopyOwner:\"" + person.properties.userName + '"';
|
||||||
filterParams.query = filterQuery;
|
filterParams.query = filterQuery;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case "editingOthers":
|
case "editingOthers":
|
||||||
filterQuery = "+PATH:\"" + parsedArgs.rootNode.qnamePath;
|
filterQuery = this.constructPathQuery(parsedArgs);
|
||||||
if (parsedArgs.nodeRef == "alfresco://sites/home")
|
|
||||||
{
|
|
||||||
filterQuery += "/*/cm:documentLibrary";
|
|
||||||
}
|
|
||||||
filterQuery += "//*\"";
|
|
||||||
filterQuery += " +ASPECT:\"workingcopy\"";
|
filterQuery += " +ASPECT:\"workingcopy\"";
|
||||||
filterQuery += " -@cm\\:workingCopyOwner:\"" + person.properties.userName + '"';
|
filterQuery += " -@cm\\:workingCopyOwner:\"" + person.properties.userName + '"';
|
||||||
filterParams.query = filterQuery;
|
filterParams.query = filterQuery;
|
||||||
@@ -199,13 +183,7 @@ var Filters =
|
|||||||
|
|
||||||
if (filterQuery.length > 0)
|
if (filterQuery.length > 0)
|
||||||
{
|
{
|
||||||
filterQuery = "+(" + filterQuery + ") ";
|
filterQuery = "+(" + filterQuery + ") " + this.constructPathQuery(parsedArgs);
|
||||||
filterQuery += "+PATH:\"" + parsedArgs.rootNode.qnamePath;
|
|
||||||
if (parsedArgs.nodeRef == "alfresco://sites/home")
|
|
||||||
{
|
|
||||||
filterQuery += "/*/cm:documentLibrary";
|
|
||||||
}
|
|
||||||
filterQuery += "//*\"";
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -228,12 +206,7 @@ var Filters =
|
|||||||
filterData = filterData.slice(0, -1);
|
filterData = filterData.slice(0, -1);
|
||||||
}
|
}
|
||||||
|
|
||||||
filterQuery = "+PATH:\"" + parsedArgs.rootNode.qnamePath;
|
filterQuery = this.constructPathQuery(parsedArgs);
|
||||||
if (parsedArgs.nodeRef == "alfresco://sites/home")
|
|
||||||
{
|
|
||||||
filterQuery += "/*/cm:documentLibrary";
|
|
||||||
}
|
|
||||||
filterQuery += "//*\"";
|
|
||||||
filterParams.query = filterQuery + " +PATH:\"/cm:taggable/cm:" + search.ISO9075Encode(filterData) + "/member\"";
|
filterParams.query = filterQuery + " +PATH:\"/cm:taggable/cm:" + search.ISO9075Encode(filterData) + "/member\"";
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -266,5 +239,20 @@ var Filters =
|
|||||||
}
|
}
|
||||||
|
|
||||||
return filterParams;
|
return filterParams;
|
||||||
|
},
|
||||||
|
|
||||||
|
constructPathQuery: function constructPathQuery(parsedArgs)
|
||||||
|
{
|
||||||
|
var pathQuery = "";
|
||||||
|
if (parsedArgs.nodeRef != "alfresco://company/home")
|
||||||
|
{
|
||||||
|
pathQuery = "+PATH:\"" + parsedArgs.rootNode.qnamePath;
|
||||||
|
if (parsedArgs.nodeRef == "alfresco://sites/home")
|
||||||
|
{
|
||||||
|
pathQuery += "/*/cm:documentLibrary";
|
||||||
|
}
|
||||||
|
pathQuery += "//*\"";
|
||||||
|
}
|
||||||
|
return pathQuery;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@@ -138,13 +138,7 @@ var Filters =
|
|||||||
date.setDate(date.getDate() - dayCount);
|
date.setDate(date.getDate() - dayCount);
|
||||||
var fromQuery = date.getFullYear() + "\\-" + (date.getMonth() + 1) + "\\-" + date.getDate();
|
var fromQuery = date.getFullYear() + "\\-" + (date.getMonth() + 1) + "\\-" + date.getDate();
|
||||||
|
|
||||||
filterQuery = "+PATH:\"" + parsedArgs.rootNode.qnamePath;
|
filterQuery = this.constructPathQuery(parsedArgs);
|
||||||
if (parsedArgs.nodeRef == "alfresco://sites/home")
|
|
||||||
{
|
|
||||||
// Special case for "Sites home" pseudo-nodeRef
|
|
||||||
filterQuery += "/*/cm:documentLibrary";
|
|
||||||
}
|
|
||||||
filterQuery += "//*\"";
|
|
||||||
filterQuery += " +@cm\\:" + dateField + ":[" + fromQuery + "T00\\:00\\:00.000 TO " + toQuery + "T23\\:59\\:59.999]";
|
filterQuery += " +@cm\\:" + dateField + ":[" + fromQuery + "T00\\:00\\:00.000 TO " + toQuery + "T23\\:59\\:59.999]";
|
||||||
if (onlySelf)
|
if (onlySelf)
|
||||||
{
|
{
|
||||||
@@ -161,24 +155,14 @@ var Filters =
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case "editingMe":
|
case "editingMe":
|
||||||
filterQuery = "+PATH:\"" + parsedArgs.rootNode.qnamePath;
|
filterQuery = this.constructPathQuery(parsedArgs);
|
||||||
if (parsedArgs.nodeRef == "alfresco://sites/home")
|
|
||||||
{
|
|
||||||
filterQuery += "/*/cm:documentLibrary";
|
|
||||||
}
|
|
||||||
filterQuery += "//*\"";
|
|
||||||
filterQuery += " +ASPECT:\"workingcopy\"";
|
filterQuery += " +ASPECT:\"workingcopy\"";
|
||||||
filterQuery += " +@cm\\:workingCopyOwner:\"" + person.properties.userName + '"';
|
filterQuery += " +@cm\\:workingCopyOwner:\"" + person.properties.userName + '"';
|
||||||
filterParams.query = filterQuery;
|
filterParams.query = filterQuery;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case "editingOthers":
|
case "editingOthers":
|
||||||
filterQuery = "+PATH:\"" + parsedArgs.rootNode.qnamePath;
|
filterQuery = this.constructPathQuery(parsedArgs);
|
||||||
if (parsedArgs.nodeRef == "alfresco://sites/home")
|
|
||||||
{
|
|
||||||
filterQuery += "/*/cm:documentLibrary";
|
|
||||||
}
|
|
||||||
filterQuery += "//*\"";
|
|
||||||
filterQuery += " +ASPECT:\"workingcopy\"";
|
filterQuery += " +ASPECT:\"workingcopy\"";
|
||||||
filterQuery += " -@cm\\:workingCopyOwner:\"" + person.properties.userName + '"';
|
filterQuery += " -@cm\\:workingCopyOwner:\"" + person.properties.userName + '"';
|
||||||
filterParams.query = filterQuery;
|
filterParams.query = filterQuery;
|
||||||
@@ -199,13 +183,7 @@ var Filters =
|
|||||||
|
|
||||||
if (filterQuery.length > 0)
|
if (filterQuery.length > 0)
|
||||||
{
|
{
|
||||||
filterQuery = "+(" + filterQuery + ") ";
|
filterQuery = "+(" + filterQuery + ") " + this.constructPathQuery(parsedArgs);
|
||||||
filterQuery += "+PATH:\"" + parsedArgs.rootNode.qnamePath;
|
|
||||||
if (parsedArgs.nodeRef == "alfresco://sites/home")
|
|
||||||
{
|
|
||||||
filterQuery += "/*/cm:documentLibrary";
|
|
||||||
}
|
|
||||||
filterQuery += "//*\"";
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -227,12 +205,7 @@ var Filters =
|
|||||||
{
|
{
|
||||||
filterData = filterData.slice(0, -1);
|
filterData = filterData.slice(0, -1);
|
||||||
}
|
}
|
||||||
filterQuery = "+PATH:\"" + parsedArgs.rootNode.qnamePath;
|
filterQuery = this.constructPathQuery(parsedArgs);
|
||||||
if (parsedArgs.nodeRef == "alfresco://sites/home")
|
|
||||||
{
|
|
||||||
filterQuery += "/*/cm:documentLibrary";
|
|
||||||
}
|
|
||||||
filterQuery += "//*\"";
|
|
||||||
filterParams.query = filterQuery + " +PATH:\"/cm:taggable/cm:" + search.ISO9075Encode(filterData) + "/member\"";
|
filterParams.query = filterQuery + " +PATH:\"/cm:taggable/cm:" + search.ISO9075Encode(filterData) + "/member\"";
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -259,5 +232,20 @@ var Filters =
|
|||||||
}
|
}
|
||||||
|
|
||||||
return filterParams;
|
return filterParams;
|
||||||
|
},
|
||||||
|
|
||||||
|
constructPathQuery: function constructPathQuery(parsedArgs)
|
||||||
|
{
|
||||||
|
var pathQuery = "";
|
||||||
|
if (parsedArgs.nodeRef != "alfresco://company/home")
|
||||||
|
{
|
||||||
|
pathQuery = "+PATH:\"" + parsedArgs.rootNode.qnamePath;
|
||||||
|
if (parsedArgs.nodeRef == "alfresco://sites/home")
|
||||||
|
{
|
||||||
|
pathQuery += "/*/cm:documentLibrary";
|
||||||
|
}
|
||||||
|
pathQuery += "//*\"";
|
||||||
|
}
|
||||||
|
return pathQuery;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
Reference in New Issue
Block a user