protected void reindexSystemContent() { RepositoryCache repoCache = runningState.repositoryCache(); String workspaceName = repoCache.getSystemWorkspaceName(); NodeCache systemWorkspaceCache = repoCache.getWorkspaceCache(workspaceName); CachedNode systemNode = systemWorkspaceCache.getNode(repoCache.getSystemKey()); if (reindexContent(workspaceName, systemWorkspaceCache, systemNode, Integer.MAX_VALUE, true, getIndexWriter())) { commitChanges(workspaceName); } }
@Override public IndexManager getIndexManager() throws RepositoryException { session.checkLive(); return repository().queryManager().getIndexManager(); }
PlanHints hints, Map<String, Object> variables ) { final QueryEngine queryEngine = queryEngine(); final QueryContext queryContext = queryEngine.createQueryContext(context, repositoryCache, workspaceNames, overriddenNodeCachesByWorkspaceName, schemata,
/** * Clean all indexes and reindex all content. * * @param async true if the reindexing should be done in the background, or false if it should be done using this thread */ protected void cleanAndReindex( boolean async ) { final IndexWriter writer = getIndexWriter(); scan(async, getIndexWriter(), new Callable<Void>() { @SuppressWarnings( "synthetic-access" ) @Override public Void call() throws Exception { writer.clearAllIndexes(); reindexContent(true, writer); return null; } }); }
protected void reindexSince( JcrWorkspace workspace, long timestamp ) { ChangeJournal journal = runningState.journal(); assert journal != null; Iterator<NodeKey> changedNodes = journal.changedNodesSince(timestamp); if (!changedNodes.hasNext()) { // there are no nodes which have been changed since the given timestamp return; } reindexSince(workspace.getSession().cache().getWorkspace(), getIndexWriter(), changedNodes); }
Path path, int depth ) { if (getIndexWriter().canBeSkipped()) { node = cache.getNode(ref); updateIndexesStatus(workspaceName, IndexManager.IndexStatus.ENABLED, IndexManager.IndexStatus.REINDEXING); String systemWorkspaceKey = repoCache.getSystemWorkspaceKey(); if (node.getKey().getWorkspaceKey().equals(systemWorkspaceKey)) { if (reindexSystemContent(node, depth, getIndexWriter())) { commitChanges(systemWorkspaceName); if (reindexContent(workspaceName, cache, node, depth, path.isRoot(), getIndexWriter())) { commitChanges(workspaceName); updateIndexesStatus(workspaceName, IndexManager.IndexStatus.REINDEXING, IndexManager.IndexStatus.ENABLED);
if (!request.isEmpty()) { final RepositoryCache repoCache = runningState.repositoryCache(); scan(async, () -> { updateIndexesStatus(workspaceName, IndexManager.IndexStatus.ENABLED, IndexManager.IndexStatus.REINDEXING); if (reindexContent(workspaceName, workspaceCache, node, Integer.MAX_VALUE, scanSystemContent, writer)) { commitChanges(workspaceName); updateIndexesStatus(workspaceName, IndexManager.IndexStatus.REINDEXING, IndexManager.IndexStatus.ENABLED);
String workspaceKey = NodeKey.keyForWorkspaceName(workspaceName); boolean commitRequired = false; updateIndexesStatus(workspaceName, IndexManager.IndexStatus.ENABLED, IndexManager.IndexStatus.REINDEXING); if (node != null) { commitRequired |= reindexContent(workspaceName, cache, node, 1, true, writer); } else { commitChanges(workspaceName); updateIndexesStatus(workspaceName, IndexManager.IndexStatus.REINDEXING, IndexManager.IndexStatus.ENABLED);
@Override public CancellableQuery createExecutableQuery( QueryCommand query, PlanHints hints, Map<String, Object> variables ) throws RepositoryException { session.checkLive(); // Submit immediately to the workspace graph ... Schemata schemata = session.workspace().nodeTypeManager().schemata(); NodeTypes nodeTypes = session.repository().nodeTypeManager().getNodeTypes(); RepositoryIndexes indexDefns = session.repository().queryManager().getIndexes(); String workspaceName = session.workspaceName(); JcrRepository.RunningState state = session.repository().runningState(); RepositoryQueryManager queryManager = state.queryManager(); RepositoryCache repoCache = state.repositoryCache(); NodeCache nodeCache = hints.useSessionContent ? session.cache() : session.cache().getWorkspace(); Map<String, NodeCache> overriddenNodeCaches = new HashMap<String, NodeCache>(); overriddenNodeCaches.put(workspaceName, nodeCache); Set<String> workspaceNames = null; if (hints.includeSystemContent) { workspaceNames = new LinkedHashSet<String>(); workspaceNames.add(workspaceName); workspaceNames.add(repoCache.getSystemWorkspaceName()); } else { workspaceNames = Collections.singleton(workspaceName); } return queryManager.query(executionContext, repoCache, workspaceNames, overriddenNodeCaches, query, schemata, indexDefns, nodeTypes, hints, variables); }
protected Future<Boolean> reindexSinceAsync( final JcrWorkspace workspace, final long timestamp ) { ChangeJournal journal = runningState.journal(); assert journal != null; Iterator<NodeKey> changedNodes = journal.changedNodesSince(timestamp); if (!changedNodes.hasNext()) { // there are no nodes which have been changed since the given timestamp return new ImmediateFuture<>(Boolean.FALSE); } return reindexSinceAsync(workspace.getSession().cache().getWorkspace(), getIndexWriter(), changedNodes); }
this.queryManager().getIndexManager().importIndexDefinitions(); this.repositoryQueryManager.initialize();
protected final void completeRestore(RestoreOptions options) throws ExecutionException, Exception { if (getState() == State.RESTORING) { logger.debug("Shutting down '{0}' after content has been restored", getName()); doShutdown(false); logger.debug("Starting '{0}' after content has been restored", getName()); start(); logger.debug("Started '{0}' after content has been restored; beginning indexing of content", getName()); if (options.reindexContentOnFinish()) { // Reindex all content ... queryManager().cleanAndReindex(false); logger.debug("Completed reindexing all content in '{0}' after restore.", getName()); } } }
try { queryManager().reindex();
new FullTextSearchParser(), new JcrSqlQueryParser(), new JcrQomQueryParser()); RepositoryConfiguration.Reindexing reindexingCfg = config.getReindexing(); this.repositoryQueryManager = new RepositoryQueryManager(this, indexingExecutor, config, reindexingCfg); if (reindexingCfg.isAsync()) { this.changeBus.register(this.repositoryQueryManager);
Path path, int depth ) { if (getIndexWriter().canBeSkipped()) { node = cache.getNode(ref); updateIndexesStatus(workspaceName, IndexManager.IndexStatus.ENABLED, IndexManager.IndexStatus.REINDEXING); String systemWorkspaceKey = repoCache.getSystemWorkspaceKey(); if (node.getKey().getWorkspaceKey().equals(systemWorkspaceKey)) { if (reindexSystemContent(node, depth, getIndexWriter())) { commitChanges(systemWorkspaceName); if (reindexContent(workspaceName, cache, node, depth, path.isRoot(), getIndexWriter())) { commitChanges(workspaceName); updateIndexesStatus(workspaceName, IndexManager.IndexStatus.REINDEXING, IndexManager.IndexStatus.ENABLED);
if (!request.isEmpty()) { final RepositoryCache repoCache = runningState.repositoryCache(); scan(async, () -> { updateIndexesStatus(workspaceName, IndexManager.IndexStatus.ENABLED, IndexManager.IndexStatus.REINDEXING); if (reindexContent(workspaceName, workspaceCache, node, Integer.MAX_VALUE, scanSystemContent, writer)) { commitChanges(workspaceName); updateIndexesStatus(workspaceName, IndexManager.IndexStatus.REINDEXING, IndexManager.IndexStatus.ENABLED);
String workspaceKey = NodeKey.keyForWorkspaceName(workspaceName); boolean commitRequired = false; updateIndexesStatus(workspaceName, IndexManager.IndexStatus.ENABLED, IndexManager.IndexStatus.REINDEXING); if (node != null) { commitRequired |= reindexContent(workspaceName, cache, node, 1, true, writer); } else { commitChanges(workspaceName); updateIndexesStatus(workspaceName, IndexManager.IndexStatus.REINDEXING, IndexManager.IndexStatus.ENABLED);
@Override public CancellableQuery createExecutableQuery( QueryCommand query, PlanHints hints, Map<String, Object> variables ) throws RepositoryException { session.checkLive(); // Submit immediately to the workspace graph ... Schemata schemata = session.workspace().nodeTypeManager().schemata(); NodeTypes nodeTypes = session.repository().nodeTypeManager().getNodeTypes(); RepositoryIndexes indexDefns = session.repository().queryManager().getIndexes(); String workspaceName = session.workspaceName(); JcrRepository.RunningState state = session.repository().runningState(); RepositoryQueryManager queryManager = state.queryManager(); RepositoryCache repoCache = state.repositoryCache(); NodeCache nodeCache = hints.useSessionContent ? session.cache() : session.cache().getWorkspace(); Map<String, NodeCache> overriddenNodeCaches = new HashMap<String, NodeCache>(); overriddenNodeCaches.put(workspaceName, nodeCache); Set<String> workspaceNames = null; if (hints.includeSystemContent) { workspaceNames = new LinkedHashSet<String>(); workspaceNames.add(workspaceName); workspaceNames.add(repoCache.getSystemWorkspaceName()); } else { workspaceNames = Collections.singleton(workspaceName); } return queryManager.query(executionContext, repoCache, workspaceNames, overriddenNodeCaches, query, schemata, indexDefns, nodeTypes, hints, variables); }
protected Future<Boolean> reindexSinceAsync( final JcrWorkspace workspace, final long timestamp ) { ChangeJournal journal = runningState.journal(); assert journal != null; Iterator<NodeKey> changedNodes = journal.changedNodesSince(timestamp); if (!changedNodes.hasNext()) { // there are no nodes which have been changed since the given timestamp return new ImmediateFuture<>(Boolean.FALSE); } return reindexSinceAsync(workspace.getSession().cache().getWorkspace(), getIndexWriter(), changedNodes); }
protected void reindexSince( JcrWorkspace workspace, long timestamp ) { ChangeJournal journal = runningState.journal(); assert journal != null; Iterator<NodeKey> changedNodes = journal.changedNodesSince(timestamp); if (!changedNodes.hasNext()) { // there are no nodes which have been changed since the given timestamp return; } reindexSince(workspace.getSession().cache().getWorkspace(), getIndexWriter(), changedNodes); }