TCPDF に嵌ってしまった

今日の投稿は短いです。

PHP を使って HTML から PDF を作成するツール TCPDF を使っているときに嵌ってしまった。以下のような HTML を書くと、class 指定しているにもかかわらず、それが反映されません。

<table class='tbl'>
  <tr>
    <th class='name'>Name</th>
    <th class='title'>Title</th>
  </tr>
</table>

<style>
.tbl {
  width: 100%;
}
.tbl .name {
  width: 20%;
}
.tbl .title {
  width: 80%;
}
</style>

4時間くらい原因が分からず右往左往していたのですが、お手本とにらめっこを繰り返してようやく原因が判明。反映されない原因は class 指定時にシングルクォート(‘)を使っていたためでした。ダブルクォート(“)にすると問題なく反映されます。

<table class="tbl">
  <tr>
    <th class="name">Name</th>
    <th class="title">Title</th>
  </tr>
</table>

<style>
.tbl {
  width: 100%;
}
.tbl .name {
  width: 20%;
}
.tbl .title {
  width: 80%;
}
</style>

HTML 上ではどちらも許されるはずなんですが…。

検索エンジンにN-gram+Scoreを追加しました

技術置き場に新しい検索エンジンを実装しました。

ベースは N-gram ですが、出現確率が高いほどスコアが高くなるような計算を行い、スコアに関して降順に結果が表示されます。ただし、スコアが0.0001より小さくなる場合は検索対象にはなりません。スコアの最大値は恐らく1.0です。

この検索エンジンのよいところは比較的あいまいな検索に対応できることです。特に動詞、助動詞と言った、語尾が変化する単語の検索に威力を発揮します。

なお、本検索エンジンはN-gramの軽微な改良であるため、記事化は予定しておりません。

N-gram 検索エンジンに and 機能を追加

N-gram 検索エンジンに and 検索機能を追加しました。

半角の空白文字を入力すると、空白で区切られた文字列を全て含むページを検索します。

実装がちょっとうまくないですが、おいおい直します。

表示についても統一化していないため、検索にヒットした文の数だけ結果が表示されます。例えば、「可逆 圧縮」と入力した場合、「可逆」で検索された後、「圧縮」で検索されるため、「可逆」で1行、「圧縮」で1行表示されます。

これは検索の問題というよりは表示の問題です。

N-gram 解説記事を展開しました

GitHub にはすでにサンプルを上げてありますが、N-gram 解説記事を新たに展開しました。

使い古されてあまり顧みられなくなった感のある N-gram ですが、実装が簡単な割には厳密な検索が可能なので、個人的には重宝しています。

解説記事はネットに多数掲載されていますが、他の検索エンジン技術と比較するときに対象記事があったほうが便利なので書いてみました。

振り返ってみると、あまり万人向けの解説になっていませんね..。