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).