diff --git a/src/main/java/it/cavallium/dbengine/database/LLItem.java b/src/main/java/it/cavallium/dbengine/database/LLItem.java index ae57de0..45988fa 100644 --- a/src/main/java/it/cavallium/dbengine/database/LLItem.java +++ b/src/main/java/it/cavallium/dbengine/database/LLItem.java @@ -81,6 +81,10 @@ public class LLItem { return new LLItem(LLType.SortedNumericDocValuesField, name, data); } + public static LLItem newNumericDocValuesField(String name, long data) { + return new LLItem(LLType.NumericDocValuesField, name, data); + } + public String getName() { return name; } diff --git a/src/main/java/it/cavallium/dbengine/database/LLType.java b/src/main/java/it/cavallium/dbengine/database/LLType.java index 2e174b1..54a1b3a 100644 --- a/src/main/java/it/cavallium/dbengine/database/LLType.java +++ b/src/main/java/it/cavallium/dbengine/database/LLType.java @@ -1,5 +1,8 @@ package it.cavallium.dbengine.database; +/** + * https://lucene.apache.org/core/8_0_0/core/org/apache/lucene/document/Field.html + */ public enum LLType { StringField, StringFieldStored, @@ -7,6 +10,7 @@ public enum LLType { LongPoint, LongStoredField, FloatPoint, + NumericDocValuesField, SortedNumericDocValuesField, TextField, TextFieldStored diff --git a/src/main/java/it/cavallium/dbengine/database/LLUtils.java b/src/main/java/it/cavallium/dbengine/database/LLUtils.java index 9bab5cf..9140397 100644 --- a/src/main/java/it/cavallium/dbengine/database/LLUtils.java +++ b/src/main/java/it/cavallium/dbengine/database/LLUtils.java @@ -34,6 +34,7 @@ import org.apache.lucene.document.Field; import org.apache.lucene.document.FloatPoint; import org.apache.lucene.document.IntPoint; import org.apache.lucene.document.LongPoint; +import org.apache.lucene.document.NumericDocValuesField; import org.apache.lucene.document.SortedNumericDocValuesField; import org.apache.lucene.document.StoredField; import org.apache.lucene.document.StringField; @@ -179,9 +180,9 @@ public class LLUtils { case FloatPoint -> new FloatPoint(item.getName(), ByteBuffer.wrap(item.getData()).getFloat()); case TextField -> new TextField(item.getName(), item.stringValue(), Field.Store.NO); case TextFieldStored -> new TextField(item.getName(), item.stringValue(), Field.Store.YES); - case SortedNumericDocValuesField -> new SortedNumericDocValuesField(item.getName(), - Longs.fromByteArray(item.getData()) - ); + case SortedNumericDocValuesField -> + new SortedNumericDocValuesField(item.getName(), Longs.fromByteArray(item.getData())); + case NumericDocValuesField -> new NumericDocValuesField(item.getName(), Longs.fromByteArray(item.getData())); case StringField -> new StringField(item.getName(), item.stringValue(), Field.Store.NO); case StringFieldStored -> new StringField(item.getName(), item.stringValue(), Field.Store.YES); }; @@ -491,7 +492,7 @@ public class LLUtils { * cleanup resource * @param cleanupOnSuccess if true the resource will be cleaned up if the function is successful */ - public static , V extends T> Mono usingResource(Mono resourceSupplier, + public static , V extends T> Mono usingResource(Mono resourceSupplier, Function> resourceClosure, boolean cleanupOnSuccess) { return Mono.usingWhen(resourceSupplier, resourceClosure, r -> { diff --git a/src/test/java/it/cavallium/dbengine/StringIndicizer.java b/src/test/java/it/cavallium/dbengine/StringIndicizer.java index b6a084b..76eb7a5 100644 --- a/src/test/java/it/cavallium/dbengine/StringIndicizer.java +++ b/src/test/java/it/cavallium/dbengine/StringIndicizer.java @@ -28,13 +28,13 @@ public class StringIndicizer extends Indicizer { var numInt = Ints.tryParse(value); if (numInt != null) { fields.add(LLItem.newIntPoint("intpoint", numInt)); - fields.add(LLItem.newSortedNumericDocValuesField("intsort", numInt)); + fields.add(LLItem.newNumericDocValuesField("intsort", numInt)); } @SuppressWarnings("UnstableApiUsage") var numLong = Longs.tryParse(value); if (numLong != null) { fields.add(LLItem.newLongPoint("longpoint", numLong)); - fields.add(LLItem.newSortedNumericDocValuesField("longsort", numLong)); + fields.add(LLItem.newNumericDocValuesField("longsort", numLong)); } return new LLUpdateDocument(fields.toArray(LLItem[]::new)); });