3

インデックスが大きな製品テーブルにある場合は、innodbを使用して、カップルで全文検索のようなものを実装する必要があります。MyISAMは、トランザクションとリレーションシップのサポートがないため、オプションではありません。

これを行うには、プラグイン、ストアドプロシージャ、キーを使用したテーブルの検索、MyIsam形式のインデックスのコピーなど、いくつかの方法が考えられます。

過去にこれをどのように達成しましたか?これは(私が言及していないものを含めて)最良の方法であり、その理由は何ですか?

プラグインは高価に聞こえ、ストアドプロシージャは遅く聞こえ、検索テーブルは管理者の悪夢のように聞こえます。

あなたの意見を聞くのが大好きです。

4

3 に答える 3

3

たとえば、Luceneのような外部(データベースに依存しない)フルテキストエンジンを使用する可能性があります(PHPを使用している場合は、こちらもご覧ください Zend_Search_Lucene

それらはたくさんあります(無料のもの、高価なもの、オープンソースのもの、プロプライエタリのもの)。しかし、それらは一般的に、MySQLフルテキストが許可するものよりも遠くまで行くことを可能にします-そしてそれはデータベース内に統合されません(これは良いかもしれません:たとえばドキュメントにインデックスを付けることができます-または悪い:あなたはできます 'これらの結果をSQLクエリ結果の1つと簡単に結合します)

このようなエンジンを使用する利点は、全文検索が実際に彼らの仕事であるということです。そして彼らはそれをうまくやるはずです(そしてユーザーが何を入力する傾向があるかについて「インテリジェント」である)。

欠点は、別のエンジンが必要なことです。これは、DBに「プラグイン」するだけでは不十分なため、より多くの作業、構成、および開発を意味します。

于 2009-08-09T20:17:35.090 に答える
2

SphinxSearchをご覧ください

于 2009-08-09T20:10:17.833 に答える
0

Xapianは素晴らしいphpバインディングのセットを実行し、他のいくつかのように、xapianは、複数のサイト間でコンテンツを共有するのに最適な、検索要求をポートでリッスンする個別のサーバーとして実行できます。

「もしかして」機能はxapianには存在しますが、リモートサーバーバージョンには存在しません(まだ)

于 2009-08-09T20:40:27.540 に答える