検索エンジンのさまざまなテーブルでの検索に使用するために、私に何を提案しますか?
各テーブルは他のテーブルとは異なり、列も異なり、行の数も異なります。
FULL-TEXT
この場合、インデックスメカニズム
を考慮していることを確認してください。インデックスはテーブルタイプFULL-TEXT
でサポートされています。MyISAM
ENGINE
Full-text
検索は、MATCH()...AGAINST構文を使用して実行されます。MATCH()は、検索する列に名前を付けるコンマ区切りのリストを取ります。AGAINSTは、検索する文字列と、実行する検索のタイプを示すオプションの修飾子を取ります。検索文字列は、変数や列名ではなく、リテラル文字列である必要があります。全文検索には次の3つのタイプがあります。
自然言語検索は、検索文字列を自然言語のフレーズ(フリーテキストのフレーズ)として解釈します。特別な演算子はありません。ストップワードリストが適用されます。さらに、行の50%以上に存在する単語は一般的であると見なされ、一致しません。
全文検索は、IN NATURAL LANGUAGE MODE修飾子が指定されている場合、または修飾子が指定されていない場合の自然言語検索です。
ブール検索は、特別なクエリ言語のルールを使用して検索文字列を解釈します。文字列には、検索する単語が含まれています。また、一致する行に単語が存在するか存在しないか、または通常よりも高いまたは低い重みが付けられる必要があるなどの要件を指定する演算子を含めることもできます。「some」や「then」などの一般的な単語はストップワードであり、検索文字列に存在する場合は一致しません。IN BOOLEAN MODE修飾子は、ブール検索を指定します。詳細については、12.9.2項「ブール全文検索」を参照してください。
クエリ拡張検索は、自然言語検索を変更したものです。検索文字列は、自然言語検索を実行するために使用されます。次に、検索によって返された最も関連性の高い行の単語が検索文字列に追加され、検索が再度実行されます。クエリは、2番目の検索からの行を返します。
詳細については、これを参照してください。
列名とテーブル名の動的入力を受け取る関数を作成します。検索の目的で、どの列がどのテーブルに関連しているかを知る必要があり、常にこれらの 2 つのパラメーター 1) table_name 2) column_names 配列をそれに渡します。これらのパラメーターが適合し、クエリが動的に開発される条件で SQL クエリを作成します。その後、クエリは結果を返します。
対応するテーブルにトリガーを作成して、コンテンツを異なるテーブルから単一のテーブルにフェッチします。そのテーブルに全文検索インデックスを適用します。