]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.debug.ui/src/org/simantics/debug/ui/SearchResourceDialog.java
Index tokenized lowercase versions of name and types for UI searches
[simantics/platform.git] / bundles / org.simantics.debug.ui / src / org / simantics / debug / ui / SearchResourceDialog.java
index 8532be1ae28a6cce6b97a280d399d399a2040897..06710f6e29bd03a3dec4ecbdc50d5f4afdbd4b64 100644 (file)
@@ -13,6 +13,7 @@
 package org.simantics.debug.ui;
 
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.Comparator;
@@ -23,6 +24,7 @@ import java.util.Set;
 import java.util.TreeSet;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
+import java.util.stream.Collectors;
 
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IProgressMonitor;
@@ -56,6 +58,8 @@ import org.simantics.db.common.request.UniqueRead;
 import org.simantics.db.common.uri.UnescapedChildMapOfResource;
 import org.simantics.db.common.utils.NameUtils;
 import org.simantics.db.exception.DatabaseException;
+import org.simantics.db.layer0.genericrelation.Dependencies;
+import org.simantics.db.layer0.genericrelation.IndexQueries;
 import org.simantics.db.layer0.migration.OntologiesFromLibrary;
 import org.simantics.db.layer0.variable.Variables.Role;
 import org.simantics.db.request.Read;
@@ -302,13 +306,19 @@ public class SearchResourceDialog extends FilteredItemsSelectionDialog {
                                 }
                             }
                         } else {
+                            String[] terms = pattern.trim().split("\\s+"); //$NON-NLS-1$
+                            if (terms.length == 0) return;
+
                             Resource project = Simantics.peekProjectResource();
                             if (project != null) {
                                 IResourceFilter rf = resourceFilter;
                                 String filter = getFilterForResourceFilter(rf);
                                 if (!filter.isEmpty())
                                     filter += " AND "; //$NON-NLS-1$
-                                filter += "Name:" + pattern + "*"; //$NON-NLS-1$ //$NON-NLS-2$
+                                
+                                filter += Dependencies.FIELD_NAME_SEARCH + ":("; //$NON-NLS-1$
+                                filter += Arrays.stream(terms).map(term -> "+" + IndexQueries.escape(term.toLowerCase(), false) + "*").collect(Collectors.joining(" ")); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+                                filter +=")"; //$NON-NLS-1$
 
                                 Layer0 L0 = Layer0.getInstance(graph);