|
||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.opencms.search.CmsSearchManager
public class CmsSearchManager
Implements the general management and configuration of the search and indexing facilities in OpenCms.
Nested Class Summary | |
---|---|
static class |
CmsSearchManager.CmsSearchForceUnlockMode
Enumeration class for force unlock types. |
protected class |
CmsSearchManager.CmsSearchOfflineHandler
Handles offline index generation. |
protected class |
CmsSearchManager.CmsSearchOfflineIndexThread
The offline indexer thread runs periodically and indexes all resources added by the event handler. |
Field Summary | |
---|---|
static int |
DEFAULT_EXCERPT_LENGTH
The default value used for generating search result excerpts (1024 chars). |
static float |
DEFAULT_EXTRACTION_CACHE_MAX_AGE
The default value used for keeping the extraction results in the cache (672 hours = 4 weeks). |
static int |
DEFAULT_MAX_MODIFICATIONS_BEFORE_COMMIT
Default for the maximum number of modifications before a commit in the search index is triggered. |
static int |
DEFAULT_OFFLINE_UPDATE_FREQNENCY
The default update frequency for offline indexes (15000 msec = 15 sec). |
static int |
DEFAULT_TIMEOUT
The default timeout value used for generating a document for the search index (60000 msec = 1 min). |
static java.lang.String |
JOB_PARAM_INDEXLIST
Scheduler parameter: Update only a specified list of indexes. |
static java.lang.String |
JOB_PARAM_WRITELOG
Scheduler parameter: Write the output of the update to the logfile. |
protected static org.apache.commons.logging.Log |
LOG
The log object for this class. |
protected CmsObject |
m_adminCms
The administrator OpenCms user context to access OpenCms VFS resources. |
protected java.util.List<CmsSearchIndex> |
m_offlineIndexes
The list of indexes that are configured for offline index mode. |
protected CmsSearchManager.CmsSearchOfflineIndexThread |
m_offlineIndexThread
The thread used of offline indexing. |
Constructor Summary | |
---|---|
CmsSearchManager()
Default constructor when called as cron job. |
Method Summary | |
---|---|
void |
addAnalyzer(CmsSearchAnalyzer analyzer)
Adds an analyzer. |
void |
addDocumentTypeConfig(CmsSearchDocumentType documentType)
Adds a document type. |
void |
addFieldConfiguration(CmsSearchFieldConfiguration fieldConfiguration)
Adds a search field configuration to the search manager. |
void |
addSearchIndex(CmsSearchIndex searchIndex)
Adds a search index to the configuration. |
void |
addSearchIndexSource(CmsSearchIndexSource searchIndexSource)
Adds a search index source configuration. |
protected void |
cleanExtractionCache()
Cleans up the extraction result cache. |
void |
cmsEvent(CmsEvent event)
Implements the event listener of this class. |
protected void |
forceIndexUnlock(CmsSearchIndex index,
I_CmsReport report,
boolean mode)
Proceed the unlocking of the given index depending on the setting of m_forceUnlockMode and the given mode. |
org.apache.lucene.analysis.Analyzer |
getAnalyzer(java.util.Locale locale)
Returns an analyzer for the given language. |
java.util.Map<java.util.Locale,CmsSearchAnalyzer> |
getAnalyzers()
Returns an unmodifiable view of the map that contains the CmsSearchAnalyzer list. |
CmsSearchAnalyzer |
getCmsSearchAnalyzer(java.util.Locale locale)
Returns the search analyzer for the given locale. |
java.lang.String |
getDirectory()
Returns the name of the directory below WEB-INF/ where the search indexes are stored. |
protected I_CmsDocumentFactory |
getDocumentFactory(CmsResource resource)
Returns a lucene document factory for given resource. |
CmsSearchDocumentType |
getDocumentTypeConfig(java.lang.String name)
Returns a document type config. |
java.util.List<CmsSearchDocumentType> |
getDocumentTypeConfigs()
Returns an unmodifiable view (read-only) of the DocumentTypeConfigs Map. |
protected java.util.List<java.lang.String> |
getDocumentTypes()
Returns the set of names of all configured document types. |
float |
getExtractionCacheMaxAge()
Returns the maximum age a text extraction result is kept in the cache (in hours). |
CmsSearchFieldConfiguration |
getFieldConfiguration(java.lang.String name)
Returns the search field configuration with the given name. |
java.util.List<CmsSearchFieldConfiguration> |
getFieldConfigurations()
Returns the unmodifieable List of configured CmsSearchFieldConfiguration entries. |
CmsSearchManager.CmsSearchForceUnlockMode |
getForceunlock()
Returns the force unlock mode during indexing. |
I_CmsTermHighlighter |
getHighlighter()
Returns the highlighter. |
CmsSearchIndex |
getIndex(java.lang.String indexName)
Returns the index belonging to the passed name. |
int |
getIndexLockMaxWaitSeconds()
Returns the seconds to wait for an index lock during an update operation. |
java.util.List<java.lang.String> |
getIndexNames()
Returns the names of all configured indexes. |
CmsSearchIndexSource |
getIndexSource(java.lang.String sourceName)
Returns a search index source for a specified source name. |
int |
getMaxExcerptLength()
Returns the max. excerpt length. |
int |
getMaxModificationsBeforeCommit()
Returns the maximum number of modifications before a commit in the search index is triggered. |
long |
getOfflineUpdateFrequency()
Returns the update frequency of the offline indexer in milliseconds. |
java.util.List<CmsSearchIndex> |
getSearchIndexes()
Returns an unmodifiable list of all configured instances. |
java.util.Map<java.lang.String,CmsSearchIndexSource> |
getSearchIndexSources()
Returns an unmodifiable view (read-only) of the SearchIndexSources Map. |
long |
getTimeout()
Returns the timeout to abandon threads indexing a resource. |
protected void |
initAvailableDocumentTypes()
Initializes the available Cms resource types to be indexed. |
void |
initialize(CmsObject cms)
Initializes the search manager. |
void |
initializeIndexes()
Initializes all configured document types and search indexes. |
void |
initOfflineIndexes()
Initialize the offline index handler, require after an offline index has been added. |
protected void |
initSearchIndexes()
Initializes the configured search indexes. |
java.lang.String |
launch(CmsObject cms,
java.util.Map parameters)
Updates the indexes from as a scheduled job. |
void |
rebuildAllIndexes(I_CmsReport report)
Rebuilds (if required creates) all configured indexes. |
void |
rebuildIndex(java.lang.String indexName,
I_CmsReport report)
Rebuilds (if required creates) the index with the given name. |
void |
rebuildIndexes(java.util.List<java.lang.String> indexNames,
I_CmsReport report)
Rebuilds (if required creates) the List of indexes with the given name. |
boolean |
removeSearchFieldConfiguration(CmsSearchFieldConfiguration fieldConfiguration)
Removes this fieldconfiguration from the OpenCms configuration (if it is not used any more). |
boolean |
removeSearchFieldConfigurationField(CmsSearchFieldConfiguration fieldConfiguration,
CmsSearchField field)
Removes a search field from the field configuration. |
boolean |
removeSearchFieldMapping(CmsSearchField field,
CmsSearchFieldMapping mapping)
Removes a search field mapping from the given field. |
void |
removeSearchIndex(CmsSearchIndex searchIndex)
Removes a search index from the configuration. |
void |
removeSearchIndexes(java.util.List<java.lang.String> indexNames)
Removes all indexes included in the given list (which must contain the name of an index to remove). |
boolean |
removeSearchIndexSource(CmsSearchIndexSource indexsource)
Removes this indexsource from the OpenCms configuration (if it is not used any more). |
void |
setDirectory(java.lang.String value)
Sets the name of the directory below WEB-INF/ where the search indexes are stored. |
void |
setExtractionCacheMaxAge(float extractionCacheMaxAge)
Sets the maximum age a text extraction result is kept in the cache (in hours). |
void |
setExtractionCacheMaxAge(java.lang.String extractionCacheMaxAge)
Sets the maximum age a text extraction result is kept in the cache (in hours) as a String. |
void |
setForceunlock(java.lang.String value)
Sets the unlock mode during indexing. |
void |
setHighlighter(java.lang.String highlighter)
Sets the highlighter. |
void |
setIndexLockMaxWaitSeconds(int value)
Sets the seconds to wait for an index lock during an update operation. |
void |
setMaxExcerptLength(int maxExcerptLength)
Sets the max. excerpt length. |
void |
setMaxExcerptLength(java.lang.String maxExcerptLength)
Sets the max. excerpt length as a String. |
void |
setMaxModificationsBeforeCommit(int maxModificationsBeforeCommit)
Sets the maximum number of modifications before a commit in the search index is triggered. |
void |
setMaxModificationsBeforeCommit(java.lang.String value)
Sets the maximum number of modifications before a commit in the search index is triggered as a string. |
void |
setOfflineUpdateFrequency(long offlineUpdateFrequency)
Sets the update frequency of the offline indexer in milliseconds. |
void |
setOfflineUpdateFrequency(java.lang.String offlineUpdateFrequency)
Sets the update frequency of the offline indexer in milliseconds. |
void |
setTimeout(long value)
Sets the timeout to abandon threads indexing a resource. |
void |
setTimeout(java.lang.String value)
Sets the timeout to abandon threads indexing a resource as a String. |
void |
shutDown()
Shuts down the search manager. |
protected void |
updateAllIndexes(CmsObject adminCms,
CmsUUID publishHistoryId,
I_CmsReport report)
Incrementally updates all indexes that have their rebuild mode set to "auto"
after resources have been published. |
protected void |
updateIndex(CmsSearchIndex index,
I_CmsReport report,
java.util.List<CmsPublishedResource> resourcesToIndex)
Updates (if required creates) the index with the given name. |
protected void |
updateIndexIncremental(CmsObject cms,
CmsSearchIndex index,
I_CmsReport report,
java.util.List<CmsPublishedResource> resourcesToIndex)
Incrementally updates the given index. |
protected void |
updateIndexOffline(I_CmsReport report,
java.util.List<CmsPublishedResource> resourcesToIndex)
Updates the offline search indexes for the given list of resources. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
public static final int DEFAULT_EXCERPT_LENGTH
public static final float DEFAULT_EXTRACTION_CACHE_MAX_AGE
public static final int DEFAULT_MAX_MODIFICATIONS_BEFORE_COMMIT
public static final int DEFAULT_OFFLINE_UPDATE_FREQNENCY
public static final int DEFAULT_TIMEOUT
public static final java.lang.String JOB_PARAM_INDEXLIST
public static final java.lang.String JOB_PARAM_WRITELOG
protected static final org.apache.commons.logging.Log LOG
protected CmsObject m_adminCms
protected java.util.List<CmsSearchIndex> m_offlineIndexes
protected CmsSearchManager.CmsSearchOfflineIndexThread m_offlineIndexThread
Constructor Detail |
---|
public CmsSearchManager()
Method Detail |
---|
public void addAnalyzer(CmsSearchAnalyzer analyzer)
analyzer
- an analyzerpublic void addDocumentTypeConfig(CmsSearchDocumentType documentType)
documentType
- a document typepublic void addFieldConfiguration(CmsSearchFieldConfiguration fieldConfiguration)
fieldConfiguration
- the search field configuration to addpublic void addSearchIndex(CmsSearchIndex searchIndex)
searchIndex
- the search index to addpublic void addSearchIndexSource(CmsSearchIndexSource searchIndexSource)
searchIndexSource
- a search index source configurationpublic void cmsEvent(CmsEvent event)
cmsEvent
in interface I_CmsEventListener
event
- CmsEvent that has occurredI_CmsEventListener.cmsEvent(org.opencms.main.CmsEvent)
public org.apache.lucene.analysis.Analyzer getAnalyzer(java.util.Locale locale) throws CmsSearchException
The analyzer is selected according to the analyzer configuration.
locale
- the locale to get the analyzer for
CmsSearchException
- if something goes wrongpublic java.util.Map<java.util.Locale,CmsSearchAnalyzer> getAnalyzers()
CmsSearchAnalyzer
list.
The keys in the map are Locale
objects, and the values are CmsSearchAnalyzer
objects.
public CmsSearchAnalyzer getCmsSearchAnalyzer(java.util.Locale locale)
locale
- the locale to get the analyzer for
public java.lang.String getDirectory()
public CmsSearchDocumentType getDocumentTypeConfig(java.lang.String name)
name
- the name of the document type config
public java.util.List<CmsSearchDocumentType> getDocumentTypeConfigs()
public float getExtractionCacheMaxAge()
public CmsSearchFieldConfiguration getFieldConfiguration(java.lang.String name)
In case no configuration is available with the given name, null
is returned.
name
- the name to get the search field configuration for
public java.util.List<CmsSearchFieldConfiguration> getFieldConfigurations()
CmsSearchFieldConfiguration
entries.
CmsSearchFieldConfiguration
entriespublic CmsSearchManager.CmsSearchForceUnlockMode getForceunlock()
public I_CmsTermHighlighter getHighlighter()
public CmsSearchIndex getIndex(java.lang.String indexName)
The index must exist already.
indexName
- then name of the index
public int getIndexLockMaxWaitSeconds()
public java.util.List<java.lang.String> getIndexNames()
public CmsSearchIndexSource getIndexSource(java.lang.String sourceName)
sourceName
- the name of the index source
public int getMaxExcerptLength()
public int getMaxModificationsBeforeCommit()
public long getOfflineUpdateFrequency()
public java.util.List<CmsSearchIndex> getSearchIndexes()
CmsSearchIndex
instances.
CmsSearchIndex
instancespublic java.util.Map<java.lang.String,CmsSearchIndexSource> getSearchIndexSources()
public long getTimeout()
public void initialize(CmsObject cms) throws CmsRoleViolationException
cms
- the cms object
CmsRoleViolationException
- in case the given opencms object does not have CmsRole.WORKPLACE_MANAGER
permissionspublic void initializeIndexes()
This methods needs to be called if after a change in the index configuration has been made.
public void initOfflineIndexes()
public java.lang.String launch(CmsObject cms, java.util.Map parameters) throws java.lang.Exception
launch
in interface I_CmsScheduledJob
cms
- the OpenCms user context to use when reading resources from the VFSparameters
- the parameters for the scheduled job
java.lang.Exception
- if something goes wrongI_CmsScheduledJob.launch(org.opencms.file.CmsObject, java.util.Map)
public void rebuildAllIndexes(I_CmsReport report) throws CmsException
report
- the report object to write messages (or null
)
CmsException
- if something goes wrongpublic void rebuildIndex(java.lang.String indexName, I_CmsReport report) throws CmsException
indexName
- the name of the index to rebuildreport
- the report object to write messages (or null
)
CmsException
- if something goes wrongpublic void rebuildIndexes(java.util.List<java.lang.String> indexNames, I_CmsReport report) throws CmsException
indexNames
- the names (String) of the index to rebuildreport
- the report object to write messages (or null
)
CmsException
- if something goes wrongpublic boolean removeSearchFieldConfiguration(CmsSearchFieldConfiguration fieldConfiguration) throws CmsIllegalStateException
fieldConfiguration
- the fieldconfiguration to remove from the configuration
CmsIllegalStateException
- if the given field configuration is still used by at least one
CmsSearchIndex
.public boolean removeSearchFieldConfigurationField(CmsSearchFieldConfiguration fieldConfiguration, CmsSearchField field) throws CmsIllegalStateException
fieldConfiguration
- the field configurationfield
- field to remove from the field configuration
CmsIllegalStateException
- if the given field is the last field inside the given field configuration.public boolean removeSearchFieldMapping(CmsSearchField field, CmsSearchFieldMapping mapping) throws CmsIllegalStateException
field
- the fieldmapping
- mapping to remove from the field
CmsIllegalStateException
- if the given mapping is the last mapping inside the given field.public void removeSearchIndex(CmsSearchIndex searchIndex)
searchIndex
- the search index to removepublic void removeSearchIndexes(java.util.List<java.lang.String> indexNames)
indexNames
- the names of the index to removepublic boolean removeSearchIndexSource(CmsSearchIndexSource indexsource) throws CmsIllegalStateException
indexsource
- the indexsource to remove from the configuration
CmsIllegalStateException
- if the given indexsource is still used by at least one
CmsSearchIndex
.public void setDirectory(java.lang.String value)
value
- the name of the directory below WEB-INF/ where the search indexes are storedpublic void setExtractionCacheMaxAge(float extractionCacheMaxAge)
extractionCacheMaxAge
- the maximum age for a text extraction result to setpublic void setExtractionCacheMaxAge(java.lang.String extractionCacheMaxAge)
extractionCacheMaxAge
- the maximum age for a text extraction result to setpublic void setForceunlock(java.lang.String value)
value
- the valuepublic void setHighlighter(java.lang.String highlighter)
A highlighter is a class implementing org.opencms.search.documents.I_TermHighlighter.
highlighter
- the package/class name of the highlighterpublic void setIndexLockMaxWaitSeconds(int value)
value
- the seconds to wait for an index lock during an update operationpublic void setMaxExcerptLength(int maxExcerptLength)
maxExcerptLength
- the max. excerpt length to setpublic void setMaxExcerptLength(java.lang.String maxExcerptLength)
maxExcerptLength
- the max. excerpt length to setpublic void setMaxModificationsBeforeCommit(int maxModificationsBeforeCommit)
maxModificationsBeforeCommit
- the maximum number of modifications to setpublic void setMaxModificationsBeforeCommit(java.lang.String value)
value
- the maximum number of modifications to setpublic void setOfflineUpdateFrequency(long offlineUpdateFrequency)
offlineUpdateFrequency
- the update frequency in milliseconds to setpublic void setOfflineUpdateFrequency(java.lang.String offlineUpdateFrequency)
offlineUpdateFrequency
- the update frequency in milliseconds to setpublic void setTimeout(long value)
value
- the timeout in millisecondspublic void setTimeout(java.lang.String value)
value
- the timeout in millisecondspublic void shutDown()
This will cause all search indices to be shut down.
protected void cleanExtractionCache()
protected void forceIndexUnlock(CmsSearchIndex index, I_CmsReport report, boolean mode) throws CmsIndexException
m_forceUnlockMode
and the given mode.
index
- the index to check the lock forreport
- the report to write error messages onmode
- the mode of the index process if true the index is updated otherwise it is rebuild completely
CmsIndexException
- if unlocking of the index is impossible for some reasonsprotected I_CmsDocumentFactory getDocumentFactory(CmsResource resource)
The type of the document factory is selected by the type of the resource
and the MIME type of the resource content, according to the configuration in opencms-search.xml
.
resource
- a cms resource
protected java.util.List<java.lang.String> getDocumentTypes()
protected void initAvailableDocumentTypes()
A map stores document factories keyed by a string representing a colon separated list of Cms resource types and/or mimetypes.
The keys of this map are used to trigger a document factory to convert a Cms resource into a Lucene index document.
A document factory is a class implementing the interface
I_CmsDocumentFactory
.
protected void initSearchIndexes()
This initializes also the list of Cms resources types to be indexed by an index source.
protected void updateAllIndexes(CmsObject adminCms, CmsUUID publishHistoryId, I_CmsReport report)
"auto"
after resources have been published.
adminCms
- an OpenCms user context with Admin permissionspublishHistoryId
- the history ID of the published projectreport
- the report to write the output toprotected void updateIndex(CmsSearchIndex index, I_CmsReport report, java.util.List<CmsPublishedResource> resourcesToIndex) throws CmsException
If the optional List of
instances is provided, the index will be
incrementally updated for these resources only. If this List is CmsPublishedResource
null
or empty,
the index will be fully rebuild.
index
- the index to update or rebuildreport
- the report to write output messages toresourcesToIndex
- an (optional) list of CmsPublishedResource
objects to update in the index
CmsException
- if something goes wrongprotected void updateIndexIncremental(CmsObject cms, CmsSearchIndex index, I_CmsReport report, java.util.List<CmsPublishedResource> resourcesToIndex) throws CmsException
cms
- the OpenCms user context to use for accessing the VFSindex
- the index to updatereport
- the report to write output messages toresourcesToIndex
- a list of CmsPublishedResource
objects to update in the index
CmsException
- if something goes wrongprotected void updateIndexOffline(I_CmsReport report, java.util.List<CmsPublishedResource> resourcesToIndex)
report
- the report to write the index information toresourcesToIndex
- the list of CmsPublishedResource
objects to index
|
||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |