[解決済み] InnoDBによる全文検索
質問
私は大容量の Web アプリケーションを開発しており、その一部はディスカッションの投稿の MySQL データベースで、スムーズに 20M 以上の行に成長させる必要があります。
私は当初、テーブルに MyISAM を使用することを計画していました (組み込みの 全文検索機能 を使うつもりでしたが テーブル全体 がロックされることを考えると、私はぞっとします。行レベルロックの方がはるかに理にかなっています(巨大なテーブルを扱う際の InnoDB のその他の速度面での利点は言うまでもありません)。このような理由から、私は InnoDB を使用することをかなり強く決意しています。
問題は... InnoDBには全文検索機能が組み込まれていないことです。
サードパーティの検索システムを使うべきでしょうか?例えば
Lucene(c++)
/
スフィンクス
? データベース忍者の皆さんは、何か提案やガイダンスがありますか?
LinkedInの
ゾーイ
(Luceneベース) が今のところベストな選択肢のようです。
... リアルタイム機能 (これは私のアプリケーションにとってかなり重要です) を中心に構築されているため、いくつかの洞察がない限り、まだコミットすることを少し躊躇しています...
(参考: 高メモリのリグを持つ EC2 上で、フロントエンドを提供するために PHP を使用する予定です)
どのように解決するのか?
MyISAM のフルテキストが悪いオプションであることは私が保証します。一般的な MyISAM テーブルのさまざまな問題はさておき、私はフルテキストのものがレールから外れてそれ自身を破損させ始め、定期的に MySQL をクラッシュさせるのを目にしてきました。
MySQL/innodb に投稿データを保存し、テキストを検索エンジンにエクスポートします。 定期的な完全なインデックス構築/公開をかなり簡単にセットアップすることができ、必要性を感じて時間をかけたい場合は、リアルタイムのインデックス更新を追加することができます。
LuceneとSphinxは良い選択肢です。 Xapian もそうですが、軽量で素晴らしいものです。 もし Lucene を使うのであれば、たとえ Java と格闘したくないとしても、Clucene がより良いとは思わないでください。
関連
-
MHAクラスタエラーサマリーの構築
-
[解決済み] SQL Server FOR EACH ループ
-
[解決済み] 1つのPostgreSQLクエリで複数のWITHステートメントを使用するには?
-
[解決済み] SQLテーブルで重複する値を検索する
-
[解決済み] Vim 直前の検索ハイライトをクリアする
-
[解決済み] Vimで大文字小文字を区別しない検索をする方法
-
[解決済み] INNER JOIN ON vs WHERE句
-
[解決済み] SQL JOIN - WHERE句とON句の比較
-
[解決済み] "ON UPDATE CASCADE "を使用する場合について
-
[解決済み】SQL Serverで既存のテーブルにデフォルト値を持つカラムを追加する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Oracle Trigger ORA-04098: トリガーが無効で、再バリデーションに失敗しました。
-
[解決済み] PostgreSQLのCREATE DATABASE IF NOT EXISTSをシミュレートしてみませんか?
-
[解決済み] SQLの結合形式 - 入れ子になった内側join
-
[解決済み] SQL SELECT WHERE フィールドに単語が含まれる場合
-
[解決済み] MySQLでFULL OUTER JOINを行うにはどうすればよいですか?
-
[解決済み] ある列の最大値を持つ行を取得する
-
[解決済み] SQLiteデータベースで、一度に複数行を挿入することは可能ですか?
-
[解決済み] フラットテーブルをツリーにパースする最も効率的/エレガントな方法は何ですか?
-
[解決済み] Count()で条件を指定することは可能ですか?
-
[解決済み] Selectステートメントで特定のフィールドの重複を検索する