You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by fo...@apache.org on 2020/09/22 06:22:01 UTC

svn commit: r1881921 - in /jackrabbit/oak/trunk: oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elastic/index/ElasticDocument.java oak-search/src/test/java/org/apache/jackrabbit/oak/plugins/index/IndexSuggestionCommonTest.java

Author: fortino
Date: Tue Sep 22 06:22:01 2020
New Revision: 1881921

URL: http://svn.apache.org/viewvc?rev=1881921&view=rev
Log:
OAK-9214: avoid duplications in :suggest

Modified:
    jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elastic/index/ElasticDocument.java
    jackrabbit/oak/trunk/oak-search/src/test/java/org/apache/jackrabbit/oak/plugins/index/IndexSuggestionCommonTest.java

Modified: jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elastic/index/ElasticDocument.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elastic/index/ElasticDocument.java?rev=1881921&r1=1881920&r2=1881921&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elastic/index/ElasticDocument.java (original)
+++ jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elastic/index/ElasticDocument.java Tue Sep 22 06:22:01 2020
@@ -27,15 +27,17 @@ import org.slf4j.LoggerFactory;
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.HashMap;
+import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 
 class ElasticDocument {
     private static final Logger LOG = LoggerFactory.getLogger(ElasticDocument.class);
 
     private final String path;
     private final List<String> fulltext;
-    private final List<String> suggest;
+    private final Set<String> suggest;
     private final List<String> notNullProps;
     private final List<String> nullProps;
     private final Map<String, Object> properties;
@@ -43,7 +45,7 @@ class ElasticDocument {
     ElasticDocument(String path) {
         this.path = path;
         this.fulltext = new ArrayList<>();
-        this.suggest = new ArrayList<>();
+        this.suggest = new HashSet<>();
         this.notNullProps = new ArrayList<>();
         this.nullProps = new ArrayList<>();
         this.properties = new HashMap<>();

Modified: jackrabbit/oak/trunk/oak-search/src/test/java/org/apache/jackrabbit/oak/plugins/index/IndexSuggestionCommonTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-search/src/test/java/org/apache/jackrabbit/oak/plugins/index/IndexSuggestionCommonTest.java?rev=1881921&r1=1881920&r2=1881921&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-search/src/test/java/org/apache/jackrabbit/oak/plugins/index/IndexSuggestionCommonTest.java (original)
+++ jackrabbit/oak/trunk/oak-search/src/test/java/org/apache/jackrabbit/oak/plugins/index/IndexSuggestionCommonTest.java Tue Sep 22 06:22:01 2020
@@ -403,6 +403,35 @@ public abstract class IndexSuggestionCom
         });
     }
 
+    @Test
+    public void testDuplicateSuggestionProperties() throws Exception {
+        String nodeType = JcrConstants.NT_UNSTRUCTURED;
+        String suggestProp1 = "shortDes";
+        String suggestProp2 = "longDes";
+
+        Node indexDefNode = createSuggestIndex("index-suggest", nodeType, suggestProp1);
+        addPropertyDefinition(indexDefNode, nodeType, suggestProp2, false);
+
+        Node indexedNode = root.addNode("indexedNode", nodeType);
+        indexedNode.setProperty(suggestProp1, "car here");
+        indexedNode.setProperty(suggestProp2, "car here");
+        indexedNode = root.addNode("indexedNode2", nodeType);
+        indexedNode.setProperty(suggestProp1, "car there");
+        indexedNode.setProperty(suggestProp2, "car there");
+
+        session.save();
+
+        String suggQuery = createSuggestQuery(nodeType, "car");
+        QueryManager queryManager = session.getWorkspace().getQueryManager();
+        assertEventually(() -> {
+            try {
+                assertEquals("There should be some suggestion",2, getAllResults(queryManager, suggQuery).size());
+            } catch (RepositoryException e) {
+                throw new RuntimeException(e);
+            }
+        });
+    }
+
     private static void assertEventually(Runnable r) {
         TestUtils.assertEventually(r, 3000 * 3);
     }