|
|
@@ -121,11 +121,37 @@ bool ExpressionClassifyEngine::ClassifyExpression(COTSParticlePtr particle, CPos
|
|
|
auto matchedItem = matchedItems[0];
|
|
|
for (auto itm : matchedItems)
|
|
|
{
|
|
|
-
|
|
|
- if (itm->GetExpressionStr().size() > matchedItem->GetExpressionStr().size())
|
|
|
+ if(itm->GetGrpID() ==0 && matchedItem->GetGrpID()==0)
|
|
|
{
|
|
|
- matchedItem = itm;
|
|
|
+ //choose the most detailed one.
|
|
|
+ if (itm->GetExpressionStr().size() > matchedItem->GetExpressionStr().size())
|
|
|
+ {
|
|
|
+ matchedItem = itm;
|
|
|
+ }
|
|
|
+ continue;
|
|
|
}
|
|
|
+ if(itm->GetGrpID()>0 )
|
|
|
+ {
|
|
|
+ if(itm->GetGrpID()<matchedItem->GetGrpID())
|
|
|
+ {
|
|
|
+ //choose the item with the smallest group id first.
|
|
|
+ matchedItem = itm;
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ else if(itm->GetGrpID() == matchedItem->GetGrpID())
|
|
|
+ {
|
|
|
+ //choose the most detailed one.
|
|
|
+ if (itm->GetExpressionStr().size() > matchedItem->GetExpressionStr().size())
|
|
|
+ {
|
|
|
+ matchedItem = itm;
|
|
|
+ }
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
|
|
|
}
|
|
|
particle->SetBasicClassifyId(OTS_PARTICLE_BASIC_CLASSIFY::IDENTIFIED);
|