Author: thomasm
Date: Wed Nov  2 12:29:40 2016
New Revision: 1767658

URL: http://svn.apache.org/viewvc?rev=1767658&view=rev
Log:
OAK-4788 Fulltext parser sorts and unique-s parsed terms

Modified:
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/fulltext/FullTextAnd.java
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/fulltext/FullTextOr.java
    
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/query/ast/FullTextTest.java

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/fulltext/FullTextAnd.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/fulltext/FullTextAnd.java?rev=1767658&r1=1767657&r2=1767658&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/fulltext/FullTextAnd.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/fulltext/FullTextAnd.java
 Wed Nov  2 12:29:40 2016
@@ -45,7 +45,7 @@ public class FullTextAnd extends FullTex
 
     @Override
     public FullTextExpression simplify() {
-        Set<FullTextExpression> set = FullTextOr.getSortedAndUniqueSet(list);
+        Set<FullTextExpression> set = FullTextOr.getUniqueSet(list);
         if (set.size() == 1) {
             return set.iterator().next();
         }

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/fulltext/FullTextOr.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/fulltext/FullTextOr.java?rev=1767658&r1=1767657&r2=1767658&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/fulltext/FullTextOr.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/fulltext/FullTextOr.java
 Wed Nov  2 12:29:40 2016
@@ -19,10 +19,9 @@
 package org.apache.jackrabbit.oak.query.fulltext;
 
 import java.util.ArrayList;
-import java.util.Comparator;
+import java.util.LinkedHashSet;
 import java.util.List;
 import java.util.Set;
-import java.util.TreeSet;
 
 /**
  * A fulltext "or" condition.
@@ -47,7 +46,7 @@ public class FullTextOr extends FullText
 
     @Override
     public FullTextExpression simplify() {
-        Set<FullTextExpression> set = getSortedAndUniqueSet(list);
+        Set<FullTextExpression> set = getUniqueSet(list);
         if (set.size() == 1) {
             return set.iterator().next();
         }
@@ -57,18 +56,10 @@ public class FullTextOr extends FullText
         return new FullTextOr(l);
     }
     
-    static Set<FullTextExpression> getSortedAndUniqueSet(
+    static Set<FullTextExpression> getUniqueSet(
             List<FullTextExpression> list) {
-        // sort and remove duplicates
-        TreeSet<FullTextExpression> set = new TreeSet<FullTextExpression>(
-                new Comparator<FullTextExpression>() {
-
-                    @Override
-                    public int compare(FullTextExpression o1,
-                            FullTextExpression o2) {
-                        return o1.toString().compareTo(o2.toString());
-                    }
-                });
+        // remove duplicates, but keep order
+        LinkedHashSet<FullTextExpression> set = new 
LinkedHashSet<FullTextExpression>(list.size());
         for (int i = 0; i < list.size(); i++) {
             set.add(list.get(i).simplify());
         }

Modified: 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/query/ast/FullTextTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/query/ast/FullTextTest.java?rev=1767658&r1=1767657&r2=1767658&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/query/ast/FullTextTest.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/query/ast/FullTextTest.java
 Wed Nov  2 12:29:40 2016
@@ -71,9 +71,11 @@ public class FullTextTest {
         assertEquals("\"-\"", convertPattern("- "));
         assertEquals("\"-\"", convertPattern("- -"));
         assertEquals("\"-\" \"hello\"", convertPattern("- hello"));
-        assertEquals("\"-\" \"hello\" \"world\"", convertPattern("hello - 
world"));
-        assertEquals("\"-\" \"hello\" \"world\"", convertPattern("hello  -  
world"));
-        assertEquals("\"-\" \"hello\"", convertPattern("hello -"));
+        assertEquals("\"hello\" \"-\" \"world\"", convertPattern("hello - 
world"));
+        assertEquals("\"hello\" \"-\" \"world\"", convertPattern("hello  -  
world"));
+        assertEquals("\"hello\" \"-\"", convertPattern("hello -"));
+        assertEquals("\"hello\" \"-\"", convertPattern("hello -"));
+        assertEquals("\"hello\" \"-\"", convertPattern("hello - hello"));
 
         assertTrue(test("-", "hello - world"));
         assertTrue(test("- ", "hello - world"));


Reply via email to