2010-11-24 17 views
0

私はASP.NET WebアプリケーションとList<Product>(アプリケーション[]ストア内)をサーバーに持っています。クラス製品にはNameプロパティがあります。私はユーザーに名前に基づいて製品を検索する機能を提供する必要があります。たとえば、ユーザーが「honda computer」と入力すると、「2001 Honda Passport Engine Computer(OEM)」が表示されます。検索は非常に高速でなければなりません。将来はオートコンプリート機能(AJAX)を追加します。.NETアプリケーション - 検索の問題

  1. 書き込みまたはBツリー、トライ、接尾辞木、Prefixツリーのようなもののオープンソース実装を使用します。

    は、これまでのところ、私はこれを解決する方法のカップルのアイデアを持っていました。残念ながら、データ構造やアルゴリズムは私の最強のスキルではありません。

  2. 検索エンジン - Lucene.NET、Velocity、またはMemCached.NETを使用します。このシナリオで動作するかどうかは分かりません。私は同義語を検索する必要はなく、アプリケーションにはファイルシステムにアクセスするためのアクセス権がありません(インデックスファイルはありません)。

アドバイスをお待ちしています。

答えて

0

データの量に応じて、suffix treeを使用すると、実際には非常に良いアイデアになります。一般的に、テキストボックスには自動候補が有効になっているときにフレーズの先頭から入力する予定です。また、ユーザー入力によって入力されている文字に基づいてツリーを検索できるので、接尾辞ツリーは表示される候補を自動的に絞り込み、ツリーをナビゲートして表示するための提案を提供します。

実装するのが難しいことは間違いありませんが、すでに.NET用に作成されたものを見つけることができます。しかし、彼らは非常に便利な傾向があるので、あなたは良い材料を見つけることができますwith information on how to write your own

1

これらの製品はいつでもデータベースに保存されていますか?多くの一般的なデータベース(Microsoft SQL Serverを含む)は、大規模なデータセットにわたるテキスト検索の高速な方法であるフリーテキスト検索索引付けをサポートしています。

+0

それはできません、DBは私のコントロール外です。アプリケーションの開始時に製品カタログをメモリにロードする必要があります。 –

+0

まあ、間違いなくあなたが上記のアルゴリズムの独自の実装をしないでください。このようなことを試しましたか? http://www.codedigest.com/CodeDigest/52-Search-in-Generic-List-T--in-C-.aspx –