|
関連ページ Contents Linuxでの話です. COREBlogでの検索機能を有効にしたい.そのためには,日本語を単語単位に分割する「サブルーチン」が必要.下記参考リンクによれば,いくつも方法があるようだ. 結果的にMJSplitterを採用.苦労しました^^;
参考リンク †いくつもあるようだが,MeCabを使うものと,ChaSenを使うものと何も使わないものの3系統に分かれる.MeCabもChaSenも辞書はipadicというのを使う. MJSplitter 2005-10-05 †最終的に,MJSplitterを採用.上記,参考リンクには,"MecabSplitter?"として紹介されている. インストールの参考
最初のトライアルは,うまくいかなかった.下記,settings.pyの修正が必要. MeCabとipadicのインストールが必要 †MeCab 0.81, IPADIC 2.6.3ではbuild時にSegmentation Fault^^; IPADIC 2.7.0もだめ.2.5.1はOK! http://ns.jk.to/zwiki/MJSplitter の手順に従って,JapaneseCodecs1.4.11, mecab-python-0.81はOK.
MJSplitterの設定 2005-10-06 †ChaSenはUTF-8の使用に一工夫いるので,MJSplitterでもうひとあがき. settings.pyのなかの選択肢を設定.私の環境では, text_charset → 'utf-8' dic_charset → 'euc-jp' で解決. 各.pyの最初の行のエンコーディング情報を壊さないように. 重要な情報 †あとづけでSplitterをインストールした場合,Recatalogボタンを押せば,インデックスが作られます. ただし,MJSplitterの場合,本文Shift_JIS, 辞書euc_jpの組み合わせでは,微妙に文字化けして,正しい検索結果が得られません.本文utf-8, 辞書euc_jpあたりがよいようです. 懸案 †lexiconの掃除 2005-10-06 †必要な単語もたまるけれど,ゴミもたまる.清掃の方法が解らない.
解決 2005-10-28 †特に,掃除の必要もないが,
で,清掃可能.Splitterを変える場合も同じ手順. その後 2008-11-06 †その後,ZopeへのMJSplitterのインストールがなかなか成功しません.MeCabもZopeも2004〜2005年くらいのものにしないと動かないのかも知れません. 例外ハンドリングを外して出させたエラー(Zope-2.10.6, Python 2.4.4, MeCab-0.81). 2008-11-06T13:13:13 ERROR Application Couldn't install MJSplitter Traceback (most recent call last): File "/opt/zope-2.10.6/lib/python/OFS/Application.py", line 758, in install_product global_dict, global_dict, silly) File "/var/zope/Products/MJSplitter/__init__.py", line 5, in ? import MJSplitter File "/var/zope/Products/MJSplitter/MJSplitter.py", line 58, in ? class MJSplitter: File "/var/zope/Products/MJSplitter/MJSplitter.py", line 65, in MJSplitter mecabAdaptor = MeCabAdaptor(mecab_module, get_mecab(mecab_module)) File "/var/zope/Products/MJSplitter/MJSplitter.py", line 21, in get_mecab return Tagger(mecab_arglist) File "/usr/lib/python2.4/site-packages/MeCab.py", line 225, in __init__ this = _MeCab.new_Tagger(*args) NotImplementedError: Wrong number of arguments for overloaded function 'new_Tagger'. Possible C/C++ prototypes are: MeCab::Tagger(char const *) MeCab::Tagger() MeCabは,0.9xを使っても動いてくれません(エラーの内容は調査してませんが). メモ 2008-11-07 †動いているマシンを元に少しずつupdateしていく.
ということで,MJSplitterに手を加えないと,Zope-2.9.xの世界,Plone-2.5.xの世界にいけないことが判明. しばらくはObsoleteのPlone-2.1.4を使うことにします. 解法 2008-11-07 † |