MySQL は全文検索を非常にうまく処理できます。
検索されたキーワードは強調表示されません
どうすればこれを最も効率的に行うことができますか?
MySQL は全文検索を非常にうまく処理できます。
検索されたキーワードは強調表示されません
どうすればこれを最も効率的に行うことができますか?
上記のソリューションでは、テキストを検索、置換、および強調表示するために、ドキュメント全体を取得する必要があります。ドキュメントが大きく、多くが大きい場合、これは非常に悪い考えのように思えます。MySQL FTS が SQLITE のように直接テキスト オフセットを返し、次にインデックス付き部分文字列演算子を使用する方がよいでしょう。これは大幅に効率的です。
SQLクエリを実行し、結果に対してpreg_replaceを実行して、各キーワードをKeyWordに置き換えます
$hilitedText = preg_replace ( '/keyword/' , '/<span class="hilite">keyword<\/span>/' , $row['columName']);
css でハイライト クラスを定義して、ハイライトされたキーワードを表示するようにフォーマットします。複数のキーワードがある場合は、それらを配列に入れ、それらの置換を同じ順序で 2 番目の配列に入れ、それらの配列を関数の最初の 2 つの引数として渡します。
mysql から結果セットを取得します。検索語ごとに検索と置換を行い、各単語を強調表示のために行っているものに置き換えます。<span class='highlight'>word</span>