Lucenia XTree is a native C++ dimensional index library used as part of the Lucenia stack. It supports advanced numeric, spatial, and vector indexing and search performance with versioned shared library builds. It provides consistent and predictive logarithmic performance over BKD with memory safety guarantees; far outperforming current lucene numeric indexing.
The build system supports three types of builds: dirty builds (default), snapshot builds, and release builds.
When you build without any flags and your Git working directory is not clean or not tagged, the version will include a short Git SHA:
./gradlew build
Output Example:
libXTree-Linux-amd64-64-0.5.0-g17eb7b4.so
This is the default for ongoing development.
To build a pre-release snapshot version, pass the -PversionSuffixOverride
property:
./gradlew build -PversionSuffixOverride=-SNAPSHOT
Output Example:
libXTree-Linux-amd64-64-0.5.0-SNAPSHOT.so
Use this for CI and integration testing prior to release.
To produce a clean release artifact (no Git SHA, no SNAPSHOT suffix):
- Make sure your Git repo is clean.
- Tag the current commit with a version tag:
git tag v0.5.0
git push --tags
- Then run:
./gradlew build
Output Example:
libXTree-Linux-amd64-64-0.5.0.so
To clean native output directories:
./gradlew clean
This removes the build/native/
directory.
The canonical version of XTree is defined in:
buildSrc/version.properties
This file must include:
lucenia = 0.5.0
That value drives all version resolution (alongside Git).
Development Requirements
To build the Lucenia XTree native extension, ensure the following are installed:
- C++17 compatible compiler (e.g.,
g++
≥ 7) - CMake ≥ 3.14
- Boost libraries:
libboost-system
libboost-filesystem
libboost-thread
libboost-iostreams
- JNI headers (typically provided by the JDK)
For Ubuntu/Debian-based systems:
sudo apt install build-essential cmake libboost-all-dev default-jdk
For more information on Lucenia, visit https://lucenia.io.