2010-11-22 9 views
1

私はすべての国、都市、近所、村、郵便番号の自動補完機能を持つ場所自動補完フィールドを持っています。これは、自分のウェブサイト用に構築している位置追跡機能の一部です。したがって、このリストが数百万行になると想像することができます。すべての村と儀式のコードで最低2,000万人以上を期待しています。オートコンプリートをうまく機能させるために、私はmemcachedを使用するので、常にこのリストを取得するためにデータベースにアクセスしないでください。これはサイトの主な機能なので、多く使用されます。しかし、質問は次のとおりです:数百万行の自動完成フィールド実装のアイデア?

ユーザーが情報をプルするのに関係なく、memcachedに格納されているのは1つだけですか、それぞれのインスタンスを個別に維持する必要がありますか?だから、2000万人が同時にそれを使用しているとすれば、それは1人の人が場所を自動補完するのとは違うでしょうか?私はこの場所の自動完成をどのようにしてうまく実行するかについて、他のアイデアも公開しています。

または、私は次のようなことをすることができます:ユーザーがバックグラウンドでログインすると、リストにそれらを送信します。そのため、自動的に完全なテキストフィールドに到達すると、コンピュータはインスタントを読み込む準備ができます。

答えて

1

NGram(またはEdgeNGram)トークナイザを使用してSolr(またはLucene自体)を見てみると、大量のデータセットで優れたオートコンプリートパフォーマンスを得ることができます。

+0

代わりにSphinxを使用できますか?フローは次のようなものです:これらはAJAXベースのフィールドなので、AJAXからそれらをヒットする必要があります。他にも、GISを検索する必要があるので、複数のテクノロジをサポートするのではなく、すべてのニーズに役立つ1つのテクノロジしか使用しないことをお勧めします。 – bone33

+0

SolrはAjaxクエリー用に特別に設計されています。私はスフィンクスについてよく知らないが、Lucene/Solrに匹敵するようだ。サイトを見渡すだけで、インデックス処理のスループットとリレーショナルデータベースとの直接的な統合を強調しているようです。一方、Luceneは、特にテキスト解析を中心に、より多くの機能を備えているようです。私が聞いたことから、検索のパフォーマンスはかなり似ています(もちろん、特定のユースケースに大きく依存しています)。彼らは同じデータモデルを実装しているので、GISの機能も同様だと私は考えています。 – Dmitri

関連する問題