Trenzサイトの本文を検索できるようにしました
Trenz製品販売日本語サイトの見えないところをリニューアルしました。
見えない部分だけど大事な仕事。
まず、今までTrenzサイトでは検索窓にカーソルを合わせることが困難でした。
どうやら2018年にスライダーを起動するJavascriptが追加された際に、スライダーの枠のdivが、実際の画像のサイズよりも大きいheightで定義されていて、その枠の見えない部分にバリアされて検索窓にカーソルが合わせられなかったようです。
そのため、スクロールする一瞬だけ検索ができるということになっていました。
この不具合を1年4か月くらい放置していました。いけないですね。
せっかく検索ができるようになったので、本文を全文検索できるようにしました。
Trenz製品販売日本語サイトをはじめ、特電の作るWebページはtkcmsというCMS(コンテンツマネージメントシステム)で作られていますが、そのデータは以下のような感じでデータベースに入っています。(実際には1つのレコードには30個くらいの項目があるのですが簡単にしています。)
そして、過去のページ内容をいつでも復元できように、すべてのページのすべての時点のデータを全保存しています。
だから、元になるテーブルを全検索しては、すでに無効になっている記事や更新される前のデータもひっかかってしまいます。
このようなテーブルに対して全検索を行うには、まず、アクティブな記事のリストを作り(ここでSELECTを1回)、各記事のURLやタイトルをキーとして内容を取り出すためのSELECT文を記事の数だけforeachで回すことになります。
合計、ページ数+1回のSELECT文を回さなければならなくなり、重くなります。
そこで考えたのが、検索用のキャッシュテーブルを作ること。
全記事のデータの中から現在アクティブかつ最新のものを取り出し、HTMLのタグを外し、全角英数字を半角英数字に変換したテーブルを作ります。
そして、この検索用キャッシュテーブルに対して検索を行います。
全角半角で揺れても大丈夫になるし、1回のSELECT文で済むし、各ページの検索スコアを設定することもできるようになりました。
例えばZynqberryで検索したときの結果は以下のとおり。
商品情報だけではなく、記事全文からテキスト検索できるようになりました。
| 固定リンク






コメント