2021-02-03 20:13:17 +01:00
|
|
|
package it.cavallium.dbengine.client;
|
|
|
|
|
2021-03-02 01:53:36 +01:00
|
|
|
import it.cavallium.dbengine.client.query.ClientQueryParams;
|
|
|
|
import it.cavallium.dbengine.client.query.current.data.Query;
|
2021-08-04 01:12:39 +02:00
|
|
|
import it.cavallium.dbengine.client.query.current.data.TotalHitsCount;
|
2021-06-07 16:21:12 +02:00
|
|
|
import it.cavallium.dbengine.database.Delta;
|
2021-02-03 20:13:17 +01:00
|
|
|
import it.cavallium.dbengine.database.LLSnapshottable;
|
2021-11-19 19:03:31 +01:00
|
|
|
import it.cavallium.dbengine.lucene.collector.Buckets;
|
2021-11-18 17:13:53 +01:00
|
|
|
import it.cavallium.dbengine.lucene.searcher.BucketParams;
|
2021-11-19 19:03:31 +01:00
|
|
|
import java.util.List;
|
2021-02-03 20:13:17 +01:00
|
|
|
import java.util.Map.Entry;
|
2023-02-09 23:34:25 +01:00
|
|
|
import java.util.stream.Stream;
|
2021-06-07 16:21:12 +02:00
|
|
|
import org.jetbrains.annotations.NotNull;
|
2021-02-03 20:13:17 +01:00
|
|
|
import org.jetbrains.annotations.Nullable;
|
|
|
|
|
2023-02-22 23:31:05 +01:00
|
|
|
public interface LuceneIndex<T, U> extends LLSnapshottable, AutoCloseable {
|
2021-02-03 20:13:17 +01:00
|
|
|
|
2023-02-09 23:34:25 +01:00
|
|
|
void addDocument(T key, U value);
|
2021-02-03 20:13:17 +01:00
|
|
|
|
2023-02-09 23:34:25 +01:00
|
|
|
long addDocuments(boolean atomic, Stream<Entry<T, U>> entries);
|
2021-02-03 20:13:17 +01:00
|
|
|
|
2023-02-09 23:34:25 +01:00
|
|
|
void deleteDocument(T key);
|
2021-02-03 20:13:17 +01:00
|
|
|
|
2023-02-09 23:34:25 +01:00
|
|
|
void updateDocument(T key, @NotNull U value);
|
2021-02-03 20:13:17 +01:00
|
|
|
|
2023-02-09 23:34:25 +01:00
|
|
|
long updateDocuments(Stream<Entry<T, U>> entries);
|
2021-02-03 20:13:17 +01:00
|
|
|
|
2023-02-09 23:34:25 +01:00
|
|
|
default void updateOrDeleteDocument(T key, @Nullable U value) {
|
2021-06-07 16:21:12 +02:00
|
|
|
if (value == null) {
|
2023-02-09 23:34:25 +01:00
|
|
|
deleteDocument(key);
|
2021-06-07 16:21:12 +02:00
|
|
|
} else {
|
2023-02-09 23:34:25 +01:00
|
|
|
updateDocument(key, value);
|
2021-06-07 16:21:12 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2023-02-09 23:34:25 +01:00
|
|
|
default void updateOrDeleteDocumentIfModified(T key, @NotNull Delta<U> delta) {
|
|
|
|
updateOrDeleteDocumentIfModified(key, delta.current(), delta.isModified());
|
2021-07-17 11:52:08 +02:00
|
|
|
}
|
|
|
|
|
2023-02-09 23:34:25 +01:00
|
|
|
default void updateOrDeleteDocumentIfModified(T key, @Nullable U currentValue, boolean modified) {
|
2021-07-17 11:52:08 +02:00
|
|
|
if (modified) {
|
2023-02-09 23:34:25 +01:00
|
|
|
updateOrDeleteDocument(key, currentValue);
|
2021-06-07 16:21:12 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2023-02-09 23:34:25 +01:00
|
|
|
void deleteAll();
|
2021-02-03 20:13:17 +01:00
|
|
|
|
2023-02-09 23:34:25 +01:00
|
|
|
Hits<HitKey<T>> moreLikeThis(ClientQueryParams queryParams, T key,
|
2021-10-28 23:48:25 +02:00
|
|
|
U mltDocumentValue);
|
2021-07-17 11:52:08 +02:00
|
|
|
|
2023-02-09 23:34:25 +01:00
|
|
|
Hits<HitKey<T>> search(ClientQueryParams queryParams);
|
2021-02-03 20:13:17 +01:00
|
|
|
|
2023-02-09 23:34:25 +01:00
|
|
|
Buckets computeBuckets(@Nullable CompositeSnapshot snapshot,
|
2021-11-19 19:03:31 +01:00
|
|
|
@NotNull List<Query> queries,
|
2022-01-17 18:12:12 +01:00
|
|
|
@Nullable Query normalizationQuery,
|
2021-11-19 19:03:31 +01:00
|
|
|
BucketParams bucketParams);
|
2021-11-18 17:13:53 +01:00
|
|
|
|
2023-02-09 23:34:25 +01:00
|
|
|
TotalHitsCount count(@Nullable CompositeSnapshot snapshot, Query query);
|
2021-02-03 20:13:17 +01:00
|
|
|
|
2021-04-03 19:09:06 +02:00
|
|
|
boolean isLowMemoryMode();
|
2021-02-03 20:13:17 +01:00
|
|
|
|
2022-06-30 13:54:55 +02:00
|
|
|
void close();
|
2021-02-03 20:13:17 +01:00
|
|
|
|
2023-02-09 23:34:25 +01:00
|
|
|
void flush();
|
2021-02-03 20:13:17 +01:00
|
|
|
|
2023-02-09 23:34:25 +01:00
|
|
|
void waitForMerges();
|
2022-06-21 14:35:07 +02:00
|
|
|
|
2023-02-09 23:34:25 +01:00
|
|
|
void waitForLastMerges();
|
2022-06-21 14:35:07 +02:00
|
|
|
|
2023-02-09 23:34:25 +01:00
|
|
|
void refresh(boolean force);
|
2021-02-03 20:13:17 +01:00
|
|
|
}
|