This guide is for developers interested in contributing to vitrivr's retrieval engine Cineast.
-
Have a JDK (Java 1.8 or above) ready. We recommend OpenJDK 11.
-
Quick Setup of Cineast:
-
Clone cineast, checkout the
multi-module
branch and update the submodules
$> git clone https://github.com/vitrivr/cineast.git && cd cineast \
&& git checkout multi-module && git submodule update --init --recursive
- Build the executable JARS
$> ./gradlew clean generateProto fatJar
-
Quick Setup of CottontailDB - vitrivr's storage layer
-
Clone cottontaildb and
$> git clone https://github.com/ppanopticon/cottontaildb.git && cd cottontaildb \
&& git submodule update --init --recursive
- Build cottontaildb and generate the distribution
$> ./gradlew clean generateProto distZip
- Extract the distribution
$> unzip build/distribution/cottontaildb-1.0-SNAPSHOT.zip && \
mv cottontaildb-1.0-SNAPSHOT/* . && rm -r cottontaildb-1.0-SNAPSHOT
- Start cottontaildb
$> ./bin/cottontaildb config.json
Windows users beware! Adopt the configuration for windows beforehand by
changing the forceUnmapMappedFiles
property to true
.
- Cineast is written in Java and hence, a JDK of at least version 8 is required. We recommend the OpenJDK 11.
- Have an IDE. We recommend using the amazing IntelliJ IDEA.
- Git
- Clone cineast and navigate to its location:
$> git clone https://github.com/vitrivr/cineast.git && cd cineast
- Switch to the
multi-module
branch:
$> git checkout multi-module
- Initialise and update the submodules for the storage components:
$> git submodule update --init --recursive
- Open
build.gradle
with your IDE. This requires the IDE supports [Gradle]. - Generate the protobuf bindings using Gradle:
$> ./gradlew clean generateProto
- Build Cineast using Gradle:
$> ./gradlew clean fatJar
This will create two JARS:
cineast-api/build/libs/cineast-api-X-full.jar
- the JAR for the REST / Websocket APIcineast-runtime/build/libs/cineast-runtime-X-full.jar
- the JAR for the CLI (including the REST / Websocket API)
- You also need a storage layer for the usage of cineast. We recommend to use cottontaildb. Grab cottontaildb from github and set up its submodules. We assume you still are in cineast's folder hence, move one level up:
$> cd ..
$> git clone https://github.com/ppanopticon/cottontaildb.git && git submodule update --init --recursive
- Build the database Server using Gradle
$> ./gradlew clean generateProto distZip
It is sufficient to unzip the generated distribution and locate it in the current directory:
$> unzip build/distribution/cottontaildb-1.0-SNAPSHOT.zip && mv cottontaildb-1.0-SNAPSHOT/* . && rm -r cottontaildb-1.0-SNAPSHOT
This way, you are ready to use that freshly built cottontaildb instance. 9. Now you should have set up everything. Be sure to follow the next steps to verify your setup is compete.
- Follow the steps above for setting up vitrivr (i.e. cineast and cottontaildb)
- Start a cottontaildb server. For this, you have to navigate to your cottontaildb folder
$> ./bin/cottontaildb config.json
Only for Windows users: Edit the config.json
file by setting the forceUnmapMappedFiles
field to true
and use the Windows dist: bin/cottontaildb.bat
3. Navigate back to cineast and prepare the storage
$> java -jar cineast-runtime/build/libs/cineast-runtime-2.5-full.jar cineast.json setup
- Now you are ready to extract a collection using a jobfile.
- Cover
cineast.json
- Cover
job.json
- Prepare small collection for extraction -- lsc jobfile?
setup
command only creates the tables which are present in the cineast.json config. This relates to vitrivr/cineast#79, which would solve this issue.development
andusage
. For users, we could think about having docker-containers with pre-built data examples (e.g. a subset of V3C1) or just distribute cottontail data-folders.