100 万行のクラシファイド データベースがあり、これに対して多数のフィルター検索を行います。キーワード検索は一切行いません (LIKE などはありません)。条件 (価格、部屋数、場所など) に基づいて行をフィルタリングするだけです。
キーワード検索を行っていないので、とにかく検索サーバーを使用する必要があるかどうか疑問に思っています。
何かご意見は?
100 万行のクラシファイド データベースがあり、これに対して多数のフィルター検索を行います。キーワード検索は一切行いません (LIKE などはありません)。条件 (価格、部屋数、場所など) に基づいて行をフィルタリングするだけです。
キーワード検索を行っていないので、とにかく検索サーバーを使用する必要があるかどうか疑問に思っています。
何かご意見は?
MySQL の全文検索は非常に貧弱で、さまざまな理由で機能が制限されているため、これはよくある MySQL の質問です。あなたが言及した他の検索技術のほとんどは、検索機能、機能、および速度を劇的に向上させます。欠点は、別のシステムを維持し、インデックスを同期させておく必要があることです。これは、苦痛/費用/エラーが発生しやすい可能性があります.
これは実際に PostgreSQL が真価を発揮する領域の 1 つです。なぜなら、組み込みの検索機能は広範で、高度な設定が可能で、非常に高速だからです。さらに、単純なデータベース トリガーを使用して、インデックスを最新の状態に保つことができます。
検索がシステムの大部分を占めており、検索対象がすべてデータベース内にある場合、PG への移行は、専用の検索エンジンを学習/維持するよりもはるかに理にかなっている可能性があります。
ほとんどの検索サーバーは、検索するだけでなく、データベースよりも高速に大量のデータをフィルタリングします。したがって、より良いパフォーマンスが必要な場合は、検索サーバーを使用してください。
考慮すべきもう 1 つの点は、開発コストです。どの検索サーバーでも、それを構成してシステムと統合するには、いくらかの労力が必要です。
私はSphinxの経験があり、気に入っています。現在、リアルタイム インデックスを ORM と統合し、データベース フィルタリングを回避しようとしています。Sphinx はデータを検索してフィルタリングし、見つかった ID を返し、InnoDB は ID によってデータを選択するだけです (MySQL と特に InnoDB テーブルは非常に高速です)。
「DB のパフォーマンスは十分でしょうか?」と自問してみてください。そして決定を下します。