|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.apache.jackrabbit.core.query.AbstractQueryHandler org.apache.jackrabbit.core.query.lucene.SearchIndex
public class SearchIndex
Implements a QueryHandler
using
Lucene.
Nested Class Summary | |
---|---|
protected static class |
SearchIndex.CombinedIndexReader
Combines multiple CachingMultiIndexReader into a MultiReader
with HierarchyResolver support. |
Field Summary | |
---|---|
static int |
DEFAULT_EXTRACTOR_BACK_LOG
The default value for property extractorBackLog . |
static int |
DEFAULT_EXTRACTOR_POOL_SIZE
Deprecated. this value is not used anymore. Instead the default value is calculated as follows: 2 * Runtime.getRuntime().availableProcessors(). |
static long |
DEFAULT_EXTRACTOR_TIMEOUT
The default timeout in milliseconds which is granted to the text extraction process until fulltext indexing is deferred to a background thread. |
static int |
DEFAULT_MAX_FIELD_LENGTH
the default value for property maxFieldLength . |
static int |
DEFAULT_MAX_MERGE_DOCS
The default value for property maxMergeDocs . |
static int |
DEFAULT_MERGE_FACTOR
the default value for property mergeFactor . |
static int |
DEFAULT_MIN_MERGE_DOCS
The default value for property minMergeDocs . |
static int |
DEFAULT_TERM_INFOS_INDEX_DIVISOR
The default value for termInfosIndexDivisor . |
protected static PathFactory |
PATH_FACTORY
The path factory. |
static List |
VALID_SYSTEM_INDEX_NODE_TYPE_NAMES
|
Constructor Summary | |
---|---|
SearchIndex()
Default constructor. |
Method Summary | |
---|---|
void |
addNode(NodeState node)
Adds the node to the search index. |
void |
close()
Closes this QueryHandler and frees resources attached
to this handler. |
protected DirectoryManager |
createDirectoryManager()
|
protected org.apache.lucene.document.Document |
createDocument(NodeState node,
NamespaceMappings nsMappings,
IndexFormatVersion indexFormatVersion)
Creates a lucene Document for a node state using the
namespace mappings nsMappings . |
ExcerptProvider |
createExcerptProvider(org.apache.lucene.search.Query query)
Creates an excerpt provider for the given query . |
ExecutableQuery |
createExecutableQuery(SessionImpl session,
ItemManager itemMgr,
QueryObjectModelTree qomTree)
Creates a new query by specifying the query object model. |
ExecutableQuery |
createExecutableQuery(SessionImpl session,
ItemManager itemMgr,
String statement,
String language)
Creates a new query by specifying the query statement itself and the language in which the query is stated. |
protected IndexingConfiguration |
createIndexingConfiguration(NamespaceMappings namespaceMappings)
|
protected org.apache.lucene.search.SortField[] |
createSortFields(Path[] orderProps,
boolean[] orderSpecs)
Creates the SortFields for the order properties. |
protected SpellChecker |
createSpellChecker()
Creates a spell checker for this query handler. |
protected SynonymProvider |
createSynonymProvider()
|
protected FileSystemResource |
createSynonymProviderConfigResource()
Creates a file system resource to the synonym provider configuration. |
protected TextExtractor |
createTextExtractor()
Factory method to create the TextExtractor instance. |
void |
deleteNode(NodeId id)
Removes the node with uuid from the search index. |
protected void |
doInit()
Initializes this QueryHandler . |
MultiColumnQueryHits |
executeQuery(SessionImpl session,
AbstractQueryImpl queryImpl,
org.apache.lucene.search.Query query,
Path[] orderProps,
boolean[] orderSpecs,
long resultFetchHint)
Executes the query on the search index. |
MultiColumnQueryHits |
executeQuery(SessionImpl session,
MultiColumnQuery query,
Path[] orderProps,
boolean[] orderSpecs,
long resultFetchHint)
Executes the query on the search index. |
String |
getAnalyzer()
Returns the class name of the analyzer that is currently in use. |
boolean |
getAutoRepair()
|
int |
getBufferSize()
Returns the current value for the buffer size. |
int |
getCacheSize()
|
DirectoryManager |
getDirectoryManager()
|
String |
getDirectoryManagerClass()
|
boolean |
getEnableConsistencyCheck()
|
String |
getExcerptProviderClass()
|
int |
getExtractorBackLogSize()
|
int |
getExtractorPoolSize()
|
long |
getExtractorTimeout()
|
boolean |
getForceConsistencyCheck()
|
protected MultiIndex |
getIndex()
Returns the actual index. |
IndexFormatVersion |
getIndexFormatVersion()
Returns the index format version that this search index is able to support when a query is executed on this index. |
IndexingConfiguration |
getIndexingConfig()
|
String |
getIndexingConfiguration()
|
String |
getIndexingConfigurationClass()
|
protected Element |
getIndexingConfigurationDOM()
Returns the document element of the indexing configuration or null if there is no indexing configuration. |
org.apache.lucene.index.IndexReader |
getIndexReader()
Returns an index reader for this search index. |
protected org.apache.lucene.index.IndexReader |
getIndexReader(boolean includeSystemIndex)
Returns an index reader for this search index. |
int |
getMaxFieldLength()
|
int |
getMaxMergeDocs()
Returns the current value for maxMergeDocs. |
long |
getMaxVolatileIndexSize()
|
int |
getMergeFactor()
Returns the current value for the merge factor. |
int |
getMinMergeDocs()
Returns the current value for minMergeDocs. |
NamespaceMappings |
getNamespaceMappings()
Returns the namespace mappings for the internal representation. |
String |
getPath()
Returns the location of the search index. |
protected DefaultQueryNodeFactory |
getQueryNodeFactory()
This method returns the QueryNodeFactory used to parse Queries. |
protected Path |
getRelativePath(NodeState nodeState,
PropertyState propState)
Returns the relative path from nodeState to
propState . |
boolean |
getRespectDocumentOrder()
|
int |
getResultFetchSize()
|
org.apache.lucene.search.Similarity |
getSimilarity()
|
String |
getSimilarityClass()
|
protected org.apache.lucene.search.SortComparatorSource |
getSortComparatorSource()
|
SpellChecker |
getSpellChecker()
|
String |
getSpellCheckerClass()
|
boolean |
getSupportHighlighting()
|
SynonymProvider |
getSynonymProvider()
|
String |
getSynonymProviderClass()
|
String |
getSynonymProviderConfigPath()
|
int |
getTermInfosIndexDivisor()
|
org.apache.lucene.analysis.Analyzer |
getTextAnalyzer()
Returns the analyzer in use for indexing. |
TextExtractor |
getTextExtractor()
Returns the text extractor in use for indexing. |
String |
getTextFilterClasses()
Returns the fully qualified class names of the text filter instances currently in use. |
boolean |
getUseCompoundFile()
Returns the current value for useCompoundFile. |
int |
getVolatileIdleTime()
Returns the current value for volatileIdleTime. |
boolean |
isInitializeHierarchyCache()
|
protected void |
mergeAggregatedNodeIndexes(NodeState state,
org.apache.lucene.document.Document doc)
Merges the fulltext indexed fields of the aggregated node states into doc . |
protected void |
retrieveAggregateRoot(NodeState state,
Map map)
Retrieves the root of the indexing aggregate for state and
puts it into map . |
protected void |
retrieveAggregateRoot(Set removedUUIDs,
Map map)
Retrieves the root of the indexing aggregate for removedUUIDs
and puts it into map . |
void |
setAnalyzer(String analyzerClassName)
Sets the analyzer in use for indexing. |
void |
setAutoRepair(boolean b)
|
void |
setBufferSize(int size)
|
void |
setCacheSize(int size)
|
void |
setDirectoryManagerClass(String className)
Sets name of the directory manager class. |
void |
setEnableConsistencyCheck(boolean b)
Enables or disables the consistency check on startup. |
void |
setExcerptProviderClass(String className)
Sets the class name for the ExcerptProvider that should be used
for the rep:excerpt pseudo property in a query. |
void |
setExtractorBackLogSize(int backLog)
The number of extractor jobs that are queued until a new job is executed with the current thread instead of using the thread pool. |
void |
setExtractorPoolSize(int numThreads)
The number of background threads for the extractor pool. |
void |
setExtractorTimeout(long timeout)
The timeout in milliseconds which is granted to the text extraction process until fulltext indexing is deferred to a background thread. |
void |
setForceConsistencyCheck(boolean b)
|
void |
setIndexingConfiguration(String path)
Sets the path to the indexing configuration file. |
void |
setIndexingConfigurationClass(String className)
Sets the name of the class that implements IndexingConfiguration . |
void |
setInitializeHierarchyCache(boolean initializeHierarchyCache)
Whether the hierarchy cache should be initialized immediately on startup. |
void |
setMaxFieldLength(int length)
|
void |
setMaxMergeDocs(int maxMergeDocs)
The lucene index writer property: maxMergeDocs |
void |
setMaxVolatileIndexSize(long maxVolatileIndexSize)
Sets a new maxVolatileIndexSize value. |
void |
setMergeFactor(int mergeFactor)
The lucene index writer property: mergeFactor |
void |
setMinMergeDocs(int minMergeDocs)
The lucene index writer property: minMergeDocs |
void |
setPath(String path)
Sets the location of the search index. |
void |
setRespectDocumentOrder(boolean docOrder)
|
void |
setResultFetchSize(int size)
Tells the query handler how many result should be fetched initially when a query is executed. |
void |
setSimilarityClass(String className)
Sets the similarity implementation, which will be used for indexing and searching. |
void |
setSpellCheckerClass(String className)
Sets the name of the class that implements SpellChecker . |
void |
setSupportHighlighting(boolean b)
If set to true additional information is stored in the index
to support highlighting using the rep:excerpt pseudo property. |
void |
setSynonymProviderClass(String className)
Sets the name of the class that implements SynonymProvider . |
void |
setSynonymProviderConfigPath(String path)
Sets the configuration path for the synonym provider. |
void |
setTermInfosIndexDivisor(int termInfosIndexDivisor)
Sets a new value for termInfosIndexDivisor. |
void |
setTextFilterClasses(String filterClasses)
Sets the list of text extractors (and text filters) to use for extracting text content from binary properties. |
void |
setUseCompoundFile(boolean b)
The lucene index writer property: useCompoundFile |
void |
setVolatileIdleTime(int volatileIdleTime)
Sets the property: volatileIdleTime |
void |
updateNodes(NodeIdIterator remove,
NodeStateIterator add)
This implementation forwards the call to MultiIndex.update(Collection, Collection) and
transforms the two iterators to the required types. |
Methods inherited from class org.apache.jackrabbit.core.query.AbstractQueryHandler |
---|
getContext, getIdleTime, getOnWorkspaceInconsistency, getOnWorkspaceInconsistencyHandler, getQueryClass, init, setIdleTime, setOnWorkspaceInconsistency, setQueryClass |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
public static final List VALID_SYSTEM_INDEX_NODE_TYPE_NAMES
public static final int DEFAULT_MIN_MERGE_DOCS
minMergeDocs
.
public static final int DEFAULT_MAX_MERGE_DOCS
maxMergeDocs
.
public static final int DEFAULT_MERGE_FACTOR
mergeFactor
.
public static final int DEFAULT_MAX_FIELD_LENGTH
maxFieldLength
.
public static final int DEFAULT_EXTRACTOR_POOL_SIZE
extractorPoolSize
.
public static final int DEFAULT_EXTRACTOR_BACK_LOG
extractorBackLog
.
public static final long DEFAULT_EXTRACTOR_TIMEOUT
public static final int DEFAULT_TERM_INFOS_INDEX_DIVISOR
termInfosIndexDivisor
.
protected static final PathFactory PATH_FACTORY
Constructor Detail |
---|
public SearchIndex()
Method Detail |
---|
protected void doInit() throws IOException
QueryHandler
. This implementation requires
that a path parameter is set in the configuration. If this condition
is not met, a IOException
is thrown.
doInit
in class AbstractQueryHandler
IOException
- if an error occurs while initializing this handler.public void addNode(NodeState node) throws RepositoryException, IOException
node
to the search index.
node
- the node to add.
RepositoryException
- if an error occurs while indexing the node.
IOException
- if an error occurs while adding the node to the index.public void deleteNode(NodeId id) throws IOException
uuid
from the search index.
id
- the id of the node to remove from the index.
IOException
- if an error occurs while removing the node from
the index.public void updateNodes(NodeIdIterator remove, NodeStateIterator add) throws RepositoryException, IOException
MultiIndex.update(Collection, Collection)
and
transforms the two iterators to the required types.
updateNodes
in interface QueryHandler
updateNodes
in class AbstractQueryHandler
remove
- uuids of nodes to remove.add
- NodeStates to add. Calls to next()
on this
iterator may return null
, to indicate that a
node could not be indexed successfully.
RepositoryException
- if an error occurs while indexing a node.
IOException
- if an error occurs while updating the index.public ExecutableQuery createExecutableQuery(SessionImpl session, ItemManager itemMgr, String statement, String language) throws InvalidQueryException
language
must specify a query language
string from among those returned by QueryManager.getSupportedQueryLanguages(); if it is not
then an InvalidQueryException
is thrown.
session
- the session of the current user creating the query object.itemMgr
- the item manager of the current user.statement
- the query statement.language
- the syntax of the query statement.
Query
object.
InvalidQueryException
- if statement is invalid or language is unsupported.public ExecutableQuery createExecutableQuery(SessionImpl session, ItemManager itemMgr, QueryObjectModelTree qomTree) throws InvalidQueryException
session
- the session of the current user creating the query
object.itemMgr
- the item manager of the current user.qomTree
- query query object model tree.
Query
object.
InvalidQueryException
- if the query object model tree is invalid.QueryHandler.createExecutableQuery(SessionImpl, ItemManager, QueryObjectModelTree)
protected DefaultQueryNodeFactory getQueryNodeFactory()
public void close()
QueryHandler
and frees resources attached
to this handler.
public MultiColumnQueryHits executeQuery(SessionImpl session, AbstractQueryImpl queryImpl, org.apache.lucene.search.Query query, Path[] orderProps, boolean[] orderSpecs, long resultFetchHint) throws IOException
session
- the session that executes the query.queryImpl
- the query impl.query
- the lucene query.orderProps
- name of the properties for sort order.orderSpecs
- the order specs for the sort order properties.
true
indicates ascending order,
false
indicates descending.resultFetchHint
- a hint on how many results should be fetched.
IOException
- if an error occurs while searching the index.public MultiColumnQueryHits executeQuery(SessionImpl session, MultiColumnQuery query, Path[] orderProps, boolean[] orderSpecs, long resultFetchHint) throws IOException
session
- the session that executes the query.query
- the query.orderProps
- name of the properties for sort order.orderSpecs
- the order specs for the sort order properties.
true
indicates ascending order,
false
indicates descending.resultFetchHint
- a hint on how many results should be fetched.
IOException
- if an error occurs while searching the index.public ExcerptProvider createExcerptProvider(org.apache.lucene.search.Query query) throws IOException
query
.
query
- the query.
query
.
IOException
- if the provider cannot be created.public org.apache.lucene.analysis.Analyzer getTextAnalyzer()
public TextExtractor getTextExtractor()
public NamespaceMappings getNamespaceMappings()
public IndexingConfiguration getIndexingConfig()
null
if there is
none.public SynonymProvider getSynonymProvider()
public SpellChecker getSpellChecker()
null
.public org.apache.lucene.search.Similarity getSimilarity()
public org.apache.lucene.index.IndexReader getIndexReader() throws IOException
IOException
- the index reader cannot be obtained.public IndexFormatVersion getIndexFormatVersion()
public DirectoryManager getDirectoryManager()
protected org.apache.lucene.index.IndexReader getIndexReader(boolean includeSystemIndex) throws IOException
includeSystemIndex
- if true
the index reader will
cover the complete workspace. If
false
the returned index reader
will not contains any nodes under /jcr:system.
IOException
- the index reader cannot be obtained.protected org.apache.lucene.search.SortField[] createSortFields(Path[] orderProps, boolean[] orderSpecs)
orderProps
- the order properties.orderSpecs
- the order specs for the properties.
protected org.apache.lucene.document.Document createDocument(NodeState node, NamespaceMappings nsMappings, IndexFormatVersion indexFormatVersion) throws RepositoryException
Document
for a node state using the
namespace mappings nsMappings
.
node
- the node state to index.nsMappings
- the namespace mappings of the search index.indexFormatVersion
- the index format version that should be used to
index the passed node state.
Document
that contains all properties of
node
.
RepositoryException
- if an error occurs while indexing the
node
.protected MultiIndex getIndex()
protected org.apache.lucene.search.SortComparatorSource getSortComparatorSource()
protected TextExtractor createTextExtractor()
TextExtractor
instance.
TextExtractor
instance this index should use.protected IndexingConfiguration createIndexingConfiguration(NamespaceMappings namespaceMappings)
namespaceMappings
- The namespace mappings
null
if there
is no configuration.protected SynonymProvider createSynonymProvider()
null
if none is
configured or an error occurs.protected DirectoryManager createDirectoryManager() throws IOException
DirectoryManager
.
IOException
- if the directory manager cannot be instantiated or
an exception occurs while initializing the manager.protected FileSystemResource createSynonymProviderConfigResource() throws FileSystemException, IOException
null
if no path was
configured.
FileSystemException
- if an exception occurs accessing the file
system.
IOException
protected SpellChecker createSpellChecker()
null
if none is configured or
an error occurs.protected Element getIndexingConfigurationDOM()
null
if there is no indexing configuration.
null
if there is
none.protected void mergeAggregatedNodeIndexes(NodeState state, org.apache.lucene.document.Document doc)
doc
.
state
- the node state on which doc
was created.doc
- the lucene document with index fields from state
.protected Path getRelativePath(NodeState nodeState, PropertyState propState) throws RepositoryException, ItemStateException
nodeState
to
propState
.
nodeState
- a node state.propState
- a property state.
RepositoryException
- if an error occurs while resolving paths.
ItemStateException
- if an error occurs while reading item
states.protected void retrieveAggregateRoot(NodeState state, Map map)
state
and
puts it into map
.
state
- the node state for which we want to retrieve the aggregate
root.map
- aggregate roots are collected in this map. Key=UUID,
value=NodeState.protected void retrieveAggregateRoot(Set removedUUIDs, Map map)
removedUUIDs
and puts it into map
.
removedUUIDs
- the UUIDs of removed nodes.map
- aggregate roots are collected in this map.
Key=UUID, value=NodeState.public void setAnalyzer(String analyzerClassName)
If the above conditions are met, then a new instance of the class is set as the analyzer. Otherwise a warning is logged and the current analyzer is not changed.
This property setter method is normally invoked by the Jackrabbit configuration mechanism if the "analyzer" parameter is set in the search configuration.
analyzerClassName
- the analyzer class namepublic String getAnalyzer()
public void setPath(String path)
path
- the location of the search index.public String getPath()
null
if
not set.
public void setUseCompoundFile(boolean b)
public boolean getUseCompoundFile()
public void setMinMergeDocs(int minMergeDocs)
public int getMinMergeDocs()
public void setVolatileIdleTime(int volatileIdleTime)
volatileIdleTime
- idle time in secondspublic int getVolatileIdleTime()
public void setMaxMergeDocs(int maxMergeDocs)
public int getMaxMergeDocs()
public void setMergeFactor(int mergeFactor)
public int getMergeFactor()
public void setBufferSize(int size)
VolatileIndex.setBufferSize(int)
public int getBufferSize()
public void setRespectDocumentOrder(boolean docOrder)
public boolean getRespectDocumentOrder()
public void setForceConsistencyCheck(boolean b)
public boolean getForceConsistencyCheck()
public void setAutoRepair(boolean b)
public boolean getAutoRepair()
public void setCacheSize(int size)
public int getCacheSize()
public void setMaxFieldLength(int length)
public int getMaxFieldLength()
public void setTextFilterClasses(String filterClasses)
TextExtractor
(and TextFilter
) classes
to be used. The configured classes must all have a public default
constructor.
filterClasses
- comma separated list of class namespublic String getTextFilterClasses()
public void setResultFetchSize(int size)
size
- the number of results to fetch initially.public int getResultFetchSize()
public void setExtractorPoolSize(int numThreads)
numThreads
- the number of threads.public int getExtractorPoolSize()
public void setExtractorBackLogSize(int backLog)
backLog
- size of the extractor job queue.public int getExtractorBackLogSize()
public void setExtractorTimeout(long timeout)
timeout
- the timeout in milliseconds.public long getExtractorTimeout()
public void setSupportHighlighting(boolean b)
true
additional information is stored in the index
to support highlighting using the rep:excerpt pseudo property.
b
- true
to enable highlighting support.public boolean getSupportHighlighting()
true
if highlighting support is enabled.public void setExcerptProviderClass(String className)
ExcerptProvider
that should be used
for the rep:excerpt pseudo property in a query.
className
- the name of a class that implements ExcerptProvider
.public String getExcerptProviderClass()
public void setIndexingConfiguration(String path)
path
- the path to the configuration file.public String getIndexingConfiguration()
public void setIndexingConfigurationClass(String className)
IndexingConfiguration
.
The default value is org.apache.jackrabbit.core.query.lucene.IndexingConfigurationImpl
.
className
- the name of the class that implements IndexingConfiguration
.public String getIndexingConfigurationClass()
public void setSynonymProviderClass(String className)
SynonymProvider
. The
default value is null
(none set).
className
- name of the class that implements SynonymProvider
.public String getSynonymProviderClass()
null
if none is set.public void setSpellCheckerClass(String className)
SpellChecker
. The
default value is null
(none set).
className
- name of the class that implements SpellChecker
.public String getSpellCheckerClass()
null
if none is set.public void setEnableConsistencyCheck(boolean b)
b
- true
enables consistency checks.setForceConsistencyCheck(boolean)
public boolean getEnableConsistencyCheck()
true
if consistency checks are enabled.public void setSynonymProviderConfigPath(String path)
path
- the configuration path for the synonym provider.public String getSynonymProviderConfigPath()
null
.public void setSimilarityClass(String className)
Similarity
.
className
- a Similarity
implementation.public String getSimilarityClass()
public void setMaxVolatileIndexSize(long maxVolatileIndexSize)
maxVolatileIndexSize
- the new value.public long getMaxVolatileIndexSize()
public String getDirectoryManagerClass()
public void setDirectoryManagerClass(String className)
DirectoryManager
.
className
- the name of the class that implements directory manager.public int getTermInfosIndexDivisor()
public void setTermInfosIndexDivisor(int termInfosIndexDivisor)
termInfosIndexDivisor
- the new value.public boolean isInitializeHierarchyCache()
true
if the hierarchy cache should be initialized
immediately on startup.public void setInitializeHierarchyCache(boolean initializeHierarchyCache)
initializeHierarchyCache
- true
if the cache should be
initialized immediately.
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |