関口宏司のLuceneブログ

OSS検索ライブラリのLuceneおよびそのサブプロジェクト(Solr/Tika/Mahoutなど)について
FSTとGraphViz
LuceneのFSTというクラスを見ていたら、同じパッケージのUtilクラスにtoDot()というメソッドがあったので、FSTオブジェクトをGraphVizで表示してみた。そのプログラムと手順を紹介しよう。

FSTはFinite State Transducer(有限状態変換器)の略でそのままの名称のクラスがLuceneで提供されている。FSAと異なり受理した言語(バイトシーケンス)を任意の出力にマップする。Lucene/Solrでは単語辞書をさまざまなメタ情報にマップしたり、類義語辞書を持ったりするので、FSTがいろいろなところで活用できる。FSTを構築するのにすぐれたアルゴリズムがあり、こちらの論文で紹介されている方法を使ってFSTクラスが実装されている。この方法では入力単語はあらかじめソートされている必要があるが、Luceneの単語辞書はUnicode順でソートされており、また類義語辞書などソートされていないものについてはソートした上でadd()すればよい。

FSTを使った簡単なプログラムを次に示す。

public final class TestSimple {

    static final String[] DATA = {"station", "commotion", "elation", "elastic", "plastic", "stop", "ftop", "ftation", "stat"};

    public static void main(String[] args) throws IOException {
	List<String> list = new ArrayList<String>();
	for(String d : DATA){
            list.add(d);
	}
        Collections.sort(list);

	NoOutputs outputs = NoOutputs.getSingleton();
	Object nothing = outputs.getNoOutput();
	Builder<Object> b = new Builder<Object>(FST.INPUT_TYPE.BYTE1, outputs);

	final BytesRef term = new BytesRef();
	final IntsRef scratchIntsRef = new IntsRef();
	for (String d : list) {
            term.copyChars(d);
            b.add(Util.toIntsRef(term, scratchIntsRef), nothing);
	}

        FST<Object> fst = b.finish();

	Writer w = new PrintWriter("out.dot");
	Util.toDot(fst, w, true, true);
	w.close();
    }

}


このプログラムを実行すると、out.dotというファイルができるので、GraphVizのdotコマンドを次のように実行する。

$ dot -Tpng -o out.png out.dot


すると、out.pngという次のような画像ファイルが出力される。

FST output

このアルゴリズムではプレフィックスだけでなくサフィックスも文字列が共有されており、非常にメモリ効率が高いことがわかる。



あの米Clouderaディレクターも参加したロンウイットのSolrトレーニング・・・受講者インタビュー記事
決算期の今は実は受講の大チャンス!あなたの部署の余った予算を有効活用しましょう。        Solr 3.5 4月 トレーニング受講者募集中

| 関口宏司 | Luceneツール | 00:04 | comments(1) | trackbacks(0) |
(メモ)Apache Extras
http://apache-extras.org/
| 関口宏司 | Luceneツール | 22:17 | comments(0) | trackbacks(0) |
(メモ)Lucene Performance Test Tool
luceneutil
http://code.google.com/p/luceneutil/
| 関口宏司 | Luceneツール | 08:51 | comments(0) | trackbacks(0) |
Luceneのインデックスを使って共起分析
今発売中のWEB+DB PRESS Vol.59の「大規模データ分析」の記事は具体的で大変面白かった。その中第2章ではHadoopを使って大量の日本語テキストの処理を行い単語の共起分析を行う方法が書かれている。そこで私は早速「Solr本のサンプルデータ(技術評論社のWebサイトをクロールして集めた書籍データ)」を使ってやってみた。それだけでは芸がないので、Luceneのインデックスから共起分析を行い、それと比較してみる。Luceneのインデックスを使って共起分析をするには、以下で紹介されているプログラムを使った:

https://issues.apache.org/jira/browse/LUCENE-474

「データベース」と共起する上位の単語はそれぞれ次のようになった:

LUCENE-474Hadoop(χ二乗検定)
Access
プログラミング
リレーショナル
Oracle
XML
Excel
アプリケーション
エリ
テーブル
リレーショナル
フォーム
抽出
アプリケーション
蓄積


データ件数が少ない(千数百件程度)わりに、どちらもそれなりの出力がされていてなかなか面白い。
| 関口宏司 | Luceneツール | 01:23 | comments(0) | trackbacks(0) |
(メモ)ManifoldCF in Action
Lucene Connector FrameworkあらためApache ManiforldCFプロジェクトの書籍「ManifoldCF in Action」が執筆中らしい。そのサンプルコードがGoogle Codeで公開されている:

http://manifoldcfinaction.googlecode.com/svn/trunk/
| 関口宏司 | Luceneツール | 09:37 | comments(0) | trackbacks(0) |
(メモ)Solr負荷テストツール SolrMeter
Java SwingベースのSolr負荷テストツール

http://code.google.com/p/solrmeter/
| 関口宏司 | Luceneツール | 01:54 | comments(2) | trackbacks(0) |
Solrのモニタリングツール - New Relic RPM Lite
http://www.newrelic.com/solr.html

インストールは上記URLからユーザ登録を行い、フリー版のRPM LiteのZIPファイルをダウンロードして解凍する。そして、通常次のようにSolrを(Jettyで)起動するところを:

$ java -jar start.jar


次のようにJava Agentを指定して起動するように変更する:
$ java -javaagent:/path/to/newrelic.jar -jar start.jar


するとNew Relicに作成したユーザアカウントの画面にSolrの稼働状況が表示される。
| 関口宏司 | Luceneツール | 21:15 | comments(0) | trackbacks(0) |
search-lucene.com
Lucene/SolrのコミッターのOtisさんのSematext社制作によるsearch-lucene.comは、Lucene/Solr/Nutchなどのメーリングリストや、ソースコード/Javadocなどが検索できる。auto-completion機能付きなので、メソッド名などの最初の数文字を入力するとGoogleサジェストのように検索窓の下に検索文字列候補がドロップダウン表示されるのでなかなか便利。
| 関口宏司 | Luceneツール | 10:17 | comments(0) | trackbacks(0) |
(メモ)ElasticSearch
Luceneを使って作られた、JSON over HTTPで登録/検索できる検索エンジン:

ElasticSearch
http://www.elasticsearch.com/products/elasticsearch/

curl -XPUTで登録し、curl -XGETで検索している様子をビデオデモで見られる
| 関口宏司 | Luceneツール | 08:21 | comments(2) | trackbacks(0) |
(メモ)Antiword
http://www.winfield.demon.nl/

Wordファイルからテキストデータを抽出するツール。対応プラットフォームが充実しており、VMS、Zaurus、BeOSまでをもサポートしている。
| 関口宏司 | Luceneツール | 08:23 | comments(1) | trackbacks(0) |
+ Solrによるブログ内検索
+ PROFILE
     12
3456789
10111213141516
17181920212223
24252627282930
<< June 2018 >>
+ LINKS
検索エンジン製品 - 比較のポイント
商用検索エンジンを購入した企業担当者は読まないでください。ショックを受けますから・・・
>>製品比較 10のポイント
+ Lucene&Solrデモ
+ ThinkIT記事
+ RECOMMEND
Apache Solr入門 ―オープンソース全文検索エンジン
Apache Solr入門 ―オープンソース全文検索エンジン (JUGEMレビュー »)
関口 宏司,三部 靖夫,武田 光平,中野 猛,大谷 純
+ RECOMMEND
Lucene in Action
Lucene in Action (JUGEMレビュー »)
Erik Hatcher,Otis Gospodnetic,Mike McCandless
FastVectorHighlighterについて解説記事を寄稿しました。
+ RECOMMEND
+ SELECTED ENTRIES
+ RECENT COMMENTS
+ RECENT TRACKBACK
+ CATEGORIES
+ ARCHIVES
+ MOBILE
qrcode
+ SPONSORED LINKS