2009-08-10 11 views

答えて

0

mysqlから結果セットを取得します。検索を実行し、各検索ワードのために交換してください、あなたがハイライト表示のためにやっているものは何でもして各単語を置き換えて、例えば、<span class='highlight'>word</span>

+0

最も効率的ですか? – omg

+0

まあ、おそらく。データベースでそれを行うには、非標準のSQL拡張が必要であり、それは間違った懸念の分離になります。 – tpdi

1

は、SQLクエリを実行した後、その結果ににpreg_replaceを行い、キーワード

で各キーワードを置き換えます
$hilitedText = preg_replace ('/keyword/' , '/<span class="hilite">keyword<\/span>/' , $row['columName']); 

あなたのcssでhiliteクラスを定義して、ハイライトされたキーワードを表示させます。 複数のキーワードがある場合は、それらを配列に入れ、その置換を同じ順序で2番目の配列に入れ、それらの配列を関数の2つの引数に渡します。

2

上記の解決策では、テキストの検索、置換、ハイライトを行うために、ドキュメント全体の取得が必要です。ドキュメントが大きく、多くの場合、これは本当に悪い考えです。 MySQL FTSがSQLiteと同じようにテキストオフセットを直接返してから、インデックス付きの部分文字列演算子を使用する方が効率的です。

+0

インデックス付き部分文字列演算子を使用して何を意味するのか説明してください。 thnx – crimix

関連する問題