上記のような洗練された機能を追加するまでは、実際のデータベースを検索しても問題ありません。私の経験では、キーワードとページID/URLなどを使用して専用の検索テーブルを作成するのが最善です。次に、このテーブルに nごとにデータを入力します コンテンツ付きの時間。この母集団の間に、各キーワードの各ドキュメントのスニペットを追加できます。
または、簡単なハックは次のようになります。
<?php
$text = 'This is an example text page with content. It could be red, green or blue.';
$keyword = 'red';
$size = 5; // size of snippet either side of keyword
$snippet = '...'.substr($text, strpos($text, $keyword) - $size, strpos($text, $keyword) + sizeof($keyword) + $size).'...';
$snippet = str_replace($keyword, '<strong>'.$keyword.'</strong>', $snippet);
echo $snippet;
?>