- Timestamp:
- 2008-05-28T16:16:17+12:00 (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
gsdl/trunk/src/colservr/sqlbrowsefilter.cpp
r15757 r15764 111 111 } 112 112 113 // Request for the metadata values assigned to an element 113 114 if ((request.filterResultOptions & FRmetadataValues) && !request.fields.empty()) 114 115 { 115 116 text_t metadata_element_name = *(request.fields.begin()); 116 logout << text_t2ascii << "Requesting metadata values for " << metadata_element_name << "...\n";117 117 text_tarray metadata_values = sql_db_ptr->getmetadatavalues (metadata_element_name); 118 119 // Create a map from metadata value to ResultDocInfo_t, to remove duplicate values and obtain occurrence counts 120 map<text_t, ResultDocInfo_t> unique_metadata_values_map; 118 121 text_tarray::iterator metadata_value_iterator = metadata_values.begin(); 119 122 while (metadata_value_iterator != metadata_values.end()) 120 123 { 121 ResultDocInfo_t metadata_value_result_doc; 122 metadata_value_result_doc.OID = *metadata_value_iterator; 123 response.docInfo.push_back (metadata_value_result_doc); 124 text_t metadata_value = *metadata_value_iterator; 125 126 // If no ResultDocInfo_t has already been created for this metadata value, create one now 127 if (unique_metadata_values_map.find(metadata_value) == unique_metadata_values_map.end()) 128 { 129 ResultDocInfo_t metadata_value_result_doc; 130 metadata_value_result_doc.OID = metadata_value; 131 metadata_value_result_doc.result_num = 1; 132 unique_metadata_values_map[metadata_value] = metadata_value_result_doc; 133 } 134 // Otherwise we've seen this value before, so just update the occurrence count 135 else 136 { 137 unique_metadata_values_map[metadata_value].result_num++; 138 } 124 139 125 140 metadata_value_iterator++; 141 } 142 143 // Fill in response.docInfo with the ResultDocInfo_t objects we've created above 144 map<text_t, ResultDocInfo_t>::iterator unique_metadata_values_iterator = unique_metadata_values_map.begin(); 145 while (unique_metadata_values_iterator != unique_metadata_values_map.end()) 146 { 147 response.docInfo.push_back ((*unique_metadata_values_iterator).second); 148 unique_metadata_values_iterator++; 126 149 } 127 150 }
Note:
See TracChangeset
for help on using the changeset viewer.