0

データの分類について質問があります。これは、Google の PageRank の目標に似ていると思います。クエリを分類して、最適な結果を返すにはどうすればよいでしょうか?

ビジネス上の問題を説明するためにシナリオを単純化しました。

市場にいくつかの家があり、列挙型を「フラグ」または「オプション」として使用して家のオブジェクトに割り当てるとします。この例は、優れた設計に関するものではなく、顧客の要求に基づいて、ある家を他の家よりも優先するプログラムによる解決策に関するものです。

下部に見られるように、顧客は多くの同じ要望を組み合わせたり、組み合わせたりすることがよくあります。したがって、何千もの if/else や switch ステートメントに頼らずに、どの家が最もマッチするかを見つける必要があります。

出来ますか?

フラグ/オプション:

enum RoomTypes
{
    Bathroom,
    Bedroom,
    Livingroom,
    Study
}

enum Nearby
{
    School,
    Hospital,
    ShoppingMall,
    Park,
    Trainstation
}

enum Features
{
    Airconditioning,
    Garage,
    Garden,
    Storage,
    Basement
}

クラス:

class House
{
    public IEnumerable<RoomTypes> RoomTypes {get; set;}
    public IEnumerable<Nearby> Nearby {get; set;}
    public IEnumerable<Features> Features {get; set;}
}

==============

利用可能な家が 2 つあります。

var bigHouse = new House 
{ 
    RoomTypes = new IEnumerable<RoomTypes>{ RoomTypes.Bathroom, RoomTypes.Bedroom, RoomTypes.Study };
    Nearby = new IEnumerable<Nearby>{ Nearby.School, Nearby.Park, Nearby.ShoppingMall };
    Features = new IEnumerable<Features>{ Features.Airconditioning, Features.Storage, Features.Garden };
}

var smallHouse = new House 
{ 
    RoomTypes = new IEnumerable<RoomTypes>{ RoomTypes.Livingroom, RoomTypes.Bedroom };
    Nearby = new IEnumerable<Nearby>{ Nearby.Trainstation };
    Features = new IEnumerable<Features>{ Features.Airconditioning };
}

==============

ユースケース: クライアントはオプションに基づいて住宅を申請します。

クライアントA:

  • 部屋タイプ: バスルーム、ベッドルーム
  • 周辺: 公園、ショッピングモール、学校
  • 特徴: エアコン、地下室、庭

クライアント B:

  • 部屋タイプ: ベッドルーム、バスルーム
  • 周辺: ショッピングモール、駅
  • 特徴: エアコン、ガレージ

問題は、利用可能な住宅に基づいてアプリケーションをどのように評価するかです。

4

1 に答える 1