Changeset 3862 for trunk/gsdl3/src
- Timestamp:
- 2003-03-12T15:04:12+13:00 (21 years ago)
- Location:
- trunk/gsdl3/src/java/org/greenstone/gsdl3/service
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/gsdl3/src/java/org/greenstone/gsdl3/service/GS2MGPPRetrieve.java
r3851 r3862 100 100 result.setAttribute(GSXML.FROM_ATT, from); 101 101 result.setAttribute(GSXML.TYPE_ATT, GSXML.REQUEST_TYPE_PROCESS); 102 Element result_content = doc_.createElement(GSXML.CONTENT_ELEM);103 result.appendChild(result_content);102 //Element result_content = doc_.createElement(GSXML.CONTENT_ELEM); 103 //result.appendChild(result_content); 104 104 105 // Get the parameters of the request 106 Element param_list = (Element) GSXML.getChildByTagName(request, GSXML.PARAM_ELEM+GSXML.LIST_MODIFIER); 107 if (param_list == null) { 108 System.err.println("GS2MGPPRetrieve, DocumentContentRetrieve Error: missing paramList.\n"); 109 return result; // Return the empty result 110 } 105 // Get the parameters of the request - not used at the moment 106 //Element param_list = (Element) GSXML.getChildByTagName(request, GSXML.PARAM_ELEM+GSXML.LIST_MODIFIER); 111 107 112 String level = default_level_; 113 114 // Process the request parameters 115 // are there any??? 116 Element param = (Element) param_list.getFirstChild(); 117 while (param != null) { 118 if (!param.getNodeName().equals(GSXML.PARAM_ELEM)) { 119 System.err.println("Warning: Non-param in paramList (ignored)."); 120 } 121 else { 122 // this looks for a level param but I think we dont use it 123 if (param.getAttribute(GSXML.NAME_ATT) == LEVEL_PARAM) { 124 level = GSXML.getValue(param); 125 System.out.println("Level: " + level); 126 } 127 } 128 129 param = (Element) param.getNextSibling(); 130 } 131 132 // Get the request content 133 Element content = (Element) GSXML.getChildByTagName(request, GSXML.CONTENT_ELEM); 134 if (content == null) { 135 System.err.println("Error: DocumentContentRetrieve request had no content.\n"); 108 // Get the request doc_list 109 Element query_doc_list = (Element) GSXML.getChildByTagName(request, GSXML.DOC_NODE_ELEM+GSXML.LIST_MODIFIER); 110 if (query_doc_list == null) { 111 System.err.println("Error: DocumentContentRetrieve request specified no doc nodes.\n"); 136 112 return result; 137 113 } 138 114 139 Element doc_list = doc_.createElement(GSXML.DOC UMENT_ELEM+GSXML.LIST_MODIFIER);140 result _content.appendChild(doc_list);115 Element doc_list = doc_.createElement(GSXML.DOC_NODE_ELEM+GSXML.LIST_MODIFIER); 116 result.appendChild(doc_list); 141 117 142 118 // The location of the MGPP text files … … 145 121 146 122 // Get the documents 147 String[] doc_ids = GSXML.getDocumentNameList(content); 123 //String[] doc_ids = GSXML.getDocumentNameList(content); 124 String[] doc_ids = GSXML.getAttributeValuesFromList(query_doc_list, 125 GSXML.DOC_NODE_ID_ATT); 148 126 for (int i = 0; i < doc_ids.length; i++) { 149 127 String doc_id = doc_ids[i]; 150 128 long doc_num = gdbm_src_.oid2Docnum(doc_id); 151 String doc_content = mgpp_src_.getDocument(basedir, textdir, level, doc_num);129 String doc_content = mgpp_src_.getDocument(basedir, textdir, default_level_, doc_num); 152 130 153 131 // For now, stick it in a text node - eventually should be parsed as xml?? 154 Element doc = GSXML.createDocumentElement(doc_, doc_id); 132 133 Element doc = doc_.createElement(GSXML.DOC_NODE_ELEM); 134 doc.setAttribute(GSXML.DOC_NODE_ID_ATT, doc_id); 155 135 GSXML.addDocText(doc_, doc, doc_content); 156 136 doc_list.appendChild(doc); 137 157 138 } 158 139 159 140 return result; 160 141 } -
trunk/gsdl3/src/java/org/greenstone/gsdl3/service/GS2MGPPSearch.java
r3851 r3862 54 54 private static final String LEVEL_PARAM = "level"; 55 55 private static final String RANK_PARAM = "sortBy"; 56 private static final String RANK_PARAM_RANK = " rank";57 private static final String RANK_PARAM_NONE = " natural";56 private static final String RANK_PARAM_RANK = "1"; 57 private static final String RANK_PARAM_NONE = "0"; 58 58 private static final String SIMPLE_FIELD_PARAM = "simpleField"; 59 59 private static final String ADVANCED_FIELD_PARAM = "complexField"; … … 105 105 106 106 // the default level is also the level which gdbm is expecting 107 // this must not be overwritten 107 108 mgpp_src_.setReturnLevel(default_level_); 109 // return term info 108 110 mgpp_src_.setReturnTerms(true); 111 // set the default - this may be overwritten by query params 109 112 mgpp_src_.setQueryLevel(default_level_); 110 113 111 // set up which services are available for this collection 112 // these entries should reflect the build config file - some services may not be available depending on how the collection was built. 113 114 // set up the extra services which are available for this collection 115 // check the config info - if there is no field list, then there is no fielded searching 116 117 Element field_list = (Element) GSXML.getChildByTagName(info, GSXML.FIELD_ELEM+GSXML.LIST_MODIFIER); 118 if (field_list==null) { 119 // nothing more to do 120 return true; 121 } 122 // else set up the fielded query services 123 114 124 // set up short_service_info_ - for now just has name and type 115 125 Element fq_service = doc_.createElement(GSXML.SERVICE_ELEM); … … 123 133 short_service_info_.appendChild(afq_service); 124 134 125 // set up service_info_map_ - for now, just has the same elements as above126 // should have full details about each serviceincl params lists etc.135 // set up service_info_map_ has full details about each service 136 // incl params lists etc. 127 137 Element fq_service_full = (Element) fq_service.cloneNode(true); 128 138 Element fq_param_list = doc_.createElement(GSXML.PARAM_ELEM+GSXML.LIST_MODIFIER); … … 144 154 protected void createParameter(String name, Element param_list, boolean display, String lang) { 145 155 Element param=null; 146 147 if (name.equals(INDEX_PARAM)) { 148 // the index info - read from config file 149 Element index_list = (Element)GSXML.getChildByTagName(config_info_, INDEX_ELEM+GSXML.LIST_MODIFIER); 150 NodeList indexes = index_list.getElementsByTagName(INDEX_ELEM); 151 int len = indexes.getLength(); 152 if (len > 1) { // add index param to list only if more than one index specified 153 String [] inds = new String[len]; 154 String [] ind_names = new String[len]; 155 for (int i=0; i<len; i++) { 156 inds[i] = ((Element)indexes.item(i)).getAttribute(GSXML.NAME_ATT); 157 if (display) { 158 Element disp = (Element)GSXML.getChildByTagName(indexes.item(i), GSXML.DISPLAY_ELEM); 159 ind_names[i] = GSXML.getDisplayText(disp, GSXML.DISPLAY_NAME_ELEM, lang, "en"); 160 } 161 //Element display_name = (Element)GSXML.getChildByTagName(indexes.item(i), GSXML.DISPLAYNAME_ELEM) 162 //ind_names[i] = GSXML.getNodeText((Element)GSXML.getChildByTagName(indexes.item(i), GSXML.DISPLAYNAME_ELEM)); 163 // } 164 } 165 if (display) { 166 // use the same index names for now - should get these out of the config info 167 param = GSXML.createParameterDisplay(doc_, INDEX_PARAM, getTextString("param."+INDEX_PARAM, lang), inds, ind_names); 168 } else { 169 param = GSXML.createParameter(doc_, INDEX_PARAM, GSXML.PARAM_TYPE_ENUM_SINGLE, default_index_, inds); 170 } 171 } 172 } else if (name.equals(LEVEL_PARAM)) { 156 157 if (name.equals(LEVEL_PARAM)) { 173 158 // the level info - read from config file 174 159 Element level_list = (Element)GSXML.getChildByTagName(config_info_, LEVEL_ELEM+GSXML.LIST_MODIFIER); … … 181 166 levs[i] = ((Element)levels.item(i)).getAttribute(GSXML.NAME_ATT); 182 167 if (display) { 183 String lname = "level."+levs[i]; 184 System.out.println("lname="+lname); 185 //lev_names[i] = levs[i]; 186 lev_names[i] = getTextString(lname, lang); 168 lev_names[i] = getTextString("level."+levs[i], lang); 187 169 } 188 170 } … … 196 178 String [] vals1 = {RANK_PARAM_RANK, RANK_PARAM_NONE }; 197 179 if (display) { 198 String [] vals1_texts = { getTextString("param."+RANK_PARAM+"."+RANK_PARAM_RANK, lang), 199 getTextString("param."+RANK_PARAM+"."+RANK_PARAM_NONE, lang)}; 180 String [] vals1_texts = { getTextString("param."+RANK_PARAM+"."+RANK_PARAM_RANK, lang), getTextString("param."+RANK_PARAM+"."+RANK_PARAM_NONE, lang)}; 200 181 201 182 param = GSXML.createParameterDisplay(doc_, RANK_PARAM, getTextString("param."+RANK_PARAM, lang), vals1, vals1_texts); … … 209 190 param = GSXML.createParameter(doc_, FIELD_QUERY_PARAM, GSXML.PARAM_TYPE_STRING, null, null); 210 191 } 211 212 192 213 193 } else if (name.equals(FIELD_CASE_PARAM)) { … … 243 223 f_names[i] = ((Element)fields.item(i)).getAttribute(GSXML.SHORTNAME_ATT); 244 224 if (display) { 245 // these should be changed to a text element based on lang 225 // should these be changed to a text element based on lang? 226 // or is the name of a metadata element eg dc:Title its 227 // name in all langs 246 228 f_texts[i] = ((Element)fields.item(i)).getAttribute(GSXML.NAME_ATT); 247 229 } 248 249 } 250 // String [] vals2 = {"TX", "SU", "TI", "OR"}; 251 //String [] vals2_texts = {"TextOnly", "Subject", "Title", "Organization"}; 252 230 } 253 231 if (display) { 254 232 param = GSXML.createParameterDisplay(doc_, FIELD_FIELD_PARAM, getTextString("param."+FIELD_FIELD_PARAM, lang), f_names, f_texts); … … 259 237 } 260 238 } else if (name.equals(FIELD_COMBINE_PARAM)) { 261 239 262 240 String []vals = {FIELD_COMBINE_PARAM_AND, FIELD_COMBINE_PARAM_OR, FIELD_COMBINE_PARAM_NOT}; 263 241 if (display) { … … 281 259 } 282 260 } 283 261 284 262 285 263 /** this creates all teh params and appends them to param_list. … … 375 353 } 376 354 377 // the components378 379 //the combiners380 381 382 355 if (display) { 383 356 createParameter(FIELD_COMBINE_PARAM, param_list, display, lang); … … 465 438 result.setAttribute(GSXML.FROM_ATT, from); 466 439 result.setAttribute(GSXML.TYPE_ATT, GSXML.REQUEST_TYPE_PROCESS); 467 Element result_content = doc_.createElement(GSXML.CONTENT_ELEM);468 result.appendChild(result_content);469 440 470 441 // Get the parameters of the request … … 515 486 516 487 // Create a metadata list to store information about the query results 517 Element metadata_list = GSXML.addMetaList(doc_, result); 518 488 // should we be using metadataList? or something else? 489 Element metadata_list = doc_.createElement(GSXML.METADATA_ELEM+GSXML.LIST_MODIFIER); 490 result.appendChild(metadata_list); 491 519 492 // Add a metadata element specifying the number of matching documents 520 493 long totalDocs = mqr.getTotalDocs(); … … 526 499 // Create a document list to store the matching documents, and add them 527 500 Vector docs = mqr.getDocs(); 528 Element document_list = doc_.createElement(GSXML.DOC UMENT_ELEM+GSXML.LIST_MODIFIER);529 result _content.appendChild(document_list);501 Element document_list = doc_.createElement(GSXML.DOC_NODE_ELEM+GSXML.LIST_MODIFIER); 502 result.appendChild(document_list); 530 503 for (int d = 0; d < docs.size(); d++) { 531 504 long docnum = ((MGPPDocInfo) docs.elementAt(d)).num_; … … 538 511 String query_level = (String)params.get(LEVEL_PARAM); // the current query level 539 512 Element term_list = doc_.createElement(GSXML.TERM_ELEM+GSXML.LIST_MODIFIER); 540 result _content.appendChild(term_list);513 result.appendChild(term_list); 541 514 Vector terms = mqr.getTerms(); 542 515 for (int t = 0; t < terms.size(); t++) { -
trunk/gsdl3/src/java/org/greenstone/gsdl3/service/GS2MGRetrieve.java
r3820 r3862 102 102 result.setAttribute(GSXML.FROM_ATT, from); 103 103 result.setAttribute(GSXML.TYPE_ATT, GSXML.REQUEST_TYPE_PROCESS); 104 Element result_content = doc_.createElement(GSXML.CONTENT_ELEM);105 result.appendChild(result_content);104 //Element result_content = doc_.createElement(GSXML.CONTENT_ELEM); 105 //result.appendChild(result_content); 106 106 107 // Get the parameters of the request 108 Element param_list = (Element) GSXML.getChildByTagName(request, GSXML.PARAM_ELEM+GSXML.LIST_MODIFIER); 109 if (param_list == null) { 110 System.err.println("GS2Retrieve, DocumentContentRetrieve Error: missing paramList.\n"); 111 return result; // Return the empty result 112 } 113 114 String index = default_index_; 115 116 // Process the request parameters 117 Element param = (Element) param_list.getFirstChild(); 118 while (param != null) { 119 if (!param.getNodeName().equals(GSXML.PARAM_ELEM)) { 120 System.err.println("Warning: Non-param in paramList (ignored)."); 121 } 122 else { 123 // 124 if (param.getAttribute(GSXML.NAME_ATT) == INDEX_PARAM) { 125 index = GSXML.getValue(param); 126 System.out.println("Index: " + index); 127 } 128 } 129 130 param = (Element) param.getNextSibling(); 131 } 107 // Get the parameters of the request - no parameters at this stage 108 //Element param_list = (Element) GSXML.getChildByTagName(request, GSXML.PARAM_ELEM+GSXML.LIST_MODIFIER); 132 109 133 110 // Get the request content 134 Element content = (Element) GSXML.getChildByTagName(request, GSXML.CONTENT_ELEM); 135 if (content == null) { 136 System.err.println("Error: DocumentContentRetrieve request had no content.\n"); 111 112 Element query_doc_list = (Element) GSXML.getChildByTagName(request, GSXML.DOC_NODE_ELEM+GSXML.LIST_MODIFIER); 113 if (query_doc_list == null) { 114 System.err.println("Error: DocumentContentRetrieve request specified no doc nodes.\n"); 137 115 return result; 138 116 } 139 140 Element doc_list = doc_.createElement(GSXML.DOC UMENT_ELEM+GSXML.LIST_MODIFIER);141 result _content.appendChild(doc_list);142 117 118 Element doc_list = doc_.createElement(GSXML.DOC_NODE_ELEM+GSXML.LIST_MODIFIER); 119 result.appendChild(doc_list); 120 143 121 // The location of the MG index and text files 144 122 String basedir = GSFile.collectionBaseDir(site_home_, cluster_name_) 145 + File.separatorChar; // Needed by MG123 + File.separatorChar; // Needed by MG 146 124 String textdir = GSFile.collectionTextPath(cluster_name_); 147 String indexpath = GSFile.collectionIndexPath(cluster_name_, index);148 125 // index is only needed to start up MG, not used so just use the default index 126 String indexpath = GSFile.collectionIndexPath(cluster_name_, default_index_); 149 127 mg_src_.setIndex(indexpath); 150 128 151 129 // Get the documents 152 String[] doc_ids = GSXML.getDocumentNameList(content); 130 //String[] doc_ids = GSXML.getDocumentNameList(query_doc_list); 131 String[] doc_ids = GSXML.getAttributeValuesFromList(query_doc_list, 132 GSXML.DOC_NODE_ID_ATT); 153 133 for (int i = 0; i < doc_ids.length; i++) { 154 134 String doc_id = doc_ids[i]; 155 135 long doc_num = gdbm_src_.oid2Docnum(doc_id); 156 136 String doc_content = mg_src_.getDocument(basedir, textdir, doc_num); 157 158 // For now, stick it in a text node - eventually should be parsed as xml??159 Element doc = GSXML.createDocumentElement(doc_, doc_id);137 // Stick it in a text node 138 Element doc = doc_.createElement(GSXML.DOC_NODE_ELEM); 139 doc.setAttribute(GSXML.DOC_NODE_ID_ATT, doc_id); 160 140 GSXML.addDocText(doc_, doc, doc_content); 161 141 doc_list.appendChild(doc); -
trunk/gsdl3/src/java/org/greenstone/gsdl3/service/GS2MGSearch.java
r3851 r3862 73 73 74 74 /** creates a new param element and adds it to the param list */ 75 protected void createParameter(String name, Element param_list, boolean display,76 String lang)75 protected void createParameter(String name, Element param_list, 76 boolean display, String lang) 77 77 { 78 78 Element param = null; 79 79 80 80 if (name.equals(INDEX_PARAM)) { 81 81 // the index info - read from config file … … 144 144 result.setAttribute(GSXML.FROM_ATT, from); 145 145 result.setAttribute(GSXML.TYPE_ATT, GSXML.REQUEST_TYPE_PROCESS); 146 Element result_content = doc_.createElement(GSXML.CONTENT_ELEM);147 result.appendChild(result_content);146 //Element result_content = doc_.createElement(GSXML.CONTENT_ELEM); 147 //result.appendChild(result_content); 148 148 149 149 // Get the parameters of the request … … 189 189 190 190 // Create a metadata list to store information about the query results 191 Element metadata_list = GSXML.addMetaList(doc_, result); 191 Element metadata_list = doc_.createElement(GSXML.METADATA_ELEM+GSXML.LIST_MODIFIER); 192 result.appendChild(metadata_list); 192 193 193 194 // Add a metadata element specifying the number of matching documents … … 198 199 199 200 // Create a document list to store the matching documents, and add them 200 Element document_list = doc_.createElement(GSXML.DOC UMENT_ELEM+GSXML.LIST_MODIFIER);201 result _content.appendChild(document_list);201 Element document_list = doc_.createElement(GSXML.DOC_NODE_ELEM+GSXML.LIST_MODIFIER); 202 result.appendChild(document_list); 202 203 for (int d = 0; d < docs.size(); d++) { 203 204 long docnum = ((MGDocInfo) docs.elementAt(d)).num_; … … 209 210 // Create a term list to store the term information, and add it 210 211 Element term_list = doc_.createElement(GSXML.TERM_ELEM+GSXML.LIST_MODIFIER); 211 result _content.appendChild(term_list);212 result.appendChild(term_list); 212 213 Vector terms = mqr.getTerms(); 213 214 for (int t = 0; t < terms.size(); t++) { -
trunk/gsdl3/src/java/org/greenstone/gsdl3/service/GS2Search.java
r3851 r3862 26 26 // XML classes 27 27 import org.w3c.dom.Element; 28 import org.w3c.dom.NodeList; 28 29 29 30 … … 128 129 Element param=null; 129 130 130 if (name.equals(CASE_PARAM)) { 131 if (name.equals(INDEX_PARAM)) { 132 // the index info - read from config file 133 Element index_list = (Element)GSXML.getChildByTagName(config_info_, INDEX_ELEM+GSXML.LIST_MODIFIER); 134 NodeList indexes = index_list.getElementsByTagName(INDEX_ELEM); 135 int len = indexes.getLength(); 136 if (len > 1) { // add index param to list only if more than one index specified 137 String [] inds = new String[len]; 138 String [] ind_names = new String[len]; 139 for (int i=0; i<len; i++) { 140 inds[i] = ((Element)indexes.item(i)).getAttribute(GSXML.NAME_ATT); 141 if (display) { 142 Element disp = (Element)GSXML.getChildByTagName(indexes.item(i), GSXML.DISPLAY_ELEM); 143 ind_names[i] = GSXML.getDisplayText(disp, GSXML.DISPLAY_NAME_ELEM, lang, "en"); 144 } 145 } 146 if (display) { 147 param = GSXML.createParameterDisplay(doc_, INDEX_PARAM, getTextString("param."+INDEX_PARAM, lang), inds, ind_names); 148 } else { 149 param = GSXML.createParameter(doc_, INDEX_PARAM, GSXML.PARAM_TYPE_ENUM_SINGLE, default_index_, inds); 150 } 151 } 152 } else if (name.equals(CASE_PARAM)) { 131 153 if (display) { 132 154 String[] bool_ops = {"0", "1"};
Note:
See TracChangeset
for help on using the changeset viewer.