Changeset 16058 for gsdl


Ignore:
Timestamp:
2008-06-18T17:11:11+12:00 (16 years ago)
Author:
mdewsnip
Message:

(Adding dynamic classifiers) Merged process_metadata_values() into output_child_classifier_nodes() because this is the only place it is used.

Location:
gsdl/trunk/src/recpt
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • gsdl/trunk/src/recpt/dynamicclassifieraction.cpp

    r16057 r16058  
    370370  }
    371371
    372   // After processing any hierarchical metadata values, we're left with the child classifer nodes
    373   map<text_t, int, lttext_t> child_classifier_nodes = process_metadata_values (classifier_options, metadata_values_response.docInfo);
     372  // After processing any hierarchical metadata values we're left with the child classifer nodes
     373  map<text_t, int, lttext_t> child_classifier_nodes;
     374  text_t current_position = args["dcn"];
     375  ResultDocInfo_tarray::iterator metadata_value_iterator = metadata_values_response.docInfo.begin();
     376  while (metadata_value_iterator != metadata_values_response.docInfo.end())
     377  {
     378    text_t metadata_value = (*metadata_value_iterator).OID;
     379
     380    // If we're not at the top-level we need to remove the current position from the metadata values
     381    if (current_position != "" && starts_with(metadata_value, current_position + "|"))
     382    {
     383      metadata_value = substr(metadata_value.begin() + (current_position + "|").size(), metadata_value.end());
     384    }
     385
     386    // Is this metadata value hierarchical?
     387    text_t::iterator hierarchy_split_position = findchar(metadata_value.begin(), metadata_value.end(), '|');
     388    if (hierarchy_split_position != metadata_value.end())
     389    {
     390      // Yes, so use the first part of the hierarchy only
     391      metadata_value = substr(metadata_value.begin(), hierarchy_split_position);
     392    }
     393
     394    // Create a node for this metadata value if we haven't seen it before
     395    if (child_classifier_nodes.find(metadata_value) == child_classifier_nodes.end())
     396    {
     397      child_classifier_nodes[metadata_value] = 0;
     398    }
     399
     400    // Increment the occurrence count
     401    child_classifier_nodes[metadata_value] += (*metadata_value_iterator).result_num;
     402
     403    metadata_value_iterator++;
     404  }
    374405
    375406  // Display the child classifier nodes
     
    387418    child_classifier_nodes_iterator++;
    388419  }
    389 }
    390 
    391 
    392 map<text_t, int, lttext_t> dynamicclassifieraction::process_metadata_values (text_tmap classifier_options,
    393                                          ResultDocInfo_tarray metadata_values)
    394 {
    395   map<text_t, int, lttext_t> metadata_values_grouped;
    396 
    397   text_t current_position = classifier_options["current_position"];
    398   ResultDocInfo_tarray::iterator metadata_value_iterator = metadata_values.begin();
    399   while (metadata_value_iterator != metadata_values.end())
    400   {
    401     text_t metadata_value = (*metadata_value_iterator).OID;
    402 
    403     // If we're not at the top-level we need to remove the current position from the metadata values
    404     if (current_position != "" && starts_with(metadata_value, current_position + "|"))
    405     {
    406       metadata_value = substr(metadata_value.begin() + (current_position + "|").size(), metadata_value.end());
    407     }
    408 
    409     // Is this metadata value hierarchical?
    410     text_t::iterator hierarchy_split_position = findchar(metadata_value.begin(), metadata_value.end(), '|');
    411     if (hierarchy_split_position != metadata_value.end())
    412     {
    413       // Yes, so use the first part of the hierarchy only
    414       metadata_value = substr(metadata_value.begin(), hierarchy_split_position);
    415     }
    416 
    417     // Create a node for this metadata value if we haven't seen it before
    418     if (metadata_values_grouped.find(metadata_value) == metadata_values_grouped.end())
    419     {
    420       metadata_values_grouped[metadata_value] = 0;
    421     }
    422 
    423     // Increment the occurrence count
    424     metadata_values_grouped[metadata_value] += (*metadata_value_iterator).result_num;
    425 
    426     metadata_value_iterator++;
    427   }
    428 
    429   return metadata_values_grouped;
    430420}
    431421
  • gsdl/trunk/src/recpt/dynamicclassifieraction.h

    r16057 r16058  
    8585                      ostream &textout, ostream &logout);
    8686
    87   map<text_t, int, lttext_t> process_metadata_values (text_tmap classifier_options,
    88                               ResultDocInfo_tarray metadata_values);
    89 
    9087  void display_classifier_node (text_t classifier_node_OID, text_t classifier_node_label,
    9188                text_t classifier_node_numleafdocs, int classifier_node_indent,
Note: See TracChangeset for help on using the changeset viewer.