2

私の検索エンジンは、次の関数を使用して関連性を計算します。

private static int calculateScore(String result, String searchStr, int modifier) 
{
    String[] resultWords = result.split(" ");
    String[] searchWords = searchStr.split(" ");

    int score = 0;
    for (String searchWord : searchWords) 
    {
        for (String resultWord : resultWords) 
        {
            if (resultWord.equals(searchWord))
                score += 10;
            else if (resultWord.startsWith(searchWord))
                score += 4;
            else if (resultWord.endsWith(searchWord))
                score += 3;
            else if (resultWord.contains(searchWord))
                score += 1;
        }

    }
    return score;
}

派手なことは何もないし、派手なことをするのに十分な時間も与えられていない. 速度の最適化について言及する必要はありません。これは関数の「機能部分」にすぎません:)

ありがとう。

4

7 に答える 7

1

あなたは出来る:

  • ノイズ ワード (the、a、at など) を除外します。
  • 検索可能なテキストの関連性の重みを変更する - 検索語がドキュメントのタイトルと本文にある場合、タイトルの方が関連性が高い可能性があります。
  • 結果の単語のテキストに応じて、テキストの前後の単語に重みを追加することを検討してください。
  • ユニークな検索語の一致をより価値のあるものにします (単語がユニークである理由を判断する必要があります)。
于 2009-05-27T15:09:39.903 に答える