私のデータベースには数千万の製品が含まれているため、応答を高速化するための効率的な検索手法が必要です。最初に、アルファベットまたはクエリの頭文字に基づいていくつかのテーブルを作成しようとしました。ただし、ユーザーが「apple ipod touch」ではなく「ipod touch」を検索した場合など、何度も失敗します。トライまたは他のデータ構造を使用してこれを実装できますか? Google は大量のデータをどのように追跡していますか?
質問する
1106 次
2 に答える
5
独自の検索アルゴリズムを作成するのは困難です。プロジェクトで似たようなことをしなければならなかったとき、データベース全体を列ごとに調べ、すべてを検索し、次に任意の用語を検索しました。それは大雑把でしたが、データベースが現実的に 1 万を超えるエントリを保持することは決してないため、うまくいきました。データベースのサイズを考えると、事前に作成された検索エンジンを調べる方がはるかに優れています。それらは非常によく書かれており、最適化されています。Joyce Babu が示唆したように、Apache Solr はその 1 つです。私がしたい別の提案はSphinxです。(ウィキペディアによると) craigslist で使用され、1 日に 2 億件の検索が行われています。その種の力は、あなたが望むものを処理するのに十分なはずです.
于 2012-07-28T06:06:53.887 に答える
2
必要なのは全文検索です。FULLTEXT
MySQL でインデックスを使用して、MATCH AGAINST
クエリを実行してみてください。
しかし、Apache Solr を使用すると、はるかにうまくいくと思います。高速でスケーラブルで、より優れた (関連性のある) 結果を提供します。
于 2012-07-28T05:52:12.783 に答える