- Timestamp:
- 1999-12-13T15:55:49+13:00 (24 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/gsdl/src/colservr/browsefilter.cpp
r722 r829 28 28 /* 29 29 $Log$ 30 Revision 1.9 1999/12/13 02:55:49 davidb 31 Support for docs/sections with more than one metavalue for a metadata name 32 30 33 Revision 1.8 1999/10/19 03:23:39 davidb 31 34 Collection building support through web pages … … 206 209 // insert the last result in the set 207 210 if (!tmptext.empty()) resultset.push_back (tmptext); 208 209 // do an intersection with the input set 210 if (!request.docSet.empty()) { 211 intersect (resultset, request.docSet); 212 } 211 212 text_tarray offset_resultset; 213 text_t &md_type = info["mdtype"]; 214 if (!md_type.empty()) 215 { 216 text_t &md_offset = info["mdoffset"]; 217 if (!md_offset.empty()) 218 { 219 text_t offsettext; 220 221 text_t::iterator offset_here = md_offset.begin(); 222 text_t::iterator offset_end = md_offset.end(); 223 while (offset_here != offset_end) 224 { 225 if (*offset_here == ';') 226 { 227 if (offsettext.empty()) 228 { 229 offset_resultset.push_back ("0"); 230 } 231 else 232 { 233 offset_resultset.push_back (offsettext); 234 } 235 offsettext.clear(); 236 } 237 else 238 { 239 offsettext.push_back(*offset_here); 240 } 241 242 offset_here++; 243 } 244 // insert the last result in the set 245 if (!offsettext.empty()) offset_resultset.push_back (offsettext); 246 } 247 else 248 { 249 // add 0 offset for each 'contains' entry 250 text_tarray::iterator result_here = resultset.begin(); 251 text_tarray::iterator result_end = resultset.end(); 252 while (result_here != result_end) { 253 offset_resultset.push_back("0"); 254 result_here++; 255 } 256 } 257 258 // do an intersection with the input set 259 if (!request.docSet.empty()) { 260 261 text_tarray intersect_resultset; 262 text_tarray intersect_offset_resultset; 263 264 text_tarray::const_iterator resultset_here = resultset.begin(); 265 text_tarray::const_iterator resultset_end = resultset.end(); 266 text_tarray::const_iterator offset_resultset_here = offset_resultset.begin(); 267 268 while (resultset_here != resultset_end) { 269 if (in_set (request.docSet, *resultset_here)) 270 { 271 intersect_resultset.push_back (*resultset_here); 272 intersect_offset_resultset.push_back (*offset_resultset_here); 273 } 274 resultset_here ++; 275 offset_resultset_here ++; 276 } 277 resultset = intersect_resultset; 278 offset_resultset = intersect_offset_resultset; 279 } 280 } 281 else 282 { 283 // do an intersection with the input set 284 if (!request.docSet.empty()) { 285 intersect (resultset, request.docSet); 286 } 287 } 213 288 214 289 // create the response … … 218 293 text_tarray::iterator result_here = resultset.begin(); 219 294 text_tarray::iterator result_end = resultset.end(); 295 text_tarray::iterator offset_result_here = offset_resultset.begin(); 220 296 221 297 while (result_here != result_end) { … … 223 299 if (resultnum >= startresults) { 224 300 resultdoc.OID = (*result_here); 301 if (!md_type.empty()) 302 { 303 resultdoc.classifier_metadata_type = md_type; 304 resultdoc.classifier_metadata_offset = offset_result_here->getint(); 305 } 225 306 response.docInfo.push_back(resultdoc); 226 307 } … … 228 309 resultnum++; 229 310 result_here++; 311 if (!md_type.empty()) offset_result_here++; 230 312 } 231 313 }
Note:
See TracChangeset
for help on using the changeset viewer.