1


私は現在、求人検索システム用の小さなテスト Web アプリケーションを作成しています。私はテーブルVacancys(話すメインテーブル)を持っています。ユーザークエリに一致する欠員(入力コントロールの下の提案リスト内)の迅速な AJAX 更新を行う必要があります。さまざまな DBMS が、Microsoft SQL Server のFree Text Searchのような強力なプログラミング拡張機能を提供していますが、物理ファイルのスキャンにはかなりの時間がかかると思います。そして、私の考えは、テーブル全体のVacancyを RAMに転送することに基づいているため、この場合、データの取得に必要な時間が短縮されるため、これは理にかなっています。したがって、クライアントがテキストボックスに「pro」などと入力すると、提案リストに提案が表示されます。

        -プロダクトマネージャー
        -プロのデザイナー
        -プログラマー
        -プログラマー C#
        -プログラマー Java
        -プロパティ管理者
        -プロビジョニングエキスパート
       
ユーザーが別の文字「g」を入力すると、テキストボックスの値が「prog」 に拡大され、リストが更新されます。
        -プログラマー
        -プログラマー C#
        -プログラマー Java
        
それを可能にするために、ノードに保存された値を持つツリー インデックスを作成する予定です。空席のプレフィックスがインデックス キーの役割を果たし、ノードの値が空席の名前になります。インデックスは、データ テーブルのデータを使用して1 回だけ作成および設定されます。以下の意味を参照してください。
 "プロ" -> {
           "プロダクトマネージャー"、
           「プロのデザイナー」、
           "プログラマー"、
           "プログラマC#",
           「プログラマー Java」
           "プロパティ管理者",
           「プロビジョニングエキスパート」
           }
そのため、インデックス ビルダーは文字列リストを分析し、空席名の接頭辞が最も少ないものを見つける必要があります。次に、ビルダーは、前に見つかったプレフィックスの後に文字を含む文字列を見つけると、子ツリー ノード(「prog」)を作成し(常にフィルター処理されるため、そのノードのデータ値の数は減少します)、親ノードに追加されます。("プロ")
"プログラム" -> {
           "プログラマー"、
           "プログラマC#",
           "プログラマ Java"}
           }
この問題を解決するのに自然に適合するツリー インデックスの種類を教えてもらえますか? シーク時間までにそれらの中で最高のものは何ですか? ありがとう

4

1 に答える 1

2

この問題は数年前に解決され、Luceneを再作成しています:

必要なツリーの種類に値するのは、パトリシア ツリーまたは基数ツリーです。すべてのデータを RAM に格納するという点では、インデックスだけでなく RAM を使用するアプリケーションが他にもあるため、これは悪い考えです。現在、私は誰かがこの方法で実装するのが良いと考えたカスタム データベースを取り出して、実際のデータベース ソリューションに置き換えています。

于 2013-01-11T02:21:05.327 に答える