Changeset 27084

Show
Ignore:
Timestamp:
14.03.2013 12:46:15 (7 years ago)
Author:
kjdon
Message:

more tidying up of queryfilters. moved some stuff to the lucene class, and added 'virtual's so the right method actually gets used

Location:
main/trunk/greenstone2/runtime-src/src/colservr
Files:
5 modified

Legend:

Unmodified
Added
Removed
  • main/trunk/greenstone2/runtime-src/src/colservr/fieldedqueryfilter.h

    r27064 r27084  
    11/********************************************************************** 
    22 * 
    3  * queryfilter.h -- abstract base class for fielded queryfilters 
     3 * fieldedqueryfilter.h -- abstract base class for fielded queryfilters 
    44 *         mgppqueryfilter and lucenequeryfilter  
    55 *          implement this 
     
    4242  bool full_text_browse (int filterRequestOptions); 
    4343 
    44   // do query that might involve multiple sub queries 
    45   // textsearchptr and db_ptr are assumed to be valid 
    46   virtual void do_multi_query (const FilterRequest_t &request, 
    47                const vector<queryparamclass> &query_params, 
    48                queryresultsclass &multiresults, 
    49                comerror_t &err, ostream &logout)=0; 
    50  
    5144public: 
    5245  fieldedqueryfilterclass (); 
    5346  virtual ~fieldedqueryfilterclass (); 
    5447 
    55   void configure (const text_t &key, const text_tarray &cfgline); 
    56   bool init (ostream &logout); 
    57  
    58   void filter (const FilterRequest_t &request, 
    59            FilterResponse_t &response, 
    60            comerror_t &err, ostream &logout)=0; 
    61  
    62   void browsefilter(const FilterRequest_t &request, 
    63             FilterResponse_t &response, 
    64             comerror_t &err, ostream &logout);   
    65  
     48  virtual void configure (const text_t &key, const text_tarray &cfgline); 
     49  virtual bool init (ostream &logout); 
    6650 
    6751}; 
  • main/trunk/greenstone2/runtime-src/src/colservr/lucenequeryfilter.cpp

    r27064 r27084  
    109109} 
    110110 
     111bool lucenequeryfilterclass::set_queryparam_field(const OptionValue_t &option, queryparamclass &query) { 
     112 
     113  if (option.name == "FilterString") { 
     114    query.filterstring = option.value; 
     115    return true; 
     116  } 
     117  if (option.name == "SortField") { 
     118    query.sortfield = option.value; 
     119    return true; 
     120  } 
     121  if (option.name == "SortOrder") { 
     122    query.sortorder = (option.value == "descending"); 
     123    return true; 
     124  } 
     125  if (option.name == "Fuzziness") { 
     126    query.fuzziness = option.value; 
     127    return true; 
     128  }  
     129  return fieldedqueryfilterclass::set_queryparam_field(option, query); 
     130} 
    111131 
    112132void lucenequeryfilterclass::filter(const FilterRequest_t &request, 
  • main/trunk/greenstone2/runtime-src/src/colservr/lucenequeryfilter.h

    r27064 r27084  
    4343 
    4444  void set_queryparam_defaults(queryparamclass &query ); 
     45  bool set_queryparam_field(const OptionValue_t &option, queryparamclass &query); 
    4546 
    4647public: 
  • main/trunk/greenstone2/runtime-src/src/colservr/queryfilter.cpp

    r27064 r27084  
    264264 
    265265void queryfilterclass::set_queryparam_defaults(queryparamclass &query ) { 
    266    
     266 
    267267  query.collection = collection; 
    268268  query.index = filterOptions["Index"].defaultValue; 
     
    281281} 
    282282 
    283 bool queryfilterclass::set_queryparam_field(OptionValue_t option, queryparamclass &query) { 
    284  
    285 if (option.name == "QueryType") { 
    286       query.search_type = (option.value == "ranked"); 
    287     } else if (option.name == "MatchMode") { 
    288       query.match_mode = (option.value == "all"); 
    289       if (query.match_mode == 1) query.maxdocs = -1; 
    290     } else if (option.name == "Term") { 
    291       query.querystring = option.value; 
    292     } else if (option.name == "Casefold") { 
    293       query.casefolding = (option.value == "true"); 
    294     } else if (option.name == "Stem") { 
    295       query.stemming = (option.value == "true"); 
    296     } else if (option.name == "AccentFold") { 
    297       query.accentfolding = (option.value == "true"); 
    298     } else if (option.name == "Index"&& option.value !="") { 
    299       query.index = option.value; 
    300     } else if (option.name == "Subcollection") { 
    301       query.subcollection = option.value; 
    302     } else if (option.name == "Language") { 
    303       query.language = option.value; 
    304     } else if (option.name == "Maxdocs") { 
    305       query.maxdocs = option.value.getint(); 
    306     // } else if (option.name == "PhraseMatch") { 
    307     //   phrasematch = option.value; 
    308     } else if (option.name == "Level") { 
    309       query.level = option.value; 
    310     } else if (option.name == "FilterString") { 
    311       query.filterstring = option.value; 
    312     } else if (option.name == "SortField") { 
    313       query.sortfield = option.value; 
    314     } else if (option.name == "SortOrder") { 
    315       query.sortorder = (option.value == "descending"); 
    316     } else if (option.name == "Fuzziness") { 
    317       query.fuzziness = option.value; 
    318  }  
     283bool queryfilterclass::set_queryparam_field(const OptionValue_t &option, queryparamclass &query) { 
     284 
     285  if (option.name == "QueryType") { 
     286    query.search_type = (option.value == "ranked"); 
     287    return true; 
     288  }  
     289  if (option.name == "MatchMode") { 
     290    query.match_mode = (option.value == "all"); 
     291    if (query.match_mode == 1) query.maxdocs = -1; 
     292    return true; 
     293  } 
     294  if (option.name == "Term") { 
     295    query.querystring = option.value; 
     296    return true; 
     297  } 
     298  if (option.name == "Casefold") { 
     299    query.casefolding = (option.value == "true"); 
     300    return true; 
     301  } 
     302  if (option.name == "Stem") { 
     303    query.stemming = (option.value == "true"); 
     304    return true; 
     305  } 
     306  if (option.name == "AccentFold") { 
     307    query.accentfolding = (option.value == "true"); 
     308    return true; 
     309  } 
     310  if (option.name == "Index"&& option.value !="") { 
     311    query.index = option.value; 
     312    return true; 
     313  } 
     314  if (option.name == "Subcollection") { 
     315    query.subcollection = option.value; 
     316    return true; 
     317  } 
     318  if (option.name == "Language") { 
     319    query.language = option.value; 
     320    return true; 
     321  } 
     322  if (option.name == "Maxdocs") { 
     323    query.maxdocs = option.value.getint(); 
     324    return true; 
     325  } 
     326  if (option.name == "Level") { 
     327    query.level = option.value; 
     328    return true; 
     329  } 
     330 
     331  return false; 
    319332} 
    320333// get the query parameters 
     
    324337                       ostream &logout) { 
    325338  outconvertclass text_t2ascii; 
    326  
    327339  // set defaults for the return parameters 
    328340  query_params.erase(query_params.begin(), query_params.end()); 
  • main/trunk/greenstone2/runtime-src/src/colservr/queryfilter.h

    r27064 r27084  
    5656  int maxnumeric; 
    5757 
    58   void set_queryparam_defaults(queryparamclass &query ); 
    59   bool set_queryparam_field(OptionValue_t option, queryparamclass &query); 
    60   void parse_query_params (const FilterRequest_t &request, 
     58  virtual void set_queryparam_defaults(queryparamclass &query ); 
     59  virtual bool set_queryparam_field(const OptionValue_t &option, queryparamclass &query); 
     60  virtual void parse_query_params (const FilterRequest_t &request, 
    6161               vector<queryparamclass> &query_params, 
    6262               int &startresults, int &endresults,