Package com.jalios.jcms.search
Class LuceneDataSearchEngine
- java.lang.Object
-
- com.jalios.jcms.search.LuceneDataSearchEngine
-
- All Implemented Interfaces:
JcmsConstants
,JaliosConstants
- Direct Known Subclasses:
LuceneCategorySearchEngine
,LuceneMemberSearchEngine
,LucenePublicationSearchEngine
public abstract class LuceneDataSearchEngine extends java.lang.Object implements JcmsConstants
This class provides a base class to index JCMSData
using Lucene.- Since:
- jcms-5.5.0
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
LuceneDataSearchEngine.IndexingLatch
CountDownLatch used to be notified of the end of the next indexing operation taking place on a Data.static class
LuceneDataSearchEngine.ReindexOptions
Class holding reindexing options.
-
Field Summary
Fields Modifier and Type Field Description protected AlarmManager
alarmMgr
static BackgroundProcessManager
BACKGROUND_PROCESS_MGR
protected Channel
channel
protected java.lang.String
directoryName
protected java.lang.String
engineName
static java.lang.String
ID_FIELD
protected java.lang.Object
indexAccessLock
static java.lang.String
INDEXING_DATE_EXTRAINFO
static java.lang.String
INDEXING_DATE_FIELD
protected java.util.List<java.lang.String>
langList
Languages in which the engine index and search its content.protected java.util.Map<java.lang.String,org.apache.lucene.store.FSDirectory>
langToIndexDirMap
Lucene FSDirectory in which the engine index and search its content.protected java.util.Map<java.lang.String,org.apache.lucene.index.IndexWriter>
langToIndexWriterMap
Lucene IndexWriter reused for all write operation.protected boolean
multilingual
-
Fields inherited from interface com.jalios.util.JaliosConstants
CRLF, MILLIS_IN_ONE_DAY, MILLIS_IN_ONE_HOUR, MILLIS_IN_ONE_MINUTE, MILLIS_IN_ONE_MONTH, MILLIS_IN_ONE_SECOND, MILLIS_IN_ONE_WEEK, MILLIS_IN_ONE_YEAR
-
Fields inherited from interface com.jalios.jcms.JcmsConstants
ADATE_SEARCH, ADMIN_NOTES_PROP, ADVANCED_TAB, AJAX_MODE_ATTR, ARCHIVES_DIR, ASCII_WIDTH, CATEGORY_TAB, CDATE_SEARCH, CLASS_PROPERTY, COMMON_ALARM, CONTENT_TAB, COOKIE_MAX_AGE, COUNTRY_SPRITE, CS_TYPOLOGY_ROOT_CAT_VID, CTRL_TOPIC_INTERNAL, CTRL_TOPIC_REF, CTRL_TOPIC_VALUE, CTRL_TOPIC_WRITE, CUSTOM_PROP, DATA_DIRECTORY, DEFAULT_PHOTO_PROP, DOCCHOOSER_HEIGHT, DOCCHOOSER_WIDTH, DOCS_DIR, EDATE_SEARCH, EMAIL_REGEXP, ERROR_MSG, FORBIDDEN_FILE_ACCESS, FORBIDDEN_REDIRECT, FORCE_REDIRECT, GLYPH_ICON_PREFIX, ICON_ARCHIVE, ICON_ICON_PREFIX, ICON_LOCK, ICON_LOCK_STRONG, ICON_PREFIX_PROP, ICON_WARN, ICON_WH_BOOK_CLOSED, ICON_WH_BOOK_OPEN, INFORMATION_MSG, IS_IN_FRONT_OFFICE, JALIOS_JUNIT_PROP, JCMS_CADDY, JCMS_MSG_LIST, JCMS_TOASTR_COLLECTION, JSYNC_DOWNLOAD_DIR, JSYNC_SYNC_ALARM, LANG_SPRITE, LOG_FILE, LOG_TOPIC_SECURITY, LOGGER_PROP, LOGGER_XMLPROP, MBR_PHOTO_DIR, MDATE_SEARCH, MONITOR_XML, OP_CREATE, OP_CREATE_STR, OP_DEEP_COPY, OP_DEEP_COPY_STR, OP_DEEP_DELETE, OP_DEEP_DELETE_STR, OP_DELETE, OP_DELETE_STR, OP_MERGE, OP_MERGE_STR, OP_UPDATE, OP_UPDATE_STR, ORGANIZATION_ROOT_GROUP_PROP, PDATE_SEARCH, PHOTO_DIR, PHOTO_ICON, PHOTO_ICON_HEIGHT, PHOTO_ICON_PROP_PREFIX, PHOTO_ICON_WIDTH, PHOTO_LARGE, PHOTO_LARGE_HEIGHT, PHOTO_LARGE_PROP_PREFIX, PHOTO_LARGE_WIDTH, PHOTO_MINI, PHOTO_MINI_HEIGHT, PHOTO_MINI_PROP_PREFIX, PHOTO_MINI_WIDTH, PHOTO_NORMAL, PHOTO_NORMAL_HEIGHT, PHOTO_NORMAL_PROP_PREFIX, PHOTO_NORMAL_WIDTH, PHOTO_SMALL, PHOTO_SMALL_HEIGHT, PHOTO_SMALL_PROP_PREFIX, PHOTO_SMALL_WIDTH, PHOTO_TINY, PHOTO_TINY_HEIGHT, PHOTO_TINY_PROP_PREFIX, PHOTO_TINY_WIDTH, PREVIOUS_TAB, PRINT_VIEW, PRIVATE_FILE_ACCESS, PUBLIC_FILE_ACCESS, RAW_CONTENT_ICON_PREFIX, READ_RIGHT_TAB, SDATE_SEARCH, SEARCHENGINE_ALARM, SECURITY_LOG_FILE, SESSION_AUTHORIZED_FILENAMES_SET, SPRITE_ICON_PREFIX, STATS_REPORT_DIR, STATUS_PROP, STORE_DIR, STORE_XML, SUCCESS_MSG, SVG_ICON_PREFIX, SVGINLINE_ICON_PREFIX, TEMPLATE_TAB, THUMBNAIL_LARGE_HEIGHT, THUMBNAIL_LARGE_WIDTH, THUMBNAIL_SMALL_HEIGHT, THUMBNAIL_SMALL_WIDTH, TTCARD_MEDIA_HEIGHT, TTCARD_MEDIA_WIDTH, TYPES_ICON_ALT_PROP, TYPES_ICON_SUFFIX_PROP, TYPES_ICON_TITLE_PROP, TYPES_PREFIX_PROP, TYPES_THUMB_SUFFIX_PROP, UDATE_SEARCH, UPDATE_RIGHT_TAB, UPLOAD_DIR, UPLOAD_PERMISSION_COUNT_PROP_PREFIX, UPLOAD_PERMISSION_SIZE_PROP_PREFIX, URL_REGEXP, VID_LOGGED_MEMBER, WARNING_MSG, WEBAPP_PROP, WFEXPRESS_ALARM, WFREMINDER_ALARM, WORKFLOW_TAB, WORKFLOW_XML
-
-
Constructor Summary
Constructors Modifier Constructor Description protected
LuceneDataSearchEngine(java.lang.String engineName, java.lang.String directoryName, boolean multilingual)
Construct a new Lucene Data Search Engine given a directory name.
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Deprecated Methods Modifier and Type Method Description protected org.apache.lucene.search.IndexSearcher
acquireSearcher(java.lang.String[] languages, java.lang.String defaultLanguage)
Acquire a Searcher to search in the specified languageprotected void
addData(Data data)
Add givenData
to this lucene search engine.protected void
addDataCollection(java.util.Collection<? extends Data> coll)
Add givenCollection
ofData
to this lucene search engine.protected void
clearIndices()
Delete allDocument
from all indices (overwrite existing index with a new one).protected void
clearSearcher()
Close current searchers and clear it for future renewal.void
createSnapshot(java.io.File targetDirectory)
Create snapshots of all index in this engine, inside the specified target directory.protected void
deleteData(Data data)
Delete givenData
from this lucene search engine.protected void
deleteDataCollection(java.util.Collection<? extends Data> coll)
Delete givenCollection
ofData
from this lucene search engine.protected DataIterator<Data>
getAllDataIterator()
Deprecated.org.apache.lucene.analysis.Analyzer
getAnalyzer(java.lang.String lang, boolean isIndexing)
Expert : Retrieve the lucene Analyzer to use during search and indexing.protected abstract DataIterator<Data>
getDataIterator(LuceneDataSearchEngine.ReindexOptions options)
This methods must be implemented by the LuceneSearchEngine.org.apache.lucene.store.FSDirectory
getDirectory(java.lang.String lang)
Expert: Returns the lucene directory used for the specified language.java.util.Date
getIndexingDate(Data data)
Retrieve the Date at which the specified Data was indexed in the main language of the site.java.util.Date
getIndexingDate(Data data, java.lang.String lang)
Returns the date at which the specified Data has been indexed for the specified language.LuceneDataSearchEngine.IndexingLatch
getIndexingLatch(Data data)
Retrieve a new IndexingLatch useful to be notified of the end of the next indexing operation to take place on the specified Data.org.apache.lucene.index.IndexWriter
getIndexWriter(java.lang.String lang)
Expert: Returns the lucene writer used for the specified language.java.util.Date
getLastOptimizeDateSinceRestart()
long
getLastOptimizeDuration()
java.util.Date
getLastReindexDateSinceRestart()
long
getLastReindexDuration()
protected abstract org.apache.log4j.Logger
getLogger()
This methods must be implemented by the LuceneSearchEngine.org.apache.lucene.document.Document
getLuceneDocument(Data data, java.lang.String lang)
Returns the lucene Document corresponding to the specified Data in the index of the the specified language.long
getOperationStartTime()
protected org.apache.lucene.index.Term
getPrimaryTerm(Data data)
Retrieve the a lucene Terme suitable for use as primary key when searching/removing/updating a unique lucene document for the specified dataint
getProgressState()
protected abstract AdminSearchEnginesHandler.Action
getReindexAllAction()
Retrieve the Action to use when starting aAdminSearchEngineProcess
for full reindexing.org.apache.lucene.search.SearcherManager
getSearcherManager(java.lang.String lang)
Expert: Returns the lucene SearcherManager used for the specified language.org.apache.lucene.search.similarities.Similarity
getSimilarity()
Expert : Returns the Similarity implementation to be used by Searcher of this LuceneDataSearchEngine.protected void
index(org.apache.lucene.index.IndexWriter writer, java.util.Collection<? extends Data> coll, java.lang.String lang)
Expert : Index aCollection
ofData
into lucene.protected void
index(org.apache.lucene.index.IndexWriter writer, java.util.Iterator<? extends Data> iterator, int iteratorSize, java.lang.String lang)
Expert : Index allData
returned by the specifiedIterator
into lucene.protected abstract void
indexData(org.apache.lucene.index.IndexWriter writer, Data data, java.lang.String lang)
This methods must be implemented by the LuceneSearchEngine.boolean
isOperationRunning()
void
optimizeIndices()
Optimize all incides of the LuceneSearchEngine.void
reindex(LuceneDataSearchEngine.ReindexOptions options)
Reindex all Data matching specified reindex option.void
reindexAll()
Clears the lucene indices of this searchengine, reindex all content retrieved using protected method getAllDataIterator().protected void
releaseSearcher(java.lang.String[] languages, java.lang.String defaultLanguage, org.apache.lucene.search.IndexSearcher searcher)
Release the specified searcher, which was created for specified language.protected void
remove(org.apache.lucene.index.IndexWriter writer, java.util.Collection<? extends Data> coll, java.lang.String lang)
Expert: Remove aCollection
ofData
from the lucene index.protected void
updateData(Data data)
Update givenData
in this lucene search engine.protected void
updateDataCollection(java.util.Collection<? extends Data> coll)
Update givenCollection
ofData
in this lucene search engine.
-
-
-
Field Detail
-
ID_FIELD
public static final java.lang.String ID_FIELD
- See Also:
- Constant Field Values
-
INDEXING_DATE_FIELD
public static final java.lang.String INDEXING_DATE_FIELD
- See Also:
- Constant Field Values
-
INDEXING_DATE_EXTRAINFO
public static final java.lang.String INDEXING_DATE_EXTRAINFO
- See Also:
- Constant Field Values
-
BACKGROUND_PROCESS_MGR
public static final BackgroundProcessManager BACKGROUND_PROCESS_MGR
-
channel
protected final Channel channel
-
alarmMgr
protected final AlarmManager alarmMgr
-
engineName
protected final java.lang.String engineName
-
directoryName
protected final java.lang.String directoryName
-
multilingual
protected final boolean multilingual
-
langList
protected final java.util.List<java.lang.String> langList
Languages in which the engine index and search its content.- all site languages for multilingual engine
- default site language for monolingual engine
-
langToIndexDirMap
protected final java.util.Map<java.lang.String,org.apache.lucene.store.FSDirectory> langToIndexDirMap
Lucene FSDirectory in which the engine index and search its content.- one Directory per site languages for multilingual engine
- only one Directory in the default site language, for monolingual engine
-
langToIndexWriterMap
protected final java.util.Map<java.lang.String,org.apache.lucene.index.IndexWriter> langToIndexWriterMap
Lucene IndexWriter reused for all write operation.
-
indexAccessLock
protected final java.lang.Object indexAccessLock
-
-
Constructor Detail
-
LuceneDataSearchEngine
protected LuceneDataSearchEngine(java.lang.String engineName, java.lang.String directoryName, boolean multilingual) throws java.lang.Exception
Construct a new Lucene Data Search Engine given a directory name.- Parameters:
engineName
- the name of the engine (eg "Publication", "Member", "Category")directoryName
- the name of the directory to create (eg Publicationmultilingual
- true to use one index per language, false to use only one index- Throws:
java.lang.Exception
- on any error
-
-
Method Detail
-
createSnapshot
public void createSnapshot(java.io.File targetDirectory) throws java.io.IOException
Create snapshots of all index in this engine, inside the specified target directory.- Parameters:
targetDirectory
- the directory in which to store the snapshot
Example :WEB-INF/data/lucene-snapshots/snapshot-2021-04-29-1640
- Throws:
java.io.IOException
- Since:
- jcms-10.0.5 / JCMS-8395
- See Also:
IndexSnapshotManager.createSnapshot()
-
index
protected void index(org.apache.lucene.index.IndexWriter writer, java.util.Collection<? extends Data> coll, java.lang.String lang) throws java.io.IOException
Expert : Index aCollection
ofData
into lucene.
This method is NOT synchronized, the caller is responsible to do it!- Parameters:
writer
- The Lucene directory writer with which data should be addedcoll
- a collection of Data, must not be nulllang
- the language in which data are being added- Throws:
java.io.IOException
- on io error
-
index
protected void index(org.apache.lucene.index.IndexWriter writer, java.util.Iterator<? extends Data> iterator, int iteratorSize, java.lang.String lang) throws java.io.IOException
Expert : Index allData
returned by the specifiedIterator
into lucene.
This method is NOT synchronized, the caller is responsible to do it!- Parameters:
writer
- The Lucene directory writer with which data should be addediterator
- a iterator of Data, must not be nulllang
- the language in which data are being added- Throws:
java.io.IOException
- on io error
-
remove
protected void remove(org.apache.lucene.index.IndexWriter writer, java.util.Collection<? extends Data> coll, java.lang.String lang) throws java.io.IOException
Expert: Remove aCollection
ofData
from the lucene index.
This method is NOT synchronized, the caller is responsible to do it!- Parameters:
writer
- The Lucene directory writer with which data should be removedcoll
- a collection of Data, must not be null- Throws:
java.io.IOException
- if the directory could not be opened or deletion could not be performed
-
getPrimaryTerm
protected org.apache.lucene.index.Term getPrimaryTerm(Data data)
Retrieve the a lucene Terme suitable for use as primary key when searching/removing/updating a unique lucene document for the specified data- Returns:
- a Term instance, must not return null
-
getDirectory
public org.apache.lucene.store.FSDirectory getDirectory(java.lang.String lang)
Expert: Returns the lucene directory used for the specified language.
Warning!!! you should not modify the index (LuceneDataSearchEngine rely on its own modification for optimization purpose), use this method only to access the directory in readonly !.- Parameters:
lang
- the language of JCMS (ISO-639) in which to retrieve the Directory- Returns:
- the
FSDirectory
of the specified language or null if no Directory is available for this language.
-
getIndexWriter
public org.apache.lucene.index.IndexWriter getIndexWriter(java.lang.String lang)
Expert: Returns the lucene writer used for the specified language.- Parameters:
lang
- the language of JCMS (ISO-639) in which to retrieve the IndexWriter- Returns:
- the
IndexWriter
of the specified language or null if no Directory is available for this language.
-
getSearcherManager
public org.apache.lucene.search.SearcherManager getSearcherManager(java.lang.String lang)
Expert: Returns the lucene SearcherManager used for the specified language.- Parameters:
lang
- the language of JCMS (ISO-639) in which to retrieve the IndexWriter- Returns:
- the
SearcherManager
of the specified language or null if no Directory is available for this language.
-
getAnalyzer
public org.apache.lucene.analysis.Analyzer getAnalyzer(java.lang.String lang, boolean isIndexing)
Expert : Retrieve the lucene Analyzer to use during search and indexing.- Parameters:
lang
- the ISO-639 language code of the text analyzed, may be nullisIndexing
- true if the returned analyzer is to be used for indexing, false in any other case (e.g. during search etc..)- Returns:
- an instance of Analyzer to use, never return null.
- Since:
- 9.0.3
-
getSimilarity
public org.apache.lucene.search.similarities.Similarity getSimilarity()
Expert : Returns the Similarity implementation to be used by Searcher of this LuceneDataSearchEngine.- Returns:
- the Similarity instance to use this search engine, never returns null.
-
getLuceneDocument
public org.apache.lucene.document.Document getLuceneDocument(Data data, java.lang.String lang)
Returns the lucene Document corresponding to the specified Data in the index of the the specified language.- Parameters:
data
- the Data being looked forlang
- the language in which to check- Returns:
- a lucene Document or null if could not be found
- Since:
- jcms-6.0.1
-
getIndexingDate
public java.util.Date getIndexingDate(Data data, java.lang.String lang)
Returns the date at which the specified Data has been indexed for the specified language.- Parameters:
data
- the Data being looked forlang
- the language in which to check- Returns:
- a Date or null if it could not be found
- Since:
- jcms-6.0.1
-
getIndexingDate
public java.util.Date getIndexingDate(Data data)
Retrieve the Date at which the specified Data was indexed in the main language of the site.- Parameters:
data
- theData
for which to retrieve the indexing date.- Returns:
- the indexing date of the Data or null if was not indexed.
- Since:
- jcms-6.0.1
-
addData
protected void addData(Data data)
Add givenData
to this lucene search engine. This method is asynchronous, the given data may not be (and will certainly not be) available immediately after call.
-
updateData
protected void updateData(Data data)
Update givenData
in this lucene search engine. This method is asynchronous, the given data may not be (and will certainly not be) available immediately after call.
-
deleteData
protected void deleteData(Data data)
Delete givenData
from this lucene search engine. This method is asynchronous, the given data may not be (and will certainly not be) available immediately after call.
-
addDataCollection
protected void addDataCollection(java.util.Collection<? extends Data> coll)
Add givenCollection
ofData
to this lucene search engine. This method is asynchronous, the given datas may not be (and will certainly not be) available immediately after call.
-
updateDataCollection
protected void updateDataCollection(java.util.Collection<? extends Data> coll)
Update givenCollection
ofData
in this lucene search engine. This method is asynchronous, the given datas may not be (and will certainly not be) available immediately after call.
-
deleteDataCollection
protected void deleteDataCollection(java.util.Collection<? extends Data> coll)
Delete givenCollection
ofData
from this lucene search engine. This method is asynchronous, the given datas may not be (and will certainly not be) available immediately after call.
-
clearIndices
protected void clearIndices()
Delete allDocument
from all indices (overwrite existing index with a new one). Warning: this operation is undoable! It is run against the indexing thread, it will not return as long as the indexing process is not done, and will block the indexing thread from running when doing its job.
-
optimizeIndices
public void optimizeIndices()
Optimize all incides of the LuceneSearchEngine. Warning: This is a potentially long and heavy process on large index, do not call without being sure of what you do. It is run against the indexing thread, it will not return as long as the indexing process is not done, and will block the indexing thread from running when doing its job.
-
getLastOptimizeDateSinceRestart
public java.util.Date getLastOptimizeDateSinceRestart()
- Returns:
- a date indicating the last time the optimize was done, or null if no optimization was done.
-
getLastOptimizeDuration
public long getLastOptimizeDuration()
- Returns:
- a duration in millisecond indicating the duration of the last optimize operation since restart (or 0 if none occured).
-
reindexAll
public void reindexAll() throws java.io.IOException
Clears the lucene indices of this searchengine, reindex all content retrieved using protected method getAllDataIterator(). It is run against the indexing thread, it will not return as long as the indexing process is not done, and will block the indexing thread from running when doing its job. You can access status regarding operation progress using :isOperationRunning()
andgetProgressState()
.- Throws:
java.io.IOException
- if an error occurs during indexing
-
getReindexAllAction
protected abstract AdminSearchEnginesHandler.Action getReindexAllAction()
Retrieve the Action to use when starting aAdminSearchEngineProcess
for full reindexing.- Returns:
- Since:
- 10.0.8 / JCMS-10687
-
reindex
public void reindex(LuceneDataSearchEngine.ReindexOptions options) throws java.io.IOException
Reindex all Data matching specified reindex option. It is run against the indexing thread, it will not return as long as the indexing process is not done, and will block the indexing thread from running when doing its job. You can access status regarding operation progress using :isOperationRunning()
andgetProgressState()
.- Parameters:
options
-- Throws:
java.io.IOException
- Since:
- jcms-10.0.5 / JCMS-8170
-
getLastReindexDateSinceRestart
public java.util.Date getLastReindexDateSinceRestart()
- Returns:
- a date indicating the last time the reindex was done, or null if no reindex was done.
-
getLastReindexDuration
public long getLastReindexDuration()
- Returns:
- a duration in millisecond indicating the duration of the last reindex operation since restart (or 0 if none occured).
-
acquireSearcher
protected org.apache.lucene.search.IndexSearcher acquireSearcher(java.lang.String[] languages, java.lang.String defaultLanguage) throws java.io.IOException
Acquire a Searcher to search in the specified language- Parameters:
languages
- the language in which search is requesteddefaultLanguage
- language used if no languages were explicitely specified and if current language is not available either. (ISO-639 language code)- Returns:
- a IndexSearcher instance
- Throws:
java.io.IOException
-
releaseSearcher
protected void releaseSearcher(java.lang.String[] languages, java.lang.String defaultLanguage, org.apache.lucene.search.IndexSearcher searcher)
Release the specified searcher, which was created for specified language.- Parameters:
languages
- the language in which search was requesteddefaultLanguage
- language used if no languages were explicitely specified and if current language is not available either. (ISO-639 language code)searcher
- the searcher that was acquired throughacquireSearcher(String[], String)
-
clearSearcher
protected void clearSearcher()
Close current searchers and clear it for future renewal. Called after index change.
-
getIndexingLatch
public LuceneDataSearchEngine.IndexingLatch getIndexingLatch(Data data)
Retrieve a new IndexingLatch useful to be notified of the end of the next indexing operation to take place on the specified Data.Data original = ... Data update = origina.getUpdateInstance(); // update.set(...) IndexingLatch latch = searchEngine.getIndexingLatch(original); update.performUpdate()...; latch.await();
- Parameters:
data
- the Data that must be monitored for indexing- Returns:
- an IndexingLatch instance, or null if specified Data was null
- Since:
- jcms-8.0.2, jcms-9, JCMS-3805
-
isOperationRunning
public boolean isOperationRunning()
- Returns:
- true if an operation of which its progess is being watched (reindexing, optimizing)
- See Also:
getProgressState()
-
getProgressState
public int getProgressState()
- Returns:
- a percentage showing current state of operation, or 100 if no operation is running
- See Also:
isOperationRunning()
-
getOperationStartTime
public long getOperationStartTime()
- Returns:
- the time at which the current operation was started, or 0 if no operation is running
- See Also:
isOperationRunning()
-
getLogger
protected abstract org.apache.log4j.Logger getLogger()
This methods must be implemented by the LuceneSearchEngine. It must return the logger to be used for log messages.- Returns:
Logger
of this engine.
-
getAllDataIterator
protected DataIterator<Data> getAllDataIterator()
Deprecated.This methods must be implemented by the LuceneSearchEngine. It must return a DataIterator used to iterate on all Data to index. Used byreindexAll()
.
-
getDataIterator
protected abstract DataIterator<Data> getDataIterator(LuceneDataSearchEngine.ReindexOptions options)
This methods must be implemented by the LuceneSearchEngine. It must return a DataIterator used to iterate on Data to index. Used byreindex(ReindexOptions)
.- Since:
- jcms-10.0.5 / JCMS-8170
-
indexData
protected abstract void indexData(org.apache.lucene.index.IndexWriter writer, Data data, java.lang.String lang) throws java.io.IOException
This methods must be implemented by the LuceneSearchEngine. It must index the given data in the given language, into the given index writer.- Throws:
java.io.IOException
-
-