Index: /main/trunk/greenstone2/runtime-src/src/colservr/fieldedqueryfilter.h
===================================================================
--- /main/trunk/greenstone2/runtime-src/src/colservr/fieldedqueryfilter.h	(revision 27083)
+++ /main/trunk/greenstone2/runtime-src/src/colservr/fieldedqueryfilter.h	(revision 27084)
@@ -1,5 +1,5 @@
 /**********************************************************************
  *
- * queryfilter.h -- abstract base class for fielded queryfilters
+ * fieldedqueryfilter.h -- abstract base class for fielded queryfilters
  *         mgppqueryfilter and lucenequeryfilter 
  *          implement this
@@ -42,26 +42,10 @@
   bool full_text_browse (int filterRequestOptions);
 
-  // do query that might involve multiple sub queries
-  // textsearchptr and db_ptr are assumed to be valid
-  virtual void do_multi_query (const FilterRequest_t &request,
-		       const vector<queryparamclass> &query_params,
-		       queryresultsclass &multiresults,
-		       comerror_t &err, ostream &logout)=0;
-
 public:
   fieldedqueryfilterclass ();
   virtual ~fieldedqueryfilterclass ();
 
-  void configure (const text_t &key, const text_tarray &cfgline);
-  bool init (ostream &logout);
-
-  void filter (const FilterRequest_t &request,
-	       FilterResponse_t &response,
-	       comerror_t &err, ostream &logout)=0;
-
-  void browsefilter(const FilterRequest_t &request,
-		    FilterResponse_t &response,
-		    comerror_t &err, ostream &logout);  
-
+  virtual void configure (const text_t &key, const text_tarray &cfgline);
+  virtual bool init (ostream &logout);
 
 };
Index: /main/trunk/greenstone2/runtime-src/src/colservr/lucenequeryfilter.cpp
===================================================================
--- /main/trunk/greenstone2/runtime-src/src/colservr/lucenequeryfilter.cpp	(revision 27083)
+++ /main/trunk/greenstone2/runtime-src/src/colservr/lucenequeryfilter.cpp	(revision 27084)
@@ -109,4 +109,24 @@
 }
 
+bool lucenequeryfilterclass::set_queryparam_field(const OptionValue_t &option, queryparamclass &query) {
+
+  if (option.name == "FilterString") {
+    query.filterstring = option.value;
+    return true;
+  }
+  if (option.name == "SortField") {
+    query.sortfield = option.value;
+    return true;
+  }
+  if (option.name == "SortOrder") {
+    query.sortorder = (option.value == "descending");
+    return true;
+  }
+  if (option.name == "Fuzziness") {
+    query.fuzziness = option.value;
+    return true;
+  } 
+  return fieldedqueryfilterclass::set_queryparam_field(option, query);
+}
 
 void lucenequeryfilterclass::filter(const FilterRequest_t &request,
Index: /main/trunk/greenstone2/runtime-src/src/colservr/lucenequeryfilter.h
===================================================================
--- /main/trunk/greenstone2/runtime-src/src/colservr/lucenequeryfilter.h	(revision 27083)
+++ /main/trunk/greenstone2/runtime-src/src/colservr/lucenequeryfilter.h	(revision 27084)
@@ -43,4 +43,5 @@
 
   void set_queryparam_defaults(queryparamclass &query );
+  bool set_queryparam_field(const OptionValue_t &option, queryparamclass &query);
 
 public:
Index: /main/trunk/greenstone2/runtime-src/src/colservr/queryfilter.cpp
===================================================================
--- /main/trunk/greenstone2/runtime-src/src/colservr/queryfilter.cpp	(revision 27083)
+++ /main/trunk/greenstone2/runtime-src/src/colservr/queryfilter.cpp	(revision 27084)
@@ -264,5 +264,5 @@
 
 void queryfilterclass::set_queryparam_defaults(queryparamclass &query ) {
-  
+
   query.collection = collection;
   query.index = filterOptions["Index"].defaultValue;
@@ -281,40 +281,53 @@
 }
 
-bool queryfilterclass::set_queryparam_field(OptionValue_t option, queryparamclass &query) {
-
-if (option.name == "QueryType") {
-      query.search_type = (option.value == "ranked");
-    } else if (option.name == "MatchMode") {
-      query.match_mode = (option.value == "all");
-      if (query.match_mode == 1) query.maxdocs = -1;
-    } else if (option.name == "Term") {
-      query.querystring = option.value;
-    } else if (option.name == "Casefold") {
-      query.casefolding = (option.value == "true");
-    } else if (option.name == "Stem") {
-      query.stemming = (option.value == "true");
-    } else if (option.name == "AccentFold") {
-      query.accentfolding = (option.value == "true");
-    } else if (option.name == "Index"&& option.value !="") {
-      query.index = option.value;
-    } else if (option.name == "Subcollection") {
-      query.subcollection = option.value;
-    } else if (option.name == "Language") {
-      query.language = option.value;
-    } else if (option.name == "Maxdocs") {
-      query.maxdocs = option.value.getint();
-    // } else if (option.name == "PhraseMatch") {
-    //   phrasematch = option.value;
-    } else if (option.name == "Level") {
-      query.level = option.value;
-    } else if (option.name == "FilterString") {
-      query.filterstring = option.value;
-    } else if (option.name == "SortField") {
-      query.sortfield = option.value;
-    } else if (option.name == "SortOrder") {
-      query.sortorder = (option.value == "descending");
-    } else if (option.name == "Fuzziness") {
-      query.fuzziness = option.value;
- } 
+bool queryfilterclass::set_queryparam_field(const OptionValue_t &option, queryparamclass &query) {
+
+  if (option.name == "QueryType") {
+    query.search_type = (option.value == "ranked");
+    return true;
+  } 
+  if (option.name == "MatchMode") {
+    query.match_mode = (option.value == "all");
+    if (query.match_mode == 1) query.maxdocs = -1;
+    return true;
+  }
+  if (option.name == "Term") {
+    query.querystring = option.value;
+    return true;
+  }
+  if (option.name == "Casefold") {
+    query.casefolding = (option.value == "true");
+    return true;
+  }
+  if (option.name == "Stem") {
+    query.stemming = (option.value == "true");
+    return true;
+  }
+  if (option.name == "AccentFold") {
+    query.accentfolding = (option.value == "true");
+    return true;
+  }
+  if (option.name == "Index"&& option.value !="") {
+    query.index = option.value;
+    return true;
+  }
+  if (option.name == "Subcollection") {
+    query.subcollection = option.value;
+    return true;
+  }
+  if (option.name == "Language") {
+    query.language = option.value;
+    return true;
+  }
+  if (option.name == "Maxdocs") {
+    query.maxdocs = option.value.getint();
+    return true;
+  }
+  if (option.name == "Level") {
+    query.level = option.value;
+    return true;
+  }
+
+  return false;
 }
 // get the query parameters
@@ -324,5 +337,4 @@
 					   ostream &logout) {
   outconvertclass text_t2ascii;
-
   // set defaults for the return parameters
   query_params.erase(query_params.begin(), query_params.end());
Index: /main/trunk/greenstone2/runtime-src/src/colservr/queryfilter.h
===================================================================
--- /main/trunk/greenstone2/runtime-src/src/colservr/queryfilter.h	(revision 27083)
+++ /main/trunk/greenstone2/runtime-src/src/colservr/queryfilter.h	(revision 27084)
@@ -56,7 +56,7 @@
   int maxnumeric;
 
-  void set_queryparam_defaults(queryparamclass &query );
-  bool set_queryparam_field(OptionValue_t option, queryparamclass &query);
-  void parse_query_params (const FilterRequest_t &request,
+  virtual void set_queryparam_defaults(queryparamclass &query );
+  virtual bool set_queryparam_field(const OptionValue_t &option, queryparamclass &query);
+  virtual void parse_query_params (const FilterRequest_t &request,
 			   vector<queryparamclass> &query_params,
 			   int &startresults, int &endresults,
