Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
87 changes: 87 additions & 0 deletions java/src/main/java/org/lance/index/scalar/BTreeIndexParams.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
/*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.lance.index.scalar;

import java.util.LinkedHashMap;
import java.util.Map;

/** Builder-style configuration for B-Tree scalar index parameters. */
public final class BTreeIndexParams {

private static final String INDEX_TYPE = "btree";

private BTreeIndexParams() {}

/**
* Create a new builder for B-Tree index parameters.
*
* @return a new {@link Builder}
*/
public static Builder builder() {
return new Builder();
}

public static final class Builder {
private Long zoneSize;
private Integer rangeId;

/**
* Configure the number of rows per zone.
*
* @param zoneSize number of rows per zone, must be positive
* @return this builder
* @throws IllegalArgumentException
*/
public Builder zoneSize(long zoneSize) {
if (zoneSize <= 0) {
throw new IllegalArgumentException("zoneSize must be positive");
}
this.zoneSize = zoneSize;
return this;
}

/**
* Configure the ordinal ID of a data partition for building a large, distributed BTree index.
*
* @param rangeId non-negative range identifier
* @return this builder
* @throws IllegalArgumentException
*/
public Builder rangeId(int rangeId) {
if (rangeId < 0) {
throw new IllegalArgumentException("rangeId must be non-negative");
}
this.rangeId = rangeId;
return this;
}

/** Build a {@link ScalarIndexParams} instance for a B-Tree index. */
public ScalarIndexParams build() {
Map<String, Object> params = new LinkedHashMap<>();
if (zoneSize != null) {
params.put("zone_size", zoneSize);
}
if (rangeId != null) {
params.put("range_id", rangeId);
}

if (params.isEmpty()) {
return ScalarIndexParams.create(INDEX_TYPE);
}

String json = JsonUtils.toJson(params);
return ScalarIndexParams.create(INDEX_TYPE, json);
}
}
}
33 changes: 33 additions & 0 deletions java/src/main/java/org/lance/index/scalar/BitmapIndexParams.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
/*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.lance.index.scalar;

/** Builder-style configuration for Bitmap scalar index parameters. */
public final class BitmapIndexParams {
private static final String INDEX_TYPE = "bitmap";

private BitmapIndexParams() {}

/** Create a new builder for Bitmap index parameters. */
public static Builder builder() {
return new Builder();
}

public static final class Builder {
/** Build a {@link ScalarIndexParams} instance for a Bitmap index. */
public ScalarIndexParams build() {
return ScalarIndexParams.create(INDEX_TYPE);
}
}
}
Loading
Loading