Overview description of full text search package.

Use Cases

Use Case Build Full Index
Description Build new full search index of all searchable OLAT resources.
Trigger At startup if no index exist.
OLAT Administrator can trigger a build through admin gui.
Input Configuration :
Build Index-Directory
Index-Directory
Output Lucene Index-Dir with new index
Sequence Loop over all searchable OLAT resources Create for each OLAT resource a Lucene Document with OLAT attributes Final : copy new index files to index-directory
Notes Performance : Can the index build with 100% CPU or shoud it run in backround with low CPU load ?

Use Case Search
Description Search with query in all indexed OLAT resources.
Trigger OLAT User press search button
Input Query (Query fields : lastChange, title, description, document-type, author,content)
Output List with search result. Show for each result in text-block :
- Title
- Description
- Author
- Type [Forum, Forum-Message, Visitcard etc]
- Link to OLAT resource
Sequence 1. Search for resources match with query
2. loop over result to check visibility (access) for the user
3. return list with all allowed resources
Notes Ev. Gefundener Text highliten

Use Case Open OLAT resource
Description After a search, user can open the OLAT resource for a item in result list.
Trigger OLAT User press more link in result list
Input Link Parameter Resource-URL
Output OLAT Resource will be open
Sequence 1. Security check if resource can be open.
2. Open resource in new tab.
Notes -

Use Case Update OLAT Resource / Upate index
Description The index date will be updated because a OLAT user changed something.
Trigger A OLAT user updated a searchable resource.
Input documentId of the changed document.
New documents has no documentId.
Output Index will be updated in backgroud.
Sequence The index will not be updated immediately, update goes into q asynchron queue.
Notes -

Search Component Overview Diagram

The search-service has four main components :
Full-Indexer Component
The full-indexer generates a new index. The full-indexer runs in seperate thread. It can be startet scheduled via config or manually via Admin. see : {@link org.olat.search.service.indexer}
Index Component
Controls the live index file. Copy new index file from full-indexer.
Search Component
Handles all search queries.
Updater Component
Update current live index. The updater runs in a own thread scheduled in the config.

The Apache-Lucene is used as full text search engine library . The index data will be stored in a file on the filesystem.


Class Diagram

JumpIn Handling

Each search-result has a link to the resource in OLAT. The user can jump from the search-result-entry to the correspending resource in OLAT. The indexer stores for each indexed element a resource-URL e.g. '[BusinessGroup:435678][Forum:456789]'. In this example the BusinessGroup with ID '435678' will be open and afterwards the Forum with ID '456789' will be open (in context of BusinessGroup 435678).