Package com.jalios.jcms.search
Class LuceneCategorySearchEngine
- java.lang.Object
-
- com.jalios.jcms.search.LuceneDataSearchEngine
-
- com.jalios.jcms.search.LuceneCategorySearchEngine
-
- All Implemented Interfaces:
JcmsConstants
,CategorySearchEngine
,JaliosConstants
public class LuceneCategorySearchEngine extends LuceneDataSearchEngine implements CategorySearchEngine, JcmsConstants
ThisCategorySearchEngine
is reponsible for the indexing and searching of JCMS content using lucene.
Architecture and notable points:- 1 lucene index per language:
WEB-INF/data/lucene/CategoriesIndices/<lang>/
. - 1
Document
per indexedCategory
. - Indices' optimization occurs using schedule specified by property
"search-engine.optimize-schedule"
(jdring's AlarmEntry cron-like format)
Possible Hooks/Modification:- Specify analyzer for each language:
Analyzer getAnalyzer(String lang);
- Since:
- jcms-5.5.0
- Version:
- $Revision: 129677 $
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class com.jalios.jcms.search.LuceneDataSearchEngine
LuceneDataSearchEngine.IndexingLatch, LuceneDataSearchEngine.ReindexOptions
-
-
Field Summary
Fields Modifier and Type Field Description static java.lang.String
ALLFIELDS_FIELD
protected static java.lang.String
CATEGORY_ENGINE_NAME
protected static java.lang.String
CATEGORY_INDEX_DIRECTORY
static java.lang.String
DESCRIPTION_FIELD
static java.lang.String
MATCHED_CATEGORIES_ATTRIBUTE
This variable is the attribute's key used by the LuceneCategorySearchEngine to set the matched categories HashSet in the QueryResultSet Attribute.static java.lang.String
NAME_FIELD
static java.lang.String
REVISION
LuceneCategorySearchEngineScoring
scoring
static java.lang.String
SYNONYMS_FIELD
-
Fields inherited from class com.jalios.jcms.search.LuceneDataSearchEngine
alarmMgr, channel, directoryName, engineName, ID_FIELD, indexAccessLock, INDEXING_DATE_EXTRAINFO, INDEXING_DATE_FIELD, langList, langToIndexDirMap, langToIndexWriterMap, 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, 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_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_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 Constructor Description LuceneCategorySearchEngine()
Initialize the Lucene Search Engine
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description void
add(Category cat)
Add givenCategory
to this lucene search engine.void
add(java.util.Collection<Category> coll)
Add givenCollection
ofCategory
to this lucene search engine.protected void
addKeywordField(org.apache.lucene.document.Document doc, Category cat, java.lang.String lang, java.lang.String fieldName, java.lang.String fieldValue, boolean applyBoost)
This methods create a unstored LuceneField
with the given field's value of the givenCategory
in the given language, and add into the givenDocument
.protected void
addUnStoredField(org.apache.lucene.document.Document doc, Category cat, java.lang.String lang, java.lang.String fieldName, java.lang.String fieldValue, boolean applyBoost)
This methods create a unstored LuceneField
with the given field's value of the givenCategory
in the given language, and add into the givenDocument
.void
delete(Category cat)
Delete givenCategory
from this lucene search engine.void
delete(java.util.Collection<Category> coll)
Delete givenCollection
ofCategory
from this lucene search engine.protected DataIterator<Data>
getDataIterator(LuceneDataSearchEngine.ReindexOptions options)
This methods must be implemented by the LuceneSearchEngine.java.util.Date
getIndexingDate(Category cat)
Retrieve the Date at which the specified Category was indexed in the search engine.protected org.apache.log4j.Logger
getLogger()
This methods must be implemented by the LuceneSearchEngine.static int
getMaximumResults()
Retrieve the maximum number of results allowed to be return for a search.protected void
indexData(org.apache.lucene.index.IndexWriter writer, Data data, java.lang.String lang)
This methods index the given Category in the given language, into the given index writer.boolean
search(QueryHandler qh, java.util.HashSet<? extends Publication> pubSet, QueryResultSet resultSet)
Perform a full-text search.java.util.Collection<Category>
searchCategories(QueryHandler qh)
Find Category matching the specified QueryHandler search options (uses mainly the text search param)java.util.Collection<Category>
searchCategories(org.apache.lucene.search.Query query)
Find Category matching the specified lucene Queryvoid
update(Category cat)
Update givenCategory
in this lucene search engine.void
update(java.util.Collection<Category> coll)
Update givenCollection
ofCategory
in this lucene search engine.-
Methods inherited from class com.jalios.jcms.search.LuceneDataSearchEngine
acquireSearcher, addData, addDataCollection, clearIndices, clearSearcher, createSnapshot, deleteData, deleteDataCollection, getAllDataIterator, getAnalyzer, getDirectory, getIndexingDate, getIndexingDate, getIndexingLatch, getIndexWriter, getLastOptimizeDateSinceRestart, getLastOptimizeDuration, getLastReindexDateSinceRestart, getLastReindexDuration, getLuceneDocument, getOperationStartTime, getPrimaryTerm, getProgressState, getSearcherManager, getSimilarity, index, index, isOperationRunning, optimizeIndices, reindex, reindexAll, releaseSearcher, remove, updateData, updateDataCollection
-
-
-
-
Field Detail
-
REVISION
public static final java.lang.String REVISION
- See Also:
- Constant Field Values
-
MATCHED_CATEGORIES_ATTRIBUTE
public static final java.lang.String MATCHED_CATEGORIES_ATTRIBUTE
This variable is the attribute's key used by the LuceneCategorySearchEngine to set the matched categories HashSet in the QueryResultSet Attribute.- See Also:
- Constant Field Values
-
CATEGORY_ENGINE_NAME
protected static final java.lang.String CATEGORY_ENGINE_NAME
- See Also:
- Constant Field Values
-
CATEGORY_INDEX_DIRECTORY
protected static final java.lang.String CATEGORY_INDEX_DIRECTORY
- See Also:
- Constant Field Values
-
NAME_FIELD
public static final java.lang.String NAME_FIELD
- See Also:
- Constant Field Values
-
SYNONYMS_FIELD
public static final java.lang.String SYNONYMS_FIELD
- See Also:
- Constant Field Values
-
DESCRIPTION_FIELD
public static final java.lang.String DESCRIPTION_FIELD
- See Also:
- Constant Field Values
-
ALLFIELDS_FIELD
public static final java.lang.String ALLFIELDS_FIELD
- See Also:
- Constant Field Values
-
scoring
public final LuceneCategorySearchEngineScoring scoring
-
-
Method Detail
-
add
public void add(Category cat)
Add givenCategory
to this lucene search engine.- Specified by:
add
in interfaceCategorySearchEngine
- Parameters:
cat
- theCategory
to index .
-
update
public void update(Category cat)
Update givenCategory
in this lucene search engine.- Specified by:
update
in interfaceCategorySearchEngine
- Parameters:
cat
- theCategory
to reindex .
-
delete
public void delete(Category cat)
Delete givenCategory
from this lucene search engine.- Specified by:
delete
in interfaceCategorySearchEngine
- Parameters:
cat
- theCategory
to reindex .
-
add
public void add(java.util.Collection<Category> coll)
Add givenCollection
ofCategory
to this lucene search engine.- Specified by:
add
in interfaceCategorySearchEngine
- Parameters:
coll
- theCollection
ofCategory
to index .
-
update
public void update(java.util.Collection<Category> coll)
Update givenCollection
ofCategory
in this lucene search engine.- Specified by:
update
in interfaceCategorySearchEngine
- Parameters:
coll
- theCollection
ofCategory
to reindex .
-
delete
public void delete(java.util.Collection<Category> coll)
Delete givenCollection
ofCategory
from this lucene search engine.- Specified by:
delete
in interfaceCategorySearchEngine
- Parameters:
coll
- theCollection
ofCategory
to reindex .
-
getIndexingDate
public java.util.Date getIndexingDate(Category cat)
Retrieve the Date at which the specified Category was indexed in the search engine.- Specified by:
getIndexingDate
in interfaceCategorySearchEngine
- Parameters:
cat
- theCategory
for which to retrieve the indexing date.- Returns:
- the indexing date of the category or null if was not indexed.
- Since:
- jcms-6.0.1
-
search
public boolean search(QueryHandler qh, java.util.HashSet<? extends Publication> pubSet, QueryResultSet resultSet)
Description copied from interface:CategorySearchEngine
Perform a full-text search.- Specified by:
search
in interfaceCategorySearchEngine
- Parameters:
qh
- the Queryhandler in which to find search text and search options.pubSet
- a HashSet containing all thePublication
to search.
if empty, search is not performed at all.
if null, allPublication
found will be returned.
This set MUST NOT be modified by implementation.resultSet
- theQueryResultSet
that must be filled with matchingPublication
- Returns:
- true if a search was performed in the CategorySearchEngine. Useful to differenciate a query returning zero result from a query not performed due to missing paramerters (text for example).
-
getMaximumResults
public static int getMaximumResults()
Retrieve the maximum number of results allowed to be return for a search.Can be configured using property
query.lucene.cat.max-results
- Returns:
- a maximum number of result retrieve (result beyong this limit are ignored)
- Since:
- jcms-10.0.0
-
searchCategories
public java.util.Collection<Category> searchCategories(QueryHandler qh)
Find Category matching the specified QueryHandler search options (uses mainly the text search param)- Parameters:
qh
- the QueryHandler used to store- Returns:
- a collection of Category, ordered by relevance
- Since:
- jcms-7.1
-
searchCategories
public java.util.Collection<Category> searchCategories(org.apache.lucene.search.Query query)
Find Category matching the specified lucene Query- Parameters:
query
- a Lucene Query- Returns:
- a collection of Category, ordered by relevance
- Since:
- jcms-7.1
-
getLogger
protected org.apache.log4j.Logger getLogger()
Description copied from class:LuceneDataSearchEngine
This methods must be implemented by the LuceneSearchEngine. It must return the logger to be used for log messages.- Specified by:
getLogger
in classLuceneDataSearchEngine
- Returns:
Logger
of this engine.
-
getDataIterator
protected DataIterator<Data> getDataIterator(LuceneDataSearchEngine.ReindexOptions options)
Description copied from class:LuceneDataSearchEngine
This methods must be implemented by the LuceneSearchEngine. It must return a DataIterator used to iterate on Data to index. Used byLuceneDataSearchEngine.reindex(ReindexOptions)
.- Specified by:
getDataIterator
in classLuceneDataSearchEngine
-
indexData
protected void indexData(org.apache.lucene.index.IndexWriter writer, Data data, java.lang.String lang) throws java.io.IOException
This methods index the given Category in the given language, into the given index writer.- Specified by:
indexData
in classLuceneDataSearchEngine
- Throws:
java.io.IOException
-
addUnStoredField
protected void addUnStoredField(org.apache.lucene.document.Document doc, Category cat, java.lang.String lang, java.lang.String fieldName, java.lang.String fieldValue, boolean applyBoost)
This methods create a unstored LuceneField
with the given field's value of the givenCategory
in the given language, and add into the givenDocument
.- Parameters:
doc
- the Lucene documentcat
- the categorylang
- the languagefieldName
- the field's namefieldValue
- the field's valueapplyBoost
- whether to apply the boost, useful for appendable field in which case the boost should only be applied for the first element.
-
addKeywordField
protected void addKeywordField(org.apache.lucene.document.Document doc, Category cat, java.lang.String lang, java.lang.String fieldName, java.lang.String fieldValue, boolean applyBoost)
This methods create a unstored LuceneField
with the given field's value of the givenCategory
in the given language, and add into the givenDocument
.- Parameters:
doc
- the Lucene documentcat
- the categorylang
- the languagefieldName
- the field's namefieldValue
- the field's valueapplyBoost
- whether to apply the boost, useful for appendable field in which case the boost should only be applied for the first element.
-
-