Exemplo n.º 1
0
        public double Evaluate(string firstWord, string secondWord)
        {
            double rank = 0d;

            switch (Type)
            {
            case FactorType.Constant:
                rank = ConstantValue;
                break;

            case FactorType.SimilarityMetric:
                rank = SimilarityMetric.GetSimilarity(firstWord, secondWord);
                break;

            case FactorType.Expression:
                rank = Expression.Evaluate(firstWord, secondWord);
                break;

            case FactorType.Function:
                switch (FunctionType)
                {
                case FactorFunctionType.MaxLength:
                    rank = Math.Max(firstWord.Length, secondWord.Length);
                    break;

                case FactorFunctionType.MinLength:
                    rank = Math.Min(firstWord.Length, secondWord.Length);
                    break;

                case FactorFunctionType.SumLength:
                    rank = firstWord.Length + secondWord.Length;
                    break;

                case FactorFunctionType.FirstLength:
                    rank = firstWord.Length;
                    break;

                case FactorFunctionType.SecondLength:
                    rank = secondWord.Length;
                    break;
                }
                break;
            }
            return(rank);
        }