mirror of
https://github.com/DSpace/DSpace.git
synced 2025-10-07 01:54:22 +00:00
Individual indexItem / itemRemoved additionally call prune methods at the end to ensure that excess data is removed from the browse indeces.
The batch reindex process does *not* prune until the end of execution. git-svn-id: http://scm.dspace.org/svn/repo/trunk@2161 9c30dcfa-912a-0410-8fc2-9e0234be79fd
This commit is contained in:
@@ -327,6 +327,26 @@ public class IndexBrowse
|
||||
dao.deleteByItemID(table, itemID);
|
||||
}
|
||||
|
||||
/**
|
||||
* Prune indexes - called from the public interfaces or at the end of a batch indexing process
|
||||
*/
|
||||
private void pruneIndexes() throws BrowseException
|
||||
{
|
||||
// go over the indices and prune
|
||||
for (int i = 0; i < bis.length; i++)
|
||||
{
|
||||
if (bis[i].isMetadataIndex())
|
||||
{
|
||||
log.debug("Pruning metadata index: " + bis[i].getTableName());
|
||||
dao.pruneExcess(bis[i].getTableName(false, false, false, false), bis[i].getTableName(false, false, false, true), false);
|
||||
dao.pruneDistinct(bis[i].getTableName(false, false, true, false), bis[i].getTableName(false, false, false, true));
|
||||
}
|
||||
}
|
||||
|
||||
dao.pruneExcess(BrowseIndex.getItemBrowseIndex().getTableName(false, false, false, false), null, false);
|
||||
dao.pruneExcess(BrowseIndex.getWithdrawnBrowseIndex().getTableName(false, false, false, false), null, true);
|
||||
}
|
||||
|
||||
/**
|
||||
* Index the given item
|
||||
*
|
||||
@@ -337,6 +357,9 @@ public class IndexBrowse
|
||||
throws BrowseException
|
||||
{
|
||||
indexItem(new ItemMetadataProxy(item));
|
||||
|
||||
// Ensure that we remove any invalid entries
|
||||
pruneIndexes();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -518,8 +541,11 @@ public class IndexBrowse
|
||||
log.debug("Removing indexing for removed item " + item.getID() + ", for index: " + bis[i].getTableName());
|
||||
removeIndex(item, bis[i]);
|
||||
}
|
||||
|
||||
return true;
|
||||
|
||||
// Ensure that we remove any invalid entries
|
||||
pruneIndexes();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1052,17 +1078,7 @@ public class IndexBrowse
|
||||
|
||||
// penultimately we have to delete any items that couldn't be located in the
|
||||
// index list
|
||||
for (int k = 0; k < bis.length; k++)
|
||||
{
|
||||
if (bis[k].isMetadataIndex())
|
||||
{
|
||||
dao.pruneExcess(bis[k].getTableName(false, false, false, false), bis[k].getTableName(false, false, false, true), false);
|
||||
dao.pruneDistinct(bis[k].getTableName(false, false, true, false), bis[k].getTableName(false, false, false, true));
|
||||
}
|
||||
}
|
||||
|
||||
dao.pruneExcess(BrowseIndex.getItemBrowseIndex().getTableName(false, false, false, false), null, false);
|
||||
dao.pruneExcess(BrowseIndex.getWithdrawnBrowseIndex().getTableName(false, false, false, false), null, true);
|
||||
pruneIndexes();
|
||||
|
||||
// Make sure the deletes are written back
|
||||
context.commit();
|
||||
|
Reference in New Issue
Block a user