よし人。最後に、stackoverflowコミュニティの助けを借りて、次の機能を備えた20の商用製品販売Webサイト製品ページを収集しました。
Product URL
Product Price
Product Name
Product Category
Product Page Title
Product Page Description
Product Page Keywords
今、製品のこれらの機能を使用して、私はそれらを分類する必要があります。分類とはどういう意味ですか?説明させてください。
ご想像のとおり、すべてのWebサイトに独自の方法で製品がリストされています。フォーマットはありません。つまり、iphone4が20の異なるWebサイトで20の異なる方法で販売されているとしましょう。だから私が達成する必要があるのは、これらの20のiphoneページを20の異なるWebサイトにグループ化することです。したがって、iphone 4 Wordを使用して私のWebサイトにクエリを実行すると、20件の結果が表示されます。基本的に、500.000を超える製品URLから、すべての製品をグループ化する必要があります。したがって、これらの500kURLから15gefore gtx 570カードがあるとしましょう。したがって、それらを同じ製品としてグループ化する必要があります。あなたはそれをグーグル製品として想像することができます。しかし、私はトルコである私の国でそれをやっていて、グーグルはトルコのための製品検索を持っていません。
要するに、上記の機能を使用することで、どのアルゴリズムを提案しますか。できればトレーニングテクニックは使いたくないです。すべてが自動化されました。
C#4.0 WPFを使用しており、データはMSSQL 2008R2データベースに保存されています
さまざまなフィールドの単語のインデックスを逆にしてページに戻す必要はありませんか?簡単な例として、各製品名を(たとえば、スペースで)分解し、各キーワードを正規化して(たとえば、小文字、句読点を破棄)、それを製品のURLまたはレコードにマップします。 「iphone」を検索すると、正しい結果に近づきます。製品ページのキーワードフィールドもあります。
製品のグループ化は、「iphoneケース」などのキーワードの組み合わせを検索するだけです。
もちろん、そのようなシステムを完璧にすることは非常に複雑になる可能性がありますが、基本的なロジックはここに当てはまるようです。たとえば、トルコ語のトークン化には特別な処理が必要な場合があります。
デコレータパターンからデコレータとしての機能を実現します。つまり、それぞれが別のデコレータをエンベロープする可能性があります。したがって、すべての実際のオブジェクトには、FirstObject、FirstObject.envelopes、FirstObject.envelopes.envelopes、...最後までの機能があります。すべてのデコレータにすべての内部のものを表示する関数を作成する必要があります。そして、DBから「マトリョーシカ」などを作る機能。
すべてのデコレータには、特定のフィールドがあります。
他の変形-すべてのオブジェクトはそのような機能のリストであり、独立したものだけです。しかし、それは私見であり、あなたのタスクにはあまりにも動的な構造であり、制御するのが難しいです。
これは最も原始的なモデルです。
より複雑なものについては、機能名の同義語を考慮に入れる必要があります。つまり、可能な機能値のリストがリストのリストに変更されます。
次のステップ-一部の機能は、別々に、または1つの文字列として一緒に存在する可能性があります。たとえば、GeForceまたは590またはGeForce 590です。これを実現するには、Decoratorの代わりにCongregatorを使用する必要があります。
もう1つのステップ-数字(価格、日付)で表される機能を検討する必要があります。これは、前の2つのステップから独立しています。可能な値のリストの代わりに、デコレータには可能な値の範囲があります。範囲設定ができるように検索パターンを変更します。
次の独立したステップ-機能による順序付け。すべての機能は含めることで並べ替えられ、すべての値は可能な値のリストで順番に並べられます。これは自然な秩序です。ただし、順序を変更することはできます。
したがって、実行する必要がある2つのパワーインスツルメント:サーチャーUIとオーダーUI。私見ですが、コードでこれらのオブジェクトの検索や順序付けを行わないようにしてください。代わりにSQLを使用してください。オブジェクトはそれらを表すだけで、入力と出力、および検索/順序付けUI定義の設定に使用されます。
もちろん、さらに詳しく説明することもできますが、タスクを段階的に実現することをお勧めします。