mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-10-08 14:51:49 +00:00
Further fix for MNT-16921 Unnecessary search calls on type ahead component in Tag Component on the Document Library
- bulk fetch for categories/tags is now limited to 5000 it can be configured higher git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/BRANCHES/DEV/5.2.N/root@131814 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -1207,3 +1207,6 @@ system.upgradePasswordHash.jobThreadCount=4
|
|||||||
system.upgradePasswordHash.jobCronExpression=* * * * * ? 2099
|
system.upgradePasswordHash.jobCronExpression=* * * * * ? 2099
|
||||||
|
|
||||||
system.api.discovery.enabled=true
|
system.api.discovery.enabled=true
|
||||||
|
|
||||||
|
# Maximum query size for category/tag fetch when not explicitly set by paging parameters
|
||||||
|
category.queryFetchSize=5000
|
@@ -355,6 +355,9 @@
|
|||||||
<property name="indexerAndSearcher">
|
<property name="indexerAndSearcher">
|
||||||
<ref bean="search.indexerAndSearcherFactory" />
|
<ref bean="search.indexerAndSearcherFactory" />
|
||||||
</property>
|
</property>
|
||||||
|
<property name="queryFetchSize">
|
||||||
|
<value>${category.queryFetchSize}</value>
|
||||||
|
</property>
|
||||||
</bean>
|
</bean>
|
||||||
|
|
||||||
<!-- Bean to support full text search -->
|
<!-- Bean to support full text search -->
|
||||||
|
@@ -284,6 +284,9 @@
|
|||||||
<property name="indexerAndSearcher">
|
<property name="indexerAndSearcher">
|
||||||
<ref bean="search.indexerAndSearcherFactory" />
|
<ref bean="search.indexerAndSearcherFactory" />
|
||||||
</property>
|
</property>
|
||||||
|
<property name="queryFetchSize">
|
||||||
|
<value>${category.queryFetchSize}</value>
|
||||||
|
</property>
|
||||||
</bean>
|
</bean>
|
||||||
|
|
||||||
<bean
|
<bean
|
||||||
|
@@ -307,6 +307,9 @@
|
|||||||
<property name="indexerAndSearcher">
|
<property name="indexerAndSearcher">
|
||||||
<ref bean="search.indexerAndSearcherFactory" />
|
<ref bean="search.indexerAndSearcherFactory" />
|
||||||
</property>
|
</property>
|
||||||
|
<property name="queryFetchSize">
|
||||||
|
<value>${category.queryFetchSize}</value>
|
||||||
|
</property>
|
||||||
</bean>
|
</bean>
|
||||||
|
|
||||||
<bean
|
<bean
|
||||||
|
@@ -307,6 +307,9 @@
|
|||||||
<property name="indexerAndSearcher">
|
<property name="indexerAndSearcher">
|
||||||
<ref bean="search.indexerAndSearcherFactory" />
|
<ref bean="search.indexerAndSearcherFactory" />
|
||||||
</property>
|
</property>
|
||||||
|
<property name="queryFetchSize">
|
||||||
|
<value>${category.queryFetchSize}</value>
|
||||||
|
</property>
|
||||||
</bean>
|
</bean>
|
||||||
|
|
||||||
<bean
|
<bean
|
||||||
|
@@ -83,6 +83,8 @@ public class LuceneCategoryServiceImpl implements CategoryService
|
|||||||
|
|
||||||
protected IndexerAndSearcher indexerAndSearcher;
|
protected IndexerAndSearcher indexerAndSearcher;
|
||||||
|
|
||||||
|
protected int queryFetchSize = 5000;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
@@ -153,17 +155,21 @@ public class LuceneCategoryServiceImpl implements CategoryService
|
|||||||
this.indexerAndSearcher = indexerAndSearcher;
|
this.indexerAndSearcher = indexerAndSearcher;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setQueryFetchSize(int queryFetchSize) {
|
||||||
|
this.queryFetchSize = queryFetchSize;
|
||||||
|
}
|
||||||
|
|
||||||
public Collection<ChildAssociationRef> getChildren(NodeRef categoryRef, Mode mode, Depth depth)
|
public Collection<ChildAssociationRef> getChildren(NodeRef categoryRef, Mode mode, Depth depth)
|
||||||
{
|
{
|
||||||
return getChildren(categoryRef, mode, depth, false, null);
|
return getChildren(categoryRef, mode, depth, false, null, queryFetchSize);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Collection<ChildAssociationRef> getChildren(NodeRef categoryRef, Mode mode, Depth depth, String filter)
|
public Collection<ChildAssociationRef> getChildren(NodeRef categoryRef, Mode mode, Depth depth, String filter)
|
||||||
{
|
{
|
||||||
return getChildren(categoryRef, mode, depth, false, filter);
|
return getChildren(categoryRef, mode, depth, false, filter, queryFetchSize);
|
||||||
}
|
}
|
||||||
|
|
||||||
private Collection<ChildAssociationRef> getChildren(NodeRef categoryRef, Mode mode, Depth depth, boolean sortByName, String filter)
|
private Collection<ChildAssociationRef> getChildren(NodeRef categoryRef, Mode mode, Depth depth, boolean sortByName, String filter, int fetchSize)
|
||||||
{
|
{
|
||||||
if (categoryRef == null)
|
if (categoryRef == null)
|
||||||
{
|
{
|
||||||
@@ -226,8 +232,8 @@ public class LuceneCategoryServiceImpl implements CategoryService
|
|||||||
}
|
}
|
||||||
searchParameters.setQuery(luceneQuery.toString());
|
searchParameters.setQuery(luceneQuery.toString());
|
||||||
searchParameters.setLimit(-1);
|
searchParameters.setLimit(-1);
|
||||||
searchParameters.setMaxItems(Integer.MAX_VALUE);
|
searchParameters.setMaxItems(fetchSize);
|
||||||
searchParameters.setLimitBy(LimitBy.UNLIMITED);
|
searchParameters.setLimitBy(LimitBy.FINAL_SIZE);
|
||||||
searchParameters.addStore(categoryRef.getStoreRef());
|
searchParameters.addStore(categoryRef.getStoreRef());
|
||||||
resultSet = searcher.query(searchParameters);
|
resultSet = searcher.query(searchParameters);
|
||||||
|
|
||||||
@@ -394,7 +400,7 @@ public class LuceneCategoryServiceImpl implements CategoryService
|
|||||||
|
|
||||||
OUTER: for(NodeRef nodeRef : nodeRefs)
|
OUTER: for(NodeRef nodeRef : nodeRefs)
|
||||||
{
|
{
|
||||||
Collection<ChildAssociationRef> children = getChildren(nodeRef, Mode.SUB_CATEGORIES, Depth.IMMEDIATE, sortByName, filter);
|
Collection<ChildAssociationRef> children = getChildren(nodeRef, Mode.SUB_CATEGORIES, Depth.IMMEDIATE, sortByName, filter, skipCount + maxItems);
|
||||||
for(ChildAssociationRef child : children)
|
for(ChildAssociationRef child : children)
|
||||||
{
|
{
|
||||||
count++;
|
count++;
|
||||||
@@ -454,7 +460,7 @@ public class LuceneCategoryServiceImpl implements CategoryService
|
|||||||
Set<NodeRef> nodeRefs = getClassificationNodes(storeRef, aspectName);
|
Set<NodeRef> nodeRefs = getClassificationNodes(storeRef, aspectName);
|
||||||
for (NodeRef nodeRef : nodeRefs)
|
for (NodeRef nodeRef : nodeRefs)
|
||||||
{
|
{
|
||||||
assocs.addAll(getChildren(nodeRef, Mode.SUB_CATEGORIES, Depth.IMMEDIATE, false, filter));
|
assocs.addAll(getChildren(nodeRef, Mode.SUB_CATEGORIES, Depth.IMMEDIATE, false, filter, queryFetchSize));
|
||||||
}
|
}
|
||||||
return assocs;
|
return assocs;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user