Package com.github.ddth.dao.nosql.lucene
Class LuceneKdStorage
- java.lang.Object
-
- com.github.ddth.dao.nosql.lucene.BaseLuceneStorage
-
- com.github.ddth.dao.nosql.lucene.LuceneKdStorage
-
- All Implemented Interfaces:
IKdStorage
,java.io.Closeable
,java.lang.AutoCloseable
public class LuceneKdStorage extends BaseLuceneStorage implements IKdStorage
Lucene implementation of {key:document} NoSQL storage.Design:
- "document" is serialized to
byte[]
and stored in a fieldFIELD_DATA
. - "document"'s scalar fields (string, number, boolean) are indexed in corresponding Lucene fields.
- Since:
- 0.10.0
- Author:
- Thanh Nguyen
-
-
Field Summary
Fields Modifier and Type Field Description static java.lang.String
DATETIME_FORMAT
protected static java.lang.String
FIELD_DATA
-
Fields inherited from class com.github.ddth.dao.nosql.lucene.BaseLuceneStorage
FIELD_ID, FIELD_KEY, FIELD_SPACE_ID
-
-
Constructor Summary
Constructors Constructor Description LuceneKdStorage()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected java.util.Map<java.lang.String,java.lang.Object>
bytesToDocument(byte[] data)
De-serialize byte array to "document".protected org.apache.lucene.document.Field
createIndexField(java.lang.String key, java.lang.Object value)
Create index field for a document's field value.void
delete(java.lang.String spaceId, java.lang.String key, IDeleteCallback callback)
Delete an existing entry from storage.protected byte[]
documentToBytes(java.util.Map<java.lang.String,java.lang.Object> doc)
Serialize "document" to byte array.<T> T
get(IKdEntryMapper<T> mapper, java.lang.String spaceId, java.lang.String key)
Get/Load an entry by key.java.util.Map<java.lang.String,java.lang.Object>
get(java.lang.String spaceId, java.lang.String key)
Get/Load an entry by key.boolean
keyExists(java.lang.String spaceId, java.lang.String key)
Check if a key exists.void
put(java.lang.String spaceId, java.lang.String key, java.util.Map<java.lang.String,java.lang.Object> doc, IPutCallback<java.util.Map<java.lang.String,java.lang.Object>> callback)
Put/Store an entry.long
size(java.lang.String spaceId)
Return number of entries.-
Methods inherited from class com.github.ddth.dao.nosql.lucene.BaseLuceneStorage
buildIdTerm, buildQuery, close, createDocument, destroy, doCount, doDelete, doGet, getAutoCommitPeriodMs, getDirectory, getIndexManager, getIndexSearcher, getIndexWriter, getIndexWriterConfig, init, isAsyncWrite, setAsyncWrite, setAutoCommitPeriodMs, setDirectory, setIndexManager, setIndexWriterConfig
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface com.github.ddth.dao.nosql.IKdStorage
delete, put
-
-
-
-
Field Detail
-
DATETIME_FORMAT
public static final java.lang.String DATETIME_FORMAT
- See Also:
- Constant Field Values
-
FIELD_DATA
protected static final java.lang.String FIELD_DATA
- See Also:
- Constant Field Values
-
-
Method Detail
-
delete
public void delete(java.lang.String spaceId, java.lang.String key, IDeleteCallback callback)
Delete an existing entry from storage.- Specified by:
delete
in interfaceIKdStorage
-
keyExists
public boolean keyExists(java.lang.String spaceId, java.lang.String key) throws java.io.IOException
Check if a key exists.- Specified by:
keyExists
in interfaceIKdStorage
- Returns:
- Throws:
java.io.IOException
-
get
public java.util.Map<java.lang.String,java.lang.Object> get(java.lang.String spaceId, java.lang.String key) throws java.io.IOException
Get/Load an entry by key.- Specified by:
get
in interfaceIKdStorage
- Returns:
- Throws:
java.io.IOException
-
get
public <T> T get(IKdEntryMapper<T> mapper, java.lang.String spaceId, java.lang.String key) throws java.io.IOException
Get/Load an entry by key.- Specified by:
get
in interfaceIKdStorage
- Returns:
- Throws:
java.io.IOException
-
put
public void put(java.lang.String spaceId, java.lang.String key, java.util.Map<java.lang.String,java.lang.Object> doc, IPutCallback<java.util.Map<java.lang.String,java.lang.Object>> callback)
Put/Store an entry.- Specified by:
put
in interfaceIKdStorage
-
size
public long size(java.lang.String spaceId) throws java.io.IOException
Return number of entries.- Specified by:
size
in interfaceIKdStorage
- Returns:
- number of entries currently in the storage,
-1
if counting number entries is not supported - Throws:
java.io.IOException
-
bytesToDocument
protected java.util.Map<java.lang.String,java.lang.Object> bytesToDocument(byte[] data)
De-serialize byte array to "document".- Parameters:
data
-- Returns:
-
documentToBytes
protected byte[] documentToBytes(java.util.Map<java.lang.String,java.lang.Object> doc)
Serialize "document" to byte array.- Parameters:
doc
-- Returns:
-
createIndexField
protected org.apache.lucene.document.Field createIndexField(java.lang.String key, java.lang.Object value)
Create index field for a document's field value.- Boolean: indexed as a
IntPoint
with value1=true/0=false
- Character: indexed as a
StringField
- Byte, Short, Integer, Long: indexed as a
LongPoint
- Float, Double: indexed as a
DoublePoint
- String: indexed as a
StringField
if value contains no space,TextField
otherwise - Date: indexed as a
StringField
,Date
is converted toString
with formatDATETIME_FORMAT
.
- Parameters:
key
-value
-- Returns:
- Boolean: indexed as a
-
-