public abstract class LuceneIndex<T extends Element> extends Object implements OracleIndex<T>
EDGE_ID_PROP, EDGE_LABEL_PROP, END_NODE_ID_PROP, START_NODE_ID_PROP, TYPE_DT_BOOL, TYPE_DT_DATE, TYPE_DT_DOUBLE, TYPE_DT_FLOAT, TYPE_DT_INTEGER, TYPE_DT_SERIALIZABLE, TYPE_DT_STRING, VERTEX_ID_PROP
Constructor and Description |
---|
LuceneIndex(String indexName, Class<T> indexClass, OraclePropertyGraphBase oraclePropertyGraph, Parameter[] indexParameters, boolean clear)
Constructs a new LuceneIndex object.
|
Modifier and Type | Method and Description |
---|---|
void |
add(T element)
Adds a new Element into the Element Index
|
void |
addToDeleteCache(Long id, int indexDir)
Add the specified element to the delete cache for future removal
|
String |
buildSearchTerm(String key, Object value)
Builds a search term query expression in the syntax required by this index.
|
String |
buildSearchTerm(String key, Object value, Class dtValue)
Builds a search term query expression in the syntax required by this index.
|
void |
clearIndex()
Clears all data stored in the index.
|
void |
close()
Closes this LuceneIndex object
|
void |
commit()
Commit changes
|
long |
count(String key, Object value)
Counts all the matching elements that have a particular key/value property within the index
|
long |
count(String key, Object value, boolean acceptWildcard)
Counts all the matching elements that have a particular key/value property within the index
|
long |
count(String key, Object value, Class dtValue, boolean acceptWildcard)
Counts all the matching elements that have a particular key/value property within the index
|
void |
deleteExistingDirectories(String[] indexLocation)
Delete existing directories where the Lucene index is stored.
|
void |
dropIndex()
Clears all data stored in the index.
|
CloseableIterable<T> |
get(String key, Object value)
Gets an Iterable object with all the matching elements that have a particular key/value property within the index
|
CloseableIterable<T> |
get(String key, Object value, boolean acceptWildcard)
Gets an Iterable object with all the matching elements that have a particular key/value property within the index
|
abstract CloseableIterable<T> |
get(String key, Object value, Class dtValue, boolean acceptWildcard)
Gets an Iterable object with all the matching elements that have a particular key/value property within the index
|
org.apache.lucene.store.Directory |
getDirectory(int index)
Get a
Directory object for the specified subdirectory ID. |
String |
getDirectoryName()
Gets the directory name for this index.
|
String |
getDocIdentifier()
Get index document's identifier.
|
String |
getGraphName()
Get the name of the associated graph
|
Class<T> |
getIndexClass()
Gets the class associated to this index
|
String |
getIndexName()
Gets the name of this index instance.
|
LuceneParameters |
getIndexParameters()
Gets the index parameters associated to this index.
|
OracleDirectory |
getOracleDirectory()
Gets the Oracle Directory storing all index data.
|
OracleIndexParameters |
getOracleIndexParameters()
Gets the OracleIndexParameters associated to this index
|
org.apache.lucene.search.SearcherManager |
getOracleSearcherManager(int index)
Gets the SearcherManager object that executes read operations over the index stored in the specified directory.
|
Parameter<String,Object>[] |
getParameters()
Gets the Parameters associated to this index.
|
CloseableIterable<T>[] |
getPartitioned(Object[] connections, String key, Object value, boolean acceptWildcard, int startShardId)
Gets an array of
CloseableIterable objects that hold all the elements with an attribute matching the given K/V pair. |
abstract CloseableIterable<T>[] |
getPartitioned(Object[] connections, String key, Object value, Class dtValue, boolean acceptWildcard, int startShardId)
Gets an array of
CloseableIterable objects that hold all the elements with an attribute matching the given K/V pair. |
org.apache.lucene.search.SearcherFactory |
getSearcherFactory()
Gets the searcher factory associated to this index
|
int |
getTotalShards()
Gets the number of shards (sub-directories) in this index.
|
boolean |
isAutoIndex()
Returns true if this is an auto index
|
boolean |
isDelBatchEmpty()
Verifies if the deletes batch associated to this index is empty.
|
boolean |
isDelBatchFull()
Verifies if the deletes batch associated to this index is full.
|
boolean |
isUpdatesBatchEmpty()
Verifies if the updates batch associated to this index is empty.
|
boolean |
isUpdatesBatchFull()
Verifies if the updates batch associated to this index is full.
|
void |
put(String key, Object value, T element)
Indexes an element by a key and a value.
|
void |
put(String key, Object value, T element, OracleIndexWriter[] indexWriters)
Indexes an element by a key and a value.
|
CloseableIterable<T> |
query(String key, Object value)
Query for all the elements satisfying the specified K/V property within the index
|
CloseableIterable<T> |
query(String key, Object value, boolean useWildcards)
Query for all the elements satisfying the specified K/V property within the index
|
void |
remove(String key, Object value, Class dtValue, T element, OracleIndexWriter[] indexWriters)
Removes an element indexed by a particular key/value.
|
void |
remove(String key, Object value, T element)
Removes an element indexed by a particular key/value.
|
void |
remove(String key, Object value, T element, OracleIndexWriter[] indexWriters)
Removes an element indexed by a particular key/value.
|
void |
remove(T element)
Deletes a element from this index
|
void |
removeAll(String key)
Removes all the elements from the index matching the specified key.
|
void |
removeAll(String key, OracleIndexWriter[] indexWriters)
Removes all the elements from the index matching the specified key.
|
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
refreshIndex
public LuceneIndex(String indexName, Class<T> indexClass, OraclePropertyGraphBase oraclePropertyGraph, Parameter[] indexParameters, boolean clear)
indexName
- the name of the indexindexClass
- the element class that this index is indexing (can be base class)oraclePropertyGraph
- an OraclePropertyGraphBase
object.indexParameters
- a collection of parameters for the underlying index implementation.clear
- a boolean specifying if the index should be cleared at the beginning.public void add(T element)
add
in interface OracleIndex<T extends Element>
element
- an Element
object.IOException
public void addToDeleteCache(Long id, int indexDir)
id
- the id of the element to remove.indexDir
- the number of directory where the element is stored.public String buildSearchTerm(String key, Object value)
buildSearchTerm
in interface OracleIndex<T extends Element>
key
- the key of the K/V propertyvalue
- the value object of the K/V propertypublic String buildSearchTerm(String key, Object value, Class dtValue)
buildSearchTerm
in interface OracleIndex<T extends Element>
key
- the key of the K/V propertyvalue
- the value object of the K/V propertydtValue
- class of the value objectpublic void clearIndex()
clearIndex
in interface OracleIndex<T extends Element>
public void close()
close
in interface OracleIndex<T extends Element>
public void commit()
commit
in interface OracleIndex<T extends Element>
public final long count(String key, Object value)
count
in interface Index<T extends Element>
key
- the name of the property. It MUST not be NULL. If the key is not found in the index, the result will be 0.value
- the value object of the property. It can be NULL which will cause all edges with the given key to be returned.CloseableIterable
object.public final long count(String key, Object value, boolean acceptWildcard)
count
in interface OracleIndex<T extends Element>
key
- the name of the property. It MUST not be NULL. If the key is not found in the index, the result will be 0.value
- the value object of the property. It can be NULL which will cause all edges with the given key to be returned.acceptWildcard
- specifies if wild cards can be used in the value object. the indexCloseableIterable
object.public long count(String key, Object value, Class dtValue, boolean acceptWildcard)
count
in interface OracleIndex<T extends Element>
key
- the name of the property. It MUST not be NULL. If the key is not found in the index, the result will be 0.value
- the value object of the property. It can be NULL which will cause all edges with the given key to be returned.dtValue
- the class representing the datatype of the property value. This can be used to cast the property value to a different datatype. For example, if the value is "3.01" and dtValue is Float.Class, then this value will be treated as a 3.01f.acceptWildcard
- specifies if wild cards can be used in the value object. the indexCloseableIterable
object.public void deleteExistingDirectories(String[] indexLocation)
indexLocation
- the file paths of the sub-directories to remove.public void dropIndex()
dropIndex
in interface OracleIndex<T extends Element>
public final CloseableIterable<T> get(String key, Object value)
get
in interface Index<T extends Element>
key
- the name of the property. It MUST not be NULL. If the key is not found in the index, the result will be 0.value
- the value object of the property. It can be NULL which will cause all edges with the given key to be returned.CloseableIterable
object.public final CloseableIterable<T> get(String key, Object value, boolean acceptWildcard)
get
in interface OracleIndex<T extends Element>
key
- the name of the property. It MUST not be NULL. If the key is not found in the index, the result will be 0.value
- the value object of the property. It can be NULL which will cause all edges with the given key to be returned.acceptWildcard
- specifies if wild cards can be used in the value object. the indexCloseableIterable
object.public abstract CloseableIterable<T> get(String key, Object value, Class dtValue, boolean acceptWildcard)
get
in interface OracleIndex<T extends Element>
key
- the name of the property. It MUST not be NULL. If the key is not found in the index, the result will be 0.value
- the value object of the property. It can be NULL which will cause all edges with the given key to be returned.dtValue
- the class representing the datatype of the property value. This can be used to cast the property value to a different datatype. For example, if the value is "3.01" and dtValue is Float.Class, then this value will be treated as a 3.01f.acceptWildcard
- specifies if wild cards can be used in the value object. the indexCloseableIterable
object.public org.apache.lucene.store.Directory getDirectory(int index)
Directory
object for the specified subdirectory ID.index
- the subdirectory ID. The directories in the Lucene index are a positive number from the range of [0 to N - 1] where N is the total number of subdirectories.public final String getDirectoryName()
getDirectoryName
in interface OracleIndex<T extends Element>
public String getDocIdentifier()
getDocIdentifier
in interface OracleIndex<T extends Element>
public final String getGraphName()
getGraphName
in interface OracleIndex<T extends Element>
public final Class<T> getIndexClass()
OracleIndex
getIndexClass
in interface Index<T extends Element>
getIndexClass
in interface OracleIndex<T extends Element>
public final String getIndexName()
getIndexName
in interface Index<T extends Element>
public LuceneParameters getIndexParameters()
LuceneParameters
object.public OracleDirectory getOracleDirectory()
OracleDirectory
object.public OracleIndexParameters getOracleIndexParameters()
OracleIndex
getOracleIndexParameters
in interface OracleIndex<T extends Element>
public org.apache.lucene.search.SearcherManager getOracleSearcherManager(int index) throws IOException
index
- the subdirectory ID. The directories in the Lucene index are a positive number from the range of [0 to N - 1] where N is the total number of subdirectories.SearcherManager
object.IOException
public Parameter<String,Object>[] getParameters()
getParameters
in interface OracleIndex<T extends Element>
Parameter
array.public final CloseableIterable<T>[] getPartitioned(Object[] connections, String key, Object value, boolean acceptWildcard, int startShardId)
CloseableIterable
objects that hold all the elements with an attribute matching the given K/V pair. Each element in the CloseableIterable
array uses a separate connection provided to fetch a subset of the results from a corresponding Lucene sub-directory. Note that we assign an integer ID (in the range of [0, N - 1]) to all the sub-directories in a Lucene index with N shards. The subset of shards (subdirectories) queried will consist of those shards with ID value in the range of [startShardId, startShardId - 1 + size of connections array].getPartitioned
in interface OracleIndex<T extends Element>
connections
- an array of connections to the index. Each element of this array should be of type SearcherManager. See getOracleSearcherManager(int)
.key
- the key of a propertyvalue
- the value object of the property.acceptWildcard
- specifies if wild cards can be used in the value object.startShardId
- the ID of the starting shard.CloseableIterable
object.public abstract CloseableIterable<T>[] getPartitioned(Object[] connections, String key, Object value, Class dtValue, boolean acceptWildcard, int startShardId)
CloseableIterable
objects that hold all the elements with an attribute matching the given K/V pair. Each element in the CloseableIterable
array uses a separate connection provided to fetch a subset of the results from a corresponding Lucene sub-directory. Note that we assign an integer ID (in the range of [0, N - 1]) to all the sub-directories in a Lucene index with N shards. The subset of shards (subdirectories) queried will consist of those shards with ID value in the range of [startShardId, startShardId - 1 + size of connections array].getPartitioned
in interface OracleIndex<T extends Element>
connections
- an array of connections to the Lucene index. Each element of this array should be of type SearcherManager. See getOracleSearcherManager(int)
.key
- the key of a propertyvalue
- the value object of the property.dtValue
- the class representing the datatype of the property value. This can be used to cast the property value to a different datatype. For example, if the value is "3.01" and dtValue is Float.Class, then this value will be treated as a 3.01f.acceptWildcard
- specifies if wild cards can be used in the value object.startShardId
- the ID of the starting shard.CloseableIterable
object.public org.apache.lucene.search.SearcherFactory getSearcherFactory()
public int getTotalShards()
getTotalShards
in interface OracleIndex<T extends Element>
public boolean isAutoIndex()
public boolean isDelBatchEmpty()
isDelBatchEmpty
in interface OracleIndex<T extends Element>
public boolean isDelBatchFull()
isDelBatchFull
in interface OracleIndex<T extends Element>
public boolean isUpdatesBatchEmpty()
isUpdatesBatchEmpty
in interface OracleIndex<T extends Element>
public boolean isUpdatesBatchFull()
isUpdatesBatchFull
in interface OracleIndex<T extends Element>
public void put(String key, Object value, T element, OracleIndexWriter[] indexWriters)
key
- the key to index the element by.value
- the value to index the element by.element
- the element to index.indexWriters
- if not null, the cache of indexWriters to use, this avoids opening/closing index writers at flush time, but locks writing operations over the index.public final CloseableIterable<T> query(String key, Object value)
query
in interface Index<T extends Element>
key
- the key of the K/V propertyvalue
- the value object of the K/V propertyCloseableIterable
object.public final CloseableIterable<T> query(String key, Object value, boolean useWildcards)
query
in interface OracleIndex<T extends Element>
key
- the key of the K/V propertyvalue
- the value object of the K/V propertyuseWildcards
- specifies if wild cards can be used in the value object.CloseableIterable
object.public void remove(String key, Object value, Class dtValue, T element, OracleIndexWriter[] indexWriters)
key
- the key of the indexed element.value
- the value of the indexed element.dtValue
- the data type class of the indexed element.element
- the element to remove given the key/value pair.indexWriters
- if not null, the cache of indexWriters to use, this avoids opening/closing index writers at flush time, but locks writing operations over the index.public void remove(String key, Object value, T element)
public void remove(String key, Object value, T element, OracleIndexWriter[] indexWriters)
key
- the key of the indexed element.value
- the value of the indexed element.element
- the element to remove given the key/value pair.indexWriters
- if not null, the cache of indexWriters to use, this avoids opening/closing index writers at flush time, but locks writing operations over the index.public void remove(T element)
remove
in interface OracleIndex<T extends Element>
element
- an Element
object.IOException
public void removeAll(String key)
removeAll
in interface OracleIndex<T extends Element>
key
- the key to remove from the index.public void removeAll(String key, OracleIndexWriter[] indexWriters)
key
- the key to remove from the index.indexWriters
- if not null, the cache of indexWriters to use, this avoids opening/closing index writers at flush time, but locks writing operations over the index.Copyright © 2015 Oracle and/or its afflilates. All Rights Reserved.