Changeset 29558

Show
Ignore:
Timestamp:
08.12.2014 14:46:32 (4 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 modified

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:shaoqun@cs.waikato.ac.nz">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