0

ASP.NET WebアプリとList<Product>サーバー上(Application []ストア内)にあります。クラスProductにはNameプロパティがあります。名前に基づいて商品を検索できるようにする必要があります。たとえば、ユーザーが「honda computer」と入力した場合、アプリは「2001 Honda Passport Engine Computer(OEM)」を表示する必要があります。検索は非常に高速である必要があります。将来、オートコンプリート機能(AJAX)を追加する予定です。

これまでのところ、これを解決する方法についていくつかのアイデアがありました。

  1. Bツリー、Trie、サフィックスツリー、プレフィックスツリーなどのオープンソース実装を作成または使用します。残念ながら、データ構造とアルゴリズムは私の最強のスキルではありません(ハーバード大学、何の役にも立たないほどのお金です)。

  2. 検索エンジン(Lucene.NET、Velocity、またはMemCached.NET)を使用します。一度も使用したことがないので、このシナリオで機能するかどうかはわかりません。同義語を検索する必要はなく、アプリにはファイルシステムにアクセスするためのアクセス許可がありません(したがって、インデックスファイルはありません)。

どんなアドバイスでも大歓迎です。

4

2 に答える 2

1

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

于 2010-11-24T03:14:22.373 に答える
0

持っているデータの量にもよりますが、接尾辞木を使用することは実際には非常に良い考えです。通常、テキストボックスで自動提案が有効になっている場合、ユーザーはフレーズの先頭から入力します。ユーザー入力によって入力された文字に基づいてツリーを検索できるため、接尾辞木は次のようになります。可能な提案を自動的にフィルタリングし、ツリーをナビゲートして表示する提案を提供します。

実装が複雑になる可能性があることは事実ですが、.NET用に作成されたものをすでに見つけることができる場合があります。しかし、それらは非常に有用である傾向があるので、あなたはあなた自身の書き方に関する情報を持ったいくつかの良い資料を見つけることができます。

于 2010-11-24T03:43:15.043 に答える