Drafts

@cm3 の草稿置場 / 少々Wikiっぽく使っているので中身は適宜追記修正されます。

Lucene 5 の Stemmer の使い方

インドネシア語の Stemmer を使う例

qalam-git/Test3.javapenghuninyaを与えると、接頭語と接尾語が取れてhuniになる。ちなみに、元論文にも書いてあるけれど、接頭語や接尾語をどの程度取るかにはレベルがあって、この場合は品詞の変化もかまわず省いている。住んでいるという状態(huni)に英語でいう-erであるpeng-(その行為を行う人)が頭について、あとは定冠詞的な役割かなにかの-nyaがつく(-nyaには7種類の役割があるからどれかは分かってない。参考:今から一緒にインドネシア語しようよ!! - Yahoo!ブログ)。あと、マレー、インドネシア研究の専門家に聞いたところ、マレーシア語も Stemming は変わらない。ただし、それは現代インドネシア語、現代マレーシア語の場合なので50年ほど遡ったりすると異なってくるとのことです。

Lucene 自体は Apache Lucene から入手。 英語版は Test2.java にあります。qalam-git/src at trunk · cm3/qalam-git

参考:

環境について

Docker で Solr 動かしているとこで lucene 使った スクリプトGitHub 経由で動かしている。バージョン管理は fossil scm を使っているけれど、それを GitHub にあげるために、gitに移行してからpushするという少々面倒なことをしている。まあ、ダブルクリック一つでできるようにスクリプト書いているんだけど。

どうせ後で Dockerfile ともども Github に置くんだから、Github 経由でファイルやりとりすればいい。細かい編集くらいはコンソール上で行わないと、git の履歴が汚くなるけれど。あと、巨大になりがちなデータファイルや公開できないファイルは、サンプルだけGitHubにおいて、全体は他のサーバからダウンロードして使えとドキュメンテーションだけしておいて、手元のサーバではそれらのファイルをあるディレクトリに入れて、空の.gitkeep使って、それをgitで管理しないようにする。

from Solrの設定 - Drafts

Windows 側でのコンパイルと実行

Javaは久しぶりに書いたけれど、Eclipseが無いと辛いのでローカルで書いてサーバにスクリプトをコピーして使っている。

f:id:cm3ak:20150524222059p:plain

ずっと、throws してるはずなのに、throws しろって言われてて、理由がわからなかったんだけど、Eclipse なら、こうやって推薦してくれる。ParseExceptionじゃなくて、org.apache.lucene.queryparser.classic.ParseExceptionって書かないとだめだった。

luceneのjarは Lucene eclipse tutorial for beginners: Tutorial - Working with lucene and eclipseにあるように、プロジェクトのプロパティからJava Build Pathの追加という形で追加する。

  • \queryparser\lucene-queryparser-4.4.0.jar
  • \analysis\common\lucene-analyzers-common-4.4.0.jar
  • \core\lucene-core-4.4.0.jar

Linux側でのコンパイルと実行

classpath によって、lucene の jar を読み込む。

$ javac -classpath "/opt/mytest/lucene-5.1.0/lucene-analyzers-common-5.1.0.jar" Test.java
$ java -classpath .:/opt/mytest/lucene-5.1.0/lucene-analyzers-common-5.1.0.jar Test "penghuninya"
4

ワイルドカードも使えるので、読み込む jar が複数になってきたら、ワイルドカードを使う。

$ java -classpath .:/opt/mytest/lucene-5.1.0/* Test "penghuninya"
4

複数列挙するときの区切り文字は:なので注意(Windows上でやるときは;

小ネタ

f:id:cm3ak:20150524222937p:plain

関連記事