Changeset 29558


Ignore:
Timestamp:
2014-12-08T14:46:32+13:00 (9 years ago)
Author:
kjdon
Message:

work around does_paging, does_chunking. only add in maxdocs, hitsperpage params if the service actually uses them. lucnee/solr, don't use maxdocs any more. I haven't had a chance to clean up the changes, but I need to commit, so there may be extraneous debug statements still here.

Location:
main/trunk/greenstone3/src/java/org/greenstone/gsdl3/service
Files:
11 edited

Legend:

Unmodified
Added
Removed
  • main/trunk/greenstone3/src/java/org/greenstone/gsdl3/service/AbstractGS2FieldSearch.java

    r29318 r29558  
    328328
    329329                addCustomQueryParams(param_list, lang);
    330                 createParameter(MAXDOCS_PARAM, param_list, lang);
    331330                if (!default_index_subcollection.equals(""))
    332331                {
     
    338337                }
    339338
     339                if (does_chunking) {
     340                  createParameter(MAXDOCS_PARAM, param_list, lang);
     341                }
    340342                if (does_paging)
    341343                {
     
    361363            {
    362364                addCustomQueryParamsAdvField(param_list, lang);
    363                 createParameter(MAXDOCS_PARAM, param_list, lang);
    364365                if (!default_index_subcollection.equals(""))
    365366                {
     
    394395                {
    395396                    createParameter(FIELD_ACCENT_PARAM, multiparam, lang);
     397                }
     398                if (does_chunking) {
     399                  createParameter(MAXDOCS_PARAM, param_list, lang);
    396400                }
    397401                if (does_paging)
     
    673677
    674678        // add a metadata item to specify docs returned
    675         int docs_returned = docs.length;
    676         if (does_paging)
    677         {
     679        if (does_chunking) // this means we have a max docs param, and might ask for only a subset of results
     680        {
     681          logger.error("does_chunking = true");
     682                int docs_returned = docs.length;
    678683            String maxdocs_str = (String) params.get(MAXDOCS_PARAM);
    679684            if (maxdocs_str != null)
    680685            {
    681686                int maxdocs = Integer.parseInt(maxdocs_str);
    682                 docs_returned = (maxdocs < (int) totalDocs ? maxdocs : (int) totalDocs);
    683             }
    684         }
    685         GSXML.addMetadata(metadata_list, "numDocsReturned", "" + docs_returned);
     687                if (maxdocs > 0) { // maxdocs==-1 means return all
     688                  docs_returned = (maxdocs < (int) totalDocs ? maxdocs : (int) totalDocs);
     689                }
     690            }
     691            GSXML.addMetadata(metadata_list, "numDocsReturned", "" + docs_returned);
     692        }
     693       
    686694
    687695        // add a metadata item to specify what actual query was done - eg if stuff was stripped out etc. and then we can use the query later, cos we don't know which parameter was the query
  • main/trunk/greenstone3/src/java/org/greenstone/gsdl3/service/AbstractGS2TextSearch.java

    r28966 r29558  
    117117
    118118        // do we support any of the extended features?
    119         does_chunking = true;
     119        //does_chunking = true;
    120120
    121121        // Get the default index out of <defaultIndex> (buildConfig.xml)
  • main/trunk/greenstone3/src/java/org/greenstone/gsdl3/service/AbstractSearch.java

    r29426 r29558  
    2828import org.greenstone.gsdl3.util.GSPath;
    2929import org.greenstone.gsdl3.util.GSXML;
     30import org.greenstone.gsdl3.util.XMLConverter;
    3031import org.w3c.dom.Document;
    3132import org.w3c.dom.Element;
     
    7677    protected String default_index = "";
    7778
     79  protected Element service_metadata_list = null;
    7880  protected HashMap<String, String> paramDefaults = null;
    7981
     
    8183    {
    8284      paramDefaults = new HashMap<String, String>();
    83       paramDefaults.put(MAXDOCS_PARAM, "100");
    84       paramDefaults.put(HITS_PER_PAGE_PARAM, "20");
    85       paramDefaults.put(START_PAGE_PARAM, "1");
    8685    }
    8786
     
    111110        tq_service.setAttribute(GSXML.NAME_ATT, QUERY_SERVICE);
    112111        this.short_service_info.appendChild(tq_service);
     112
     113        // load up paging defaults
     114        if (does_chunking) {
     115          paramDefaults.put(MAXDOCS_PARAM, "100");
     116        }
     117        if (does_paging) {
     118          paramDefaults.put(HITS_PER_PAGE_PARAM, "20");
     119          paramDefaults.put(START_PAGE_PARAM, "1");
     120        }
    113121
    114122        // load up any search param defaults
     
    208216            tq_service.appendChild(param_list);
    209217        }
     218        if (subset == null || subset.equals(GSXML.METADATA_ELEM + GSXML.LIST_MODIFIER)) {
     219
     220          if (service_metadata_list == null) {
     221            Document ml_doc = XMLConverter.newDOM();
     222            service_metadata_list = ml_doc.createElement(GSXML.METADATA_ELEM+GSXML.LIST_MODIFIER);
     223            if (does_paging) {
     224              service_metadata_list.appendChild(GSXML.createMetadataElement(ml_doc, "does_paging", "true"));
     225            }
     226          }
     227          tq_service.appendChild(doc.importNode(service_metadata_list, true));
     228        }
    210229        return tq_service;
    211230
  • main/trunk/greenstone3/src/java/org/greenstone/gsdl3/service/FedoraSearch.java.tmp

    r28969 r29558  
    9191    tq_service.setAttribute(GSXML.NAME_ATT, QUERY_SERVICE);
    9292    this.short_service_info.appendChild(tq_service);
    93     //does_paging = true;
    9493   
    9594    // add some format info to service map if there is any
  • main/trunk/greenstone3/src/java/org/greenstone/gsdl3/service/GS2LuceneSearch.java

    r29544 r29558  
    4141public class GS2LuceneSearch extends SharedSoleneGS2FieldSearch
    4242{
     43
    4344  protected static final String SORT_ORDER_PARAM = "reverseSort";
    4445  protected static final String SORT_ORDER_REVERSE = "1";
     
    5152    public GS2LuceneSearch()
    5253    {
     54      does_paging = true;
    5355        paramDefaults.put(SORT_ORDER_PARAM, SORT_ORDER_NORMAL);
    5456        this.lucene_src = new GS2LuceneQuery();
     
    98100   
    99101  }
     102   
    100103    /** methods to handle actually doing the query */
    101104
     
    108111        String physical_index_language_name = null;
    109112        String physical_sub_index_name = null;
    110         int maxdocs = Integer.parseInt(paramDefaults.get(MAXDOCS_PARAM));
    111113        int hits_per_page = Integer.parseInt(paramDefaults.get(HITS_PER_PAGE_PARAM));
    112114        int start_page = Integer.parseInt(paramDefaults.get(START_PAGE_PARAM));
    113115        String sort_field = getLuceneSort(default_sort);
    114116        String sort_order = paramDefaults.get(SORT_ORDER_PARAM);
     117           
    115118        // set up the query params
    116119        Set entries = params.entrySet();
     
    122125            String value = (String) m.getValue();
    123126
    124             if (name.equals(MAXDOCS_PARAM) && !value.equals(""))
    125             {
    126                 maxdocs = Integer.parseInt(value);
    127             }
    128             else if (name.equals(HITS_PER_PAGE_PARAM))
    129             {
    130                 hits_per_page = Integer.parseInt(value);
     127            if (name.equals(HITS_PER_PAGE_PARAM))
     128            {
     129              if (value.equals("all")) {
     130                hits_per_page = -1;
     131              } else {
     132                hits_per_page = Integer.parseInt(value);
     133              }
    131134            }
    132135            else if (name.equals(START_PAGE_PARAM))
     
    177180        // set up start and end results if necessary
    178181        int start_results = 1;
    179         if (start_page != 1)
     182        if (start_page > 1 && hits_per_page > 0)
    180183        {
    181184            start_results = ((start_page - 1) * hits_per_page) + 1;
    182185        }
    183         int end_results = hits_per_page * start_page;
     186        int end_results = Integer.MAX_VALUE;
     187        if (hits_per_page > 0) {
     188          end_results = hits_per_page * start_page;
     189        }
    184190        this.lucene_src.setStartResults(start_results);
    185191        this.lucene_src.setEndResults(end_results);
  • main/trunk/greenstone3/src/java/org/greenstone/gsdl3/service/GS2MGPPSearch.java

    r29409 r29558  
    5353    public GS2MGPPSearch()
    5454    {
     55      does_chunking = true;
    5556        if (mgpp_src == null)
    5657        {
     
    9091        mgpp_src.setReturnTerms(true);
    9192        mgpp_src.setMaxNumeric(this.maxnumeric);
     93        // mgpp internal default is 50, so set it here so the interface params agree
     94        paramDefaults.put(MAXDOCS_PARAM, "50");
    9295        return true;
    9396    }
  • main/trunk/greenstone3/src/java/org/greenstone/gsdl3/service/GS2MGSearch.java

    r28966 r29558  
    5656    /** constructor */
    5757    public GS2MGSearch () {
     58        does_chunking = true;
    5859    if(this.mg_src == null){
    5960        this.mg_src = new MGSearchWrapper ();
     
    7071            return false;
    7172        }
    72        
    7373        this.mg_src.setMaxNumeric (this.maxnumeric);
     74    // internally mg uses 50, so set this here
     75    paramDefaults.put(MAXDOCS_PARAM, "50");
    7476        return true;
    7577    }
  • main/trunk/greenstone3/src/java/org/greenstone/gsdl3/service/GoogleNgramMGPPSearch.java

    r28181 r29558  
    3131/**
    3232 *
    33  * @author <a href="mailto:[email protected]">Shaoqun Wu</a>
     33 * @author Shaoqun Wu
    3434 */
    3535
     
    4242    /** constructor */
    4343    public GoogleNgramMGPPSearch(){
    44     super();   
     44    this.does_paging = true;
    4545    }
    4646   
     
    5454    this.default_hits_per_page = "30";
    5555        this.does_stem = false;
    56     this.does_paging = true;
    5756    return true;
    5857    }
  • main/trunk/greenstone3/src/java/org/greenstone/gsdl3/service/GoogleSearch.java.tmp

    r28969 r29558  
    5656    public GoogleSearch()
    5757    {
     58    does_paging = true;
     59    does_chunking = false;
    5860      QUERY_SERVICE = "TextQuery";
    5961    }
     
    7880    }
    7981   
    80     does_paging = true;
    81     does_chunking = false;
    8282
    8383    // are we behind a proxy??
  • main/trunk/greenstone3/src/java/org/greenstone/gsdl3/service/IViaSearch.java

    r28966 r29558  
    4141    public IViaSearch()
    4242    {
     43    does_paging = true;
     44    does_multi_index_search = true;
    4345    }
    4446   
     
    6062        return false;
    6163    }
    62     does_paging = true;
    63     does_multi_index_search = true;
    6464    this.default_index = ",kw,au,su,ti,de,fu,"; // all of them
    6565    index_ids = new ArrayList<String>();
  • main/trunk/greenstone3/src/java/org/greenstone/gsdl3/service/SharedSoleneGS2FieldSearch.java

    r29543 r29558  
    4949    public SharedSoleneGS2FieldSearch()
    5050    {
    51       super();
     51        does_paging = true;
     52        does_chunking = false; // actually it can but we don't want to do a max docs, as we are already paging results
     53
    5254        // Lucene/Solr uses double operators, not single
    5355        //AND_OPERATOR = "&&";
     
    5759        NOT_OPERATOR = "NOT";
    5860
    59         does_paging = true;
    60         does_chunking = true;
    6161    }
    6262
Note: See TracChangeset for help on using the changeset viewer.