1

そこで、Twitter Bootstrap の Typeahead を使用して辞書 Web アプリを開始しています。辞書オブジェクトは巨大です (5000 エントリ)。私の現在のコードの下で

$('#dictionary').typeahead({source: function(query, process){

    $.getJSON('dictionary.json', function(data){
        dict = data;
        var words = _.keys(dict);
        process(words);
    });

}, minLength: 2});

typeahead 要素 (#dictionary) にアクセスするたびに get を実行します。これにより、エントリが検索ボックスに入力されるとクエリが非常に高速になりますが、dictionary.json (1 + MB) を取得して解析するのに永遠にかかるため、タイプアヘッドが機能するには遅すぎます。

明らかに、この戦略は間違っています。

私が考えていることは次のとおりです。2. Dictionary.json からのキー値だけを使用して別の配列を作成し、get を使用してこの配列をプリロードします (これはさらに小さく、高速になります)。

負荷が長くなっても大丈夫です。検索に時間がかかっても問題ありません。しかし、先行入力のオートコンプリートに時間がかかるのは、UI の観点からは機能しません。明らかに、グーグルなどの大きな子供たち。これにはコツがあります。Google はプリロードに時間がかかりすぎず、オートコンプリートが機能している間ずっと検索が高速です。

では、皆さんは、上記で概説した私のアイデアについてどう思いますか? 他に提案はありますか?

助けてくれてどうもありがとう。

4

1 に答える 1

0

おそらく、バックエンド スクリプトで入力クエリを処理し、短いデータ リストを返すようにします。

クエリ入力を渡すブートストラップを使用すると、サーバー コードは、これまでに受け取った入力に基づいて短いリストを返すことができます。

于 2013-02-01T00:26:36.620 に答える