You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by jp...@apache.org on 2024/04/09 15:15:29 UTC
(lucene) branch branch_9x updated: Move per-field vector and doc-values readers from TreeMap to HashMap. (#13284)
This is an automated email from the ASF dual-hosted git repository.
jpountz pushed a commit to branch branch_9x
in repository https://gitbox.apache.org/repos/asf/lucene.git
The following commit(s) were added to refs/heads/branch_9x by this push:
new 1edda101a3c Move per-field vector and doc-values readers from TreeMap to HashMap. (#13284)
1edda101a3c is described below
commit 1edda101a3c02b00c26bd01b1df0f47e35c386b1
Author: Adrien Grand <jp...@gmail.com>
AuthorDate: Tue Apr 9 15:59:10 2024 +0200
Move per-field vector and doc-values readers from TreeMap to HashMap. (#13284)
Our per-field vector and doc-values readers use `TreeMap`s but don't rely on
the iteration order, so these `TreeMap`s can be replaced with more
CPU/RAM-efficient `HashMap`s.
The per-field postings reader stays on a `TreeMap` since it relies on the
iteration order.
---
lucene/CHANGES.txt | 6 ++++++
.../org/apache/lucene/codecs/perfield/PerFieldDocValuesFormat.java | 3 +--
.../org/apache/lucene/codecs/perfield/PerFieldKnnVectorsFormat.java | 3 +--
3 files changed, 8 insertions(+), 4 deletions(-)
diff --git a/lucene/CHANGES.txt b/lucene/CHANGES.txt
index 0a7595b47c2..858e96587c8 100644
--- a/lucene/CHANGES.txt
+++ b/lucene/CHANGES.txt
@@ -81,6 +81,12 @@ Optimizations
* GITHUB#13149: Made PointRangeQuery faster, for some segment sizes, by reducing the amount of virtual calls to
IntersectVisitor::visit(int). (Anton Hägerstrand)
+* GITHUB#12966: FloatTaxonomyFacets can now collect values into a sparse structure, like IntTaxonomyFacets already
+ could. (Stefan Vodita)
+
+* GITHUB#13284: Per-field doc values and knn vectors readers now use a HashMap internally instead of
+ a TreeMap. (Adrien Grand)
+
Bug Fixes
---------------------
diff --git a/lucene/core/src/java/org/apache/lucene/codecs/perfield/PerFieldDocValuesFormat.java b/lucene/core/src/java/org/apache/lucene/codecs/perfield/PerFieldDocValuesFormat.java
index d1ec6a5e50c..0e8352da445 100644
--- a/lucene/core/src/java/org/apache/lucene/codecs/perfield/PerFieldDocValuesFormat.java
+++ b/lucene/core/src/java/org/apache/lucene/codecs/perfield/PerFieldDocValuesFormat.java
@@ -24,7 +24,6 @@ import java.util.HashMap;
import java.util.IdentityHashMap;
import java.util.Map;
import java.util.ServiceLoader;
-import java.util.TreeMap;
import org.apache.lucene.codecs.DocValuesConsumer;
import org.apache.lucene.codecs.DocValuesFormat;
import org.apache.lucene.codecs.DocValuesProducer;
@@ -259,7 +258,7 @@ public abstract class PerFieldDocValuesFormat extends DocValuesFormat {
private class FieldsReader extends DocValuesProducer {
- private final Map<String, DocValuesProducer> fields = new TreeMap<>();
+ private final Map<String, DocValuesProducer> fields = new HashMap<>();
private final Map<String, DocValuesProducer> formats = new HashMap<>();
// clone for merge
diff --git a/lucene/core/src/java/org/apache/lucene/codecs/perfield/PerFieldKnnVectorsFormat.java b/lucene/core/src/java/org/apache/lucene/codecs/perfield/PerFieldKnnVectorsFormat.java
index d84e0f7b1c9..b89eda3cb72 100644
--- a/lucene/core/src/java/org/apache/lucene/codecs/perfield/PerFieldKnnVectorsFormat.java
+++ b/lucene/core/src/java/org/apache/lucene/codecs/perfield/PerFieldKnnVectorsFormat.java
@@ -22,7 +22,6 @@ import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.ServiceLoader;
-import java.util.TreeMap;
import org.apache.lucene.codecs.KnnFieldVectorsWriter;
import org.apache.lucene.codecs.KnnVectorsFormat;
import org.apache.lucene.codecs.KnnVectorsReader;
@@ -187,7 +186,7 @@ public abstract class PerFieldKnnVectorsFormat extends KnnVectorsFormat {
/** VectorReader that can wrap multiple delegate readers, selected by field. */
public static class FieldsReader extends KnnVectorsReader {
- private final Map<String, KnnVectorsReader> fields = new TreeMap<>();
+ private final Map<String, KnnVectorsReader> fields = new HashMap<>();
/**
* Create a FieldsReader over a segment, opening VectorReaders for each KnnVectorsFormat