bruno-roustant commented on code in PR #1466:
URL: https://github.com/apache/solr/pull/1466#discussion_r1144360207


##########
solr/core/src/java/org/apache/solr/handler/component/QueryElevationComponent.java:
##########
@@ -1265,15 +1260,13 @@ protected Elevation mergeWith(Elevation elevation) {
         return this;
       }
       Set<BytesRef> elevatedIds =
-          ImmutableSet.<BytesRef>builder()
-              .addAll(this.elevatedIds)
-              .addAll(elevation.elevatedIds)
-              .build();
+          Stream.concat(this.elevatedIds.stream(), 
elevation.elevatedIds.stream())
+              .collect(Collectors.toCollection(LinkedHashSet::new));
       boolean overlappingElevatedIds =
           elevatedIds.size() != (this.elevatedIds.size() + 
elevation.elevatedIds.size());
       BooleanQuery.Builder includeQueryBuilder = new BooleanQuery.Builder();
       Set<BooleanClause> clauseSet =
-          (overlappingElevatedIds ? 
Sets.newHashSetWithExpectedSize(elevatedIds.size()) : null);
+          (overlappingElevatedIds ? new HashSet<>(elevatedIds.size()) : null);

Review Comment:
   We should use org.apache.lucene.util.CollectionUtil.newHashSet(int).
   (and later with JDK 19 HashSet.newHashSet)



##########
solr/core/src/java/org/apache/solr/cloud/SizeLimitedDistributedMap.java:
##########
@@ -77,7 +77,7 @@ protected boolean lessThan(Long a, Long b) {
             }
           };
 
-      Map<String, Long> childToModificationZxid = 
Maps.newHashMapWithExpectedSize(children.size());
+      Map<String, Long> childToModificationZxid = new 
HashMap<>(children.size());

Review Comment:
   This is not equivalent to Maps.newHashMapWithExpectedSize.
   
   In this HashMap constructor, the parameter is the initial capacity. But we 
should take into account the load factor (0.75) on this capacity. For example 
if children.size() == 10, then the HashMap will resize (and rehash) when it 
contains >= 7.5 entries; this means it will always resize.
   Maps.newHashMapWithExpectedSize takes that into account to set the Map 
initial capacity to (children.size() / 0.75) + 1, ensuring an optimal capacity 
and no rehash during the construction.
   
   We can use org.apache.lucene.util.CollectionUtil.newHashMap(int size).
   Later with JDK 19, we will be able to use HashMap.newHashMap(int 
numMappings).



##########
solr/core/src/java/org/apache/solr/handler/component/QueryElevationComponent.java:
##########
@@ -1558,7 +1556,7 @@ Solution is q(k) = 1/2 (k^2+k+2)
       public Builder<E, M> addSubset(Collection<E> subset, M matchValue) {
         if (!subset.isEmpty()) {
           TrieSubsetMatcher.Node<E, M> node = root;
-          for (E e : ImmutableSortedSet.copyOf(subset)) {
+          for (E e : Collections.unmodifiableSortedSet(new TreeSet<>(subset))) 
{

Review Comment:
   We can remove the immutability. I chose that originally just for performance 
with the Guava collection.
   Here what is important is to 1- remove duplicates and 2- sort. Using a 
TreeSet corresponds, my only concern is the poor performance of TreeSet 
iteration. But that's ok.



##########
solr/core/src/java/org/apache/solr/handler/component/QueryElevationComponent.java:
##########
@@ -1590,10 +1587,10 @@ public int getSubsetCount() {
      * Returns an iterator over all the subsets that are contained by the 
provided set. The returned
      * iterator does not support removal.
      *
-     * @param set This set is copied to a new {@link ImmutableSortedSet} with 
natural ordering.
+     * @param set This set is copied to a new {@link SortedSet} with natural 
ordering.
      */
     public Iterator<M> findSubsetsMatching(Collection<E> set) {
-      return new MatchIterator(ImmutableSortedSet.copyOf(set));
+      return new MatchIterator(Collections.unmodifiableSortedSet(new 
TreeSet<>(set)));

Review Comment:
   Immutability can be removed.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org
For additional commands, e-mail: issues-h...@solr.apache.org

Reply via email to