2011-08-03 11 views
2

私は、InnoDBテーブルは全文検索をまだサポートしていないことを知っています。だから、私はsolr、xapian、whooshのようなサードパーティの検索エンジンを使うことを考えました。これらのサードパーティのツールは、MyIsamテーブルで動作するInnoDBテーブルと同等に機能しますか?私は見つける必要があります。スペルの候補と同様の文字列...サードパーティの検索エンジン(全文検索など)はInnoDBテーブルで正常に動作しますか?

答えて

1

Solr/Luceneを使用して、DBデータの全文検索を行うことができます。私のMySQL DBは高速全文検索のために大きくなるので、私はmysqlとSolr/luceneを組み合わせることに決めました。

Solr/LuceneはMySQLプラグインではありません。したがって、一般的なMySQL SQLステートメントを使用してフルテキストインデックスを検索することはできません。アプリケーションによって開始された全文検索は、関連文書の主キーを返すサードパーティフルテキストインデックス(Solr)に最初に要求を送信する必要があります。 2番目のステップは、MySQLのinnoDBに対して、Solr結果セットの対応する主キーを持つwhere句を使用してSQL文を実行することです。 このソリューションは、私のケースでは、一般的なMySQL Myisamの全文検索よりもはるかに高速で(しかも優れています)機能します。

代わりに、solrのデータのインデックスを作成するだけでなく、また、solrにデータを追加保存することもできます。その場合、solrはフルテキストを返すことができます。上記の例のように、データベースからデータを取得する必要はありません。

これらのサードパーティツールは、MyIsamテーブルで動作するので、InnoDBテーブルと同等に機能しますか?

絶対に。 SolrにはDataImportHandlerがあります。あなたは、次のように、solrでインデックスを作成したいデータを取得するためにSQL文を定義します。select * from MyTable; ただし、現在(私が知る限り)therは利用可能なMySQL solrプラグインではありません。 SolrとMySQLの協力はアプリケーションによって処理されるべきです。

0

Sphinxは、独自のインデックスをサポートしており、クエリを発行することによって適時にMySQLからデータを取得します。

基本的なテーブル構造についても認識されていません。クエリが実行され、結果が返される限り、Sphinxでは問題ありません。

他のサードパーティのエンジンも同じように動作します。

1

通常、サードパーティのフルテキスト検索エンジンは、MySQLクエリによって返されたデータをコピーし、それを使用して検索インデックスを設定します。この点に関して、MyISAMとInnoDBのデータソースには違いはありません。

私は数年前にプレゼンテーションをPractical Full-Text Search in MySQLとしました。興味深いかもしれません。

+0

FlexCDCのようなツールを使ってMySQLとSolrを同期させるとどう思いますか? –

+0

@NeilMcGuiganで動作する可能性がありますが、FlexCDCにはスループットの制限があります。書き込み速度が非常に速い場合、追いつくことができない可能性があります。 Justin(私がPerconaで働いている人)には、FlexCDCのパフォーマンスを改善するためのアイデアがありますが、いつリリースするのか分かりません。 –

関連する問題