From 4cc8d44fd85f3e6f7d065385762131db5b5fbdaa Mon Sep 17 00:00:00 2001 From: Andrea Cavalli Date: Tue, 15 Mar 2022 11:46:00 +0100 Subject: [PATCH] Fix terms --- .../java/it/cavallium/dbengine/database/LLItem.java | 8 ++++++++ .../it/cavallium/dbengine/database/LLKeyScore.java | 2 +- .../java/it/cavallium/dbengine/database/LLUtils.java | 10 ++++++++-- .../java/it/cavallium/dbengine/lucene/LuceneUtils.java | 4 ++-- 4 files changed, 19 insertions(+), 5 deletions(-) diff --git a/src/main/java/it/cavallium/dbengine/database/LLItem.java b/src/main/java/it/cavallium/dbengine/database/LLItem.java index cae7ca9..5ea4367 100644 --- a/src/main/java/it/cavallium/dbengine/database/LLItem.java +++ b/src/main/java/it/cavallium/dbengine/database/LLItem.java @@ -144,6 +144,14 @@ public class LLItem { } } + public static LLItem newStringField(String name, BytesRef bytesRef, Field.Store store) { + if (store == Field.Store.YES) { + return new LLItem(LLType.StringFieldStored, name, bytesRef); + } else { + return new LLItem(LLType.StringField, name, bytesRef); + } + } + public static LLItem newSortedNumericDocValuesField(String name, long data) { return new LLItem(LLType.SortedNumericDocValuesField, name, data); } diff --git a/src/main/java/it/cavallium/dbengine/database/LLKeyScore.java b/src/main/java/it/cavallium/dbengine/database/LLKeyScore.java index 9e29bc6..a669543 100644 --- a/src/main/java/it/cavallium/dbengine/database/LLKeyScore.java +++ b/src/main/java/it/cavallium/dbengine/database/LLKeyScore.java @@ -7,4 +7,4 @@ import org.apache.lucene.util.BytesRef; import org.jetbrains.annotations.Nullable; import reactor.core.publisher.Mono; -public record LLKeyScore(int docId, float score, @Nullable IndexableField key) {} +public record LLKeyScore(int docId, int shardId, float score, @Nullable IndexableField key) {} diff --git a/src/main/java/it/cavallium/dbengine/database/LLUtils.java b/src/main/java/it/cavallium/dbengine/database/LLUtils.java index 46b5b68..760d216 100644 --- a/src/main/java/it/cavallium/dbengine/database/LLUtils.java +++ b/src/main/java/it/cavallium/dbengine/database/LLUtils.java @@ -224,7 +224,13 @@ public class LLUtils { case SortedNumericDocValuesField -> new SortedNumericDocValuesField(item.getName(), item.longData()); case NumericDocValuesField -> new NumericDocValuesField(item.getName(), item.longData()); case StringField -> new StringField(item.getName(), item.stringValue(), Store.NO); - case StringFieldStored -> new StringField(item.getName(), item.stringValue(), Store.YES); + case StringFieldStored -> { + if (item.getData() instanceof BytesRef bytesRef) { + yield new StringField(item.getName(), bytesRef, Store.YES); + } else { + yield new StringField(item.getName(), item.stringValue(), Store.YES); + } + } }; } @@ -259,7 +265,7 @@ public class LLUtils { } public static it.cavallium.dbengine.database.LLKeyScore toKeyScore(LLKeyScore hit) { - return new it.cavallium.dbengine.database.LLKeyScore(hit.docId(), hit.score(), hit.key()); + return new it.cavallium.dbengine.database.LLKeyScore(hit.docId(), hit.shardId(), hit.score(), hit.key()); } public static String toStringSafe(@Nullable Buffer key) { diff --git a/src/main/java/it/cavallium/dbengine/lucene/LuceneUtils.java b/src/main/java/it/cavallium/dbengine/lucene/LuceneUtils.java index 2634f27..9bdb3eb 100644 --- a/src/main/java/it/cavallium/dbengine/lucene/LuceneUtils.java +++ b/src/main/java/it/cavallium/dbengine/lucene/LuceneUtils.java @@ -419,13 +419,13 @@ public class LuceneUtils { } else { collectedDoc = null; } - return new LLKeyScore(shardDocId, score, collectedDoc); + return new LLKeyScore(shardDocId, shardIndex, score, collectedDoc); } catch (NoSuchElementException ex) { logger.debug("Error: document {} key is not present!", shardDocId); return null; } catch (Exception ex) { logger.error("Failed to read document {}", shardDocId, ex); - return new LLKeyScore(shardDocId, score, null); + return new LLKeyScore(shardDocId, shardIndex, score, null); } }