CentOS用textsearch_jaのRPMを作ってみた。

CentOS用にtextsearch_jaRPMを作ったので、思ったところを書いておきます。

下準備

textsearch_jaMeCabに依存しているのでとりあえずインストールします。MeCabCentOSrpmの作り方はMeCabをyumでインストール@CentOS - yokkunsの日記がわかりやすいです。

本題

ざっと探したところSPECファイルが見当たらなかったので適当に用意しました。

Name:   textsearch_ja
Summary: Integrated Full-Text-Search for Japanese language using morphological analyze.
Summary(ja): PostgreSQL用の形態素解析を用いた日本語全文検索拡張
Version:        9.0.0
Release:        1%{?_dist_release}
Source0:        http://pgfoundry.org/frs/download.php/2943/textsearch_ja-%{version}.tar.gz
License:        BSD
Group:          application/database
BuildRequires: postgresql-devel >= 8.3
BuildRequires: mecab-devel >= 0.97
BuildRequires: sed
Buildroot: %{_tmppath}/%{name}-%{version}-%{release}-root
Requires: postgresql-server >= 8.3
Requires: mecab >= 0.97
Requires: mecab-ipadic >= 2.7.0

%description
Integrated Full-Text-Search for Japanese language using morphological analyze for PostgreSQL.

%description -l ja
日本語テキストの全文検索を行います。 PostgreSQL 8.3 で追加された組み込みテキスト検索を拡張するため、英語文書の検索と同様の方法で、日本語文書を検索することができます。検索は形態素解析を利用した単語単位で行われます。形態素解析には MeCab を使用しています。
利点として、GIN または GiST インデックスをベースにしているため、全文検索用のインデックスがリカバリ可能であることが挙げられます。また、既に tsearch2 に対応している欧米言語を対象とした製品を大きく改変することなく、日本語対応できる強みがあります。
非自立語を除外してキーワードを抽出するため、インデックスのサイズを小さく押さえられます。以下の例では「すもも」と「もも」のみ単語として扱っています。単語ごとではなく文字ごとの検索が必要な場合には、代わりに textsearch_senna を使用してください。

%prep
%setup -q
sed -ie '1s/^\xef\xbb\xbf//' *.c

%build
make 

%install
make install DESTDIR=$RPM_BUILD_ROOT

%clean
rm -rf $RPM_BUILD_ROOT

%files
/usr/lib/pgsql/textsearch_ja.so
/usr/share/pgsql/contrib/textsearch_ja.sql
/usr/share/pgsql/contrib/uninstall_textsearch_ja.sql

%changelog
* Mon Aug 29 2011 TANAKA Koichi 
- initial build

日本語descriptionはhttp://textsearch-ja.projects.postgresql.org/textsearch_ja.html#abstractをの文章を引用しました。
注意すべき点は%setupセクションにあるsedです。textsearch_ja-9.0.0のソースファイルはBOM付のUTF-8であるためCentOS 4,CentOS 5のGCCではコンパイル時に下記のエラーが出てしまいました。このためsedでBOMを取り除いています。

textsearch_ja.c:1: error: stray '\239' in program
textsearch_ja.c:1: error: stray '\187' in program
textsearch_ja.c:1: error: stray '\191' in program

また、make installではインストール先をDESTDIRで指定しています。PREFIXではないので注意してください。

間違っている点や改善すべき点がありましたらご指摘お願いします。