Changeset 12388


Ignore:
Timestamp:
2006-08-02T17:34:50+12:00 (18 years ago)
Author:
mdewsnip
Message:

Fuzzy searching with Lucene, many thanks to John Thompson and DL Consulting Ltd.

Location:
trunk/gsdl/src
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/gsdl/src/colservr/lucenesearch.cpp

    r12374 r12388  
    105105    defaultStemMethod |= 2;
    106106  }
    107  
     107
    108108  text_t utf8querystring = to_utf8(queryparams.querystring);
    109109  cerr << "**** query string = " << utf8querystring << endl;
     
    124124    cmd += " -sort \"" + queryparams.sortfield + "\"";
    125125  }
     126  if (queryparams.fuzzysearch)
     127    {
     128      cmd += " -fuzzy";
     129    }
    126130
    127131  // New code to support configuration of the default conjuction operator
  • trunk/gsdl/src/colservr/queryfilter.cpp

    r12314 r12388  
    9090  query.maxdocs = filterOptions["Maxdocs"].defaultValue.getint();
    9191  query.level = filterOptions["Level"].defaultValue;
     92  // Lucene specific
    9293  query.sortfield = filterOptions["SortField"].defaultValue;
     94  query.fuzzysearch = (filterOptions["FuzzySearch"].defaultValue == "true");
    9395  query.maxnumeric = maxnumeric;
    9496  OptionValue_tarray::const_iterator options_here = request.filterOptions.begin();
     
    117119      query.stemming = (filterOptions["Stem"].defaultValue == "true");
    118120      query.level = filterOptions["Level"].defaultValue;
     121      // Lucene specific
    119122      query.sortfield = filterOptions["SortField"].defaultValue;
     123      query.fuzzysearch = (filterOptions["FuzzySearch"].defaultValue == "true");
    120124      query.maxnumeric = maxnumeric;
    121125      // "all", needed when combining queries where the document results are needed
     
    152156    } else if ((*options_here).name == "SortField") {
    153157      query.sortfield = (*options_here).value;
     158    } else if ((*options_here).name == "FuzzySearch") {
     159      query.fuzzysearch = ((*options_here).value == "true");
    154160    } else {
    155161      logout << text_t2ascii
  • trunk/gsdl/src/colservr/queryinfo.cpp

    r12276 r12388  
    4848  maxnumeric = 4;  // must default to the same value as mg_passes
    4949  sortfield.clear();
     50  fuzzysearch = 0; // 0 = not fuzzy, 1 = fuzzy
    5051}
    5152
     
    6667  maxnumeric = q.maxnumeric;
    6768  sortfield = q.sortfield;
    68 
     69  fuzzysearch = q.fuzzysearch;
    6970  return *this;
    7071}
     
    8586      (x.maxdocs == y.maxdocs) &&
    8687      (x.maxnumeric == y.maxnumeric) &&
    87           (x.sortfield == y.sortfield));
     88          (x.sortfield == y.sortfield) &&
     89          (x.fuzzysearch == y.fuzzysearch));
    8890}
    8991
     
    111113  outs << " maxnumeric = \"" << q.maxnumeric << "\"\n";
    112114  outs << " sortfield = \"" << q.sortfield << "\"\n";
     115  outs << " fuzzysearch = \"" << q.fuzzysearch << "\"\n";
    113116  outs << "\n";
    114117
  • trunk/gsdl/src/colservr/queryinfo.h

    r12380 r12388  
    6767  int maxnumeric;
    6868  text_t sortfield; // Field to use for sorting result set (currently used by lucene)
     69  int fuzzysearch; // Should search be fuzzy (only used by Lucene)
    6970
    7071  queryparamclass ();
  • trunk/gsdl/src/recpt/queryaction.cpp

    r12380 r12388  
    436436  arg_ainfo.defaultstatus = cgiarginfo::weak;
    437437  arg_ainfo.argdefault = g_EmptyText;
     438  arg_ainfo.savedarginfo = cgiarginfo::must;
     439  argsinfo.addarginfo (NULL, arg_ainfo);
     440
     441  // "fuzzy" controls whether the search is fuzzy logic or not
     442  // (only implemented for Lucene collection... umm.. ever).
     443  arg_ainfo.shortname = "fuzzy";
     444  arg_ainfo.longname = "is this search be fuzzy";
     445  arg_ainfo.multiplechar = false;
     446  arg_ainfo.defaultstatus = cgiarginfo::weak;
     447  arg_ainfo.argdefault = "0";
    438448  arg_ainfo.savedarginfo = cgiarginfo::must;
    439449  argsinfo.addarginfo (NULL, arg_ainfo);
  • trunk/gsdl/src/recpt/querytools.cpp

    r12276 r12388  
    146146    request.filterOptions.push_back (option);
    147147  }
     148
     149  // sort field for lucene
     150  option.name = "FuzzySearch";
     151  option.value = (args.getintarg("fuzzy")) ? "true" : "false";
     152  request.filterOptions.push_back (option);
    148153
    149154  set_more_queryfilter_options (request, args);
Note: See TracChangeset for help on using the changeset viewer.