Maven Archetype for Elasticsearch Plugin

Elasticsearchのプラグインを作るときにMavenのArchetypeが見つからなかったので、作ってみました。ここにあります。使い方もMavenのarchetype:generateゴールを実行するだけでプロジェクトができます。デフォルトでは、サービス、River、Restの3つの機能が含まれています。この辺もプロパティで出し分けたほうが良いような気もしますが、とりあえず、全部入りで生成されるのでいらないものを削除してください。CodeLibsのMavenリポジトリを使っていますが、そろそろセントラルに置くことも考えた方が良いのかなっとも思い始めています。という感じですが、Elasticsearchのプラグインを作る際にはご利用くださいませ。

Dlifeの番組名

Dlifeは海外ドラマとかよく見るのだけど、近頃は他には見たことがないような番組名の使い方をしていてかなり困った感じになっている。たとえば、「ハート・オブ・ディクシー【ラブコメ】ゴシップガール制作陣の最新作!#22」っていう感じであまりに長すぎる…。これで何が起きるかというと、録画しするとHDDレコーダーでは一覧とかは長すぎるので終わりの文字が見えない。そして、番組の回数が一番終わりにあるので、第何回なのか判別ができない。っていうか、そもそも番組タイトル以外に無駄な文字列を入れる必要があるのだろうか。それって、説明のところに記述すべきだと思うけど。番組名でSEOをかけたいのか(そもそも有効なのか?)。少なくても第何回なのかは番組名直後に置いてもらわないと非常に利用しにくい。一応、Dlifeには問い合わせて、検討します的な感じだったけど、いつ改善してくれるのか…。

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

が登録される。検索クエリの時はそのまま行くのでうまくマッチすればサブドメインとか含めてヒットするだろう。