Dlifeは海外ドラマとかよく見るのだけど、近頃は他には見たことがないような番組名の使い方をしていてかなり困った感じになっている。たとえば、「ハート・オブ・ディクシー【ラブコメ】ゴシップガール制作陣の最新作!#22」っていう感じであまりに長すぎる…。これで何が起きるかというと、録画しするとHDDレコーダーでは一覧とかは長すぎるので終わりの文字が見えない。そして、番組の回数が一番終わりにあるので、第何回なのか判別ができない。っていうか、そもそも番組タイトル以外に無駄な文字列を入れる必要があるのだろうか。それって、説明のところに記述すべきだと思うけど。番組名でSEOをかけたいのか(そもそも有効なのか?)。少なくても第何回なのかは番組名直後に置いてもらわないと非常に利用しにくい。一応、Dlifeには問い合わせて、検討します的な感じだったけど、いつ改善してくれるのか…。
投稿者: shinsuke
Solrでドメイン名をインデックスする
Solrでドメイン名のようなものを対象にするとき、どんなAnalyzerの設定が良いか考えてみると、PathHierarchyTokenizerFactoryを使って以下のような感じが良いのかなっと。
<fieldType name="domain_name" class="solr.TextField">
<analyzer type="index">
<tokenizer class="solr.PathHierarchyTokenizerFactory" delimiter="." reverse="true"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.KeywordTokenizerFactory" />
</analyzer>
</fieldType>
Fessではサンプルで定義されていたurlフィールド型をsiteに使っていたのだけど、どうもこれだといまいちな感じなので上記の設定に変更しようと思う。これにすると、www.codelibs.orgをインデックスると
www.codelibs.org codelibs.org org
が登録される。検索クエリの時はそのまま行くのでうまくマッチすればサブドメインとか含めてヒットするだろう。
PDFBoxでPDFに画像を差し込む
PDFBoxを使うと、既存のPDFにjpg画像を差し込むことができる。実装例としてはここにあるけど、以下のような感じ。
PDDocument doc = null;
try
{
doc = PDDocument.load( inputFile );
//we will add the image to the first page.
PDPage page = (PDPage)doc.getDocumentCatalog().getAllPages().get( 0 );
PDXObjectImage ximage = null;
if( image.toLowerCase().endsWith( ".jpg" ) )
{
ximage = new PDJpeg(doc, new FileInputStream( image ) );
}
else if (image.toLowerCase().endsWith(".tif") || image.toLowerCase().endsWith(".tiff"))
{
ximage = new PDCcitt(doc, new RandomAccessFile(new File(image),"r"));
}
else
{
//BufferedImage awtImage = ImageIO.read( new File( image ) );
//ximage = new PDPixelMap(doc, awtImage);
throw new IOException( "Image type not supported:" + image );
}
PDPageContentStream contentStream = new PDPageContentStream(doc, page, true, true);
contentStream.drawImage( ximage, 20, 20 );
contentStream.close();
doc.save( outputFile );
}
finally
{
if( doc != null )
{
doc.close();
}
}
ポイントは
- contentStreamの前にximageを取得しておくこと
- drawImageが左下から始まっていること
かな。