Author: ssmiweve
Date: 2008-11-27 15:09:21 +0100 (Thu, 27 Nov 2008)
New Revision: 6995

Modified:
   
branches/2.18/generic.sesam/search-command-control/fast/src/main/java/no/sesat/search/mode/command/AbstractESPFastSearchCommand.java
   
branches/2.18/search-command-control-spi/src/main/java/no/sesat/search/mode/command/AbstractSearchCommand.java
   
branches/2.18/search-command-control-spi/src/main/java/no/sesat/search/mode/command/querybuilder/AbstractQueryBuilder.java
   
branches/2.18/search-command-control-spi/src/main/java/no/sesat/search/mode/command/querybuilder/QueryBuilder.java
Log:
-subclass methods were not being called from anonymous class. wrapper methods 
added to delegate properly to subclass methods.
-make getReservedWords implementations reused the built collections
-let the reserved words be regular expressions to allow more complex reserved 
words


Modified: 
branches/2.18/generic.sesam/search-command-control/fast/src/main/java/no/sesat/search/mode/command/AbstractESPFastSearchCommand.java
===================================================================
--- 
branches/2.18/generic.sesam/search-command-control/fast/src/main/java/no/sesat/search/mode/command/AbstractESPFastSearchCommand.java
        2008-11-27 11:15:55 UTC (rev 6994)
+++ 
branches/2.18/generic.sesam/search-command-control/fast/src/main/java/no/sesat/search/mode/command/AbstractESPFastSearchCommand.java
        2008-11-27 14:09:21 UTC (rev 6995)
@@ -55,6 +55,7 @@
 import java.io.IOException;
 import java.net.URL;
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.Map;
 import java.util.Properties;
 import java.util.concurrent.ConcurrentHashMap;
@@ -123,6 +124,8 @@
         }
     }
 
+    private static transient Collection<String> RESERVED_WORDS;
+
     // Constructors --------------------------------------------------
 
     /**
@@ -315,11 +318,14 @@
     @Override
     protected Collection<String> getReservedWords() {
 
-        final Collection<String> words = new 
ArrayList<String>(super.getReservedWords());
-        for (ReservedWord word : ReservedWord.values()) {
-            words.add(word.getWord());
+        if(null == RESERVED_WORDS){
+            final Collection<String> words = new 
ArrayList<String>(super.getReservedWords());
+            for (ReservedWord word : ReservedWord.values()) {
+                words.add(word.getWord());
+            }
+            RESERVED_WORDS = Collections.unmodifiableCollection(words);
         }
-        return words;
+        return RESERVED_WORDS;
     }
 
     /** In addition to super.escape() also replaces all ? with whitespace.

Modified: 
branches/2.18/search-command-control-spi/src/main/java/no/sesat/search/mode/command/AbstractSearchCommand.java
===================================================================
--- 
branches/2.18/search-command-control-spi/src/main/java/no/sesat/search/mode/command/AbstractSearchCommand.java
      2008-11-27 11:15:55 UTC (rev 6994)
+++ 
branches/2.18/search-command-control-spi/src/main/java/no/sesat/search/mode/command/AbstractSearchCommand.java
      2008-11-27 14:09:21 UTC (rev 6995)
@@ -190,7 +190,7 @@
 
                     public Query getQuery() {
                         // Important that initialiseQuery() has been called 
first
-                        return getSearchCommandsQuery(); // XXX will this end 
up in subclass overrides?
+                        return getSearchCommandsQuery();
                     }
 
                     public TokenEvaluationEngine getTokenEvaluationEngine() {
@@ -198,11 +198,11 @@
                     }
 
                     public void visitXorClause(final Visitor visitor, final 
XorClause clause) {
-                        AbstractSearchCommand.this.visitXorClause(visitor, 
clause);
+                        searchCommandsVisitXorClause(visitor, clause);
                     }
 
                     public String getFieldFilter(final LeafClause clause) {
-                        return 
AbstractSearchCommand.this.getFieldFilter(clause);
+                        return getSearchCommandsFieldFilter(clause);
                     }
 
                     public String getTransformedTerm(final Clause clause) {
@@ -215,16 +215,16 @@
 
                     public Collection<String> getReservedWords() {
 
-                        return AbstractSearchCommand.this.getReservedWords();
+                        return getSearchCommandsReservedWords();
                     }
 
                     public String escape(final String word) {
 
-                        return AbstractSearchCommand.this.escape(word);
+                        return searchCommandsEscape(word);
                     }
 
                     public Map<Clause, String> getTransformedTerms() {
-                        return 
AbstractSearchCommand.this.getTransformedTerms();
+                        return getSearchCommandsTransformedTerms();
                     }
                 },
                 cxt
@@ -935,6 +935,23 @@
         return getQuery();
     }
 
+    /** Wrapper around visitXorClause(). Nothing more than a different method 
signature. **/
+    private void searchCommandsVisitXorClause(final Visitor visitor, final 
XorClause clause) {
+        visitXorClause(visitor, clause);
+    }
+
+    /** Wrapper around getReservedWords(). Nothing more than a different 
method signature. **/
+    private String getSearchCommandsFieldFilter(final LeafClause clause) { 
return getFieldFilter(clause); }
+
+    /** Wrapper around getQuery(). Nothing more than a different method 
signature. **/
+    private Collection<String> getSearchCommandsReservedWords() { return 
getReservedWords(); }
+
+    /** Wrapper around escape(). Nothing more than a different method 
signature. **/
+    private String searchCommandsEscape(final String word) { return 
escape(word); }
+
+    /** Wrapper around getTransformedTerms(). Nothing more than a different 
method signature. **/
+    private Map<Clause, String> getSearchCommandsTransformedTerms() { return 
getTransformedTerms(); }
+
     /**
      *
      * @return

Modified: 
branches/2.18/search-command-control-spi/src/main/java/no/sesat/search/mode/command/querybuilder/AbstractQueryBuilder.java
===================================================================
--- 
branches/2.18/search-command-control-spi/src/main/java/no/sesat/search/mode/command/querybuilder/AbstractQueryBuilder.java
  2008-11-27 11:15:55 UTC (rev 6994)
+++ 
branches/2.18/search-command-control-spi/src/main/java/no/sesat/search/mode/command/querybuilder/AbstractQueryBuilder.java
  2008-11-27 14:09:21 UTC (rev 6995)
@@ -101,14 +101,18 @@
         for (String word : getWordsToEscape()) {
 
             // Case-insensitive check against word.
-            // Term might already be prefixed by the TermPrefixTransformer.
-            if (string.toLowerCase().endsWith(':' + word.toLowerCase()) || 
string.equalsIgnoreCase(word)) {
+            // Term might already be prefixed by a field.
 
-                final Pattern p = Pattern.compile(
-                        Matcher.quoteReplacement(word),
-                        Pattern.UNICODE_CASE | Pattern.CASE_INSENSITIVE);
+            final String regexp = "(.*:)?" + word;
+            if (string.toLowerCase().matches(regexp)) {
 
-                return p.matcher(word).replaceAll(context.escape(string));
+                final Pattern p = Pattern.compile(word, Pattern.UNICODE_CASE | 
Pattern.CASE_INSENSITIVE);
+
+                final String term = string.contains(":") && 
!string.contains("\\:")
+                        ? string.substring(string.indexOf(':') + 1)
+                        : string;
+
+                return p.matcher(string).replaceAll(context.escape(term));
             }
         }
 

Modified: 
branches/2.18/search-command-control-spi/src/main/java/no/sesat/search/mode/command/querybuilder/QueryBuilder.java
===================================================================
--- 
branches/2.18/search-command-control-spi/src/main/java/no/sesat/search/mode/command/querybuilder/QueryBuilder.java
  2008-11-27 11:15:55 UTC (rev 6994)
+++ 
branches/2.18/search-command-control-spi/src/main/java/no/sesat/search/mode/command/querybuilder/QueryBuilder.java
  2008-11-27 14:09:21 UTC (rev 6995)
@@ -40,8 +40,10 @@
          * @return unescaped transformed term
          */
         String getTransformedTerm(Clause clause);
-        /** The collection of words that have special meaning/function within 
the query string
+        /** The collection of words that have special meaning/function within 
the query string.
          *
+         * Each is treated as a regular expressions to match complex words if 
neccessary.
+         *
          * @return collection of reserved words
          */
         Collection<String> getReservedWords();

_______________________________________________
Kernel-commits mailing list
[email protected]
http://sesat.no/mailman/listinfo/kernel-commits

Reply via email to