Fess 5.0 リリース

最近、書く時間がなくて、このブログも放置気味な感じですけど…。そんな感じですが、先週、Fess 5 をリリースしました。Fess 5では

  • Tomcat 7
  • Solr 3.5
  • ジオサーチ対応
  • 各種依存ライブラリの更新

という感じで新機能的な感じは少ないですけど、まぁ、機能的には(たぶん)十分に揃っているかと。以下で入手可能です。

http://sourceforge.jp/projects/fess/releases/

次の Fess 5.1 はUIの変更やlucene-gosenを統合したりとか、細々としたことを入れてリリースしたいと考えています。まぁ、もしかしたら、バージョンは 5.5 とかにするかもしれないけど。

あとは、今週、第7回 Solr&検索エンジン勉強会で話した資料は以下に置いておきました。

http://www.slideshare.net/shinsuke/solr-fess

という感じで、どんどん使ってくださいー。

人工データを作る

Mahoutというか,その中にはそれっぽいライブラリが見つからなかったのだけど,科学技術計算の実験系で人工データを作りたいときに困ったので作ってみた.

import java.io.Serializable;
import java.util.Random;
import org.apache.mahout.math.DenseVector;
import org.apache.mahout.math.Vector;
public class SyntheticDataGenerator implements Serializable {
private static final long serialVersionUID = 1L;
private Random[] randoms;
private double[] means;
private double[] stdevs;
public SyntheticDataGenerator(long seed) {
means = new double[1];
means[0] = 0;
stdevs = new double[1];
stdevs[0] = 1;
init(seed, 1, means, stdevs);
}
public SyntheticDataGenerator(long seed, int cardinality, double[] means,
double[] stdevs) {
init(seed, cardinality, means, stdevs);
}
private void init(long seed, int cardinality, double[] means,
double[] stdevs) {
if (cardinality != means.length || cardinality != stdevs.length) {
throw new IllegalArgumentException("Invalid cardinality.");
}
randoms = new Random[cardinality];
for (int i = 0; i < cardinality; i++) {
randoms[i] = new Random(seed + i);
}
this.means = means;
this.stdevs = stdevs;
}
public double nextDouble() {
return nextDouble(0);
}
protected double nextDouble(int i) {
return randoms[i].nextGaussian() * stdevs[i] + means[i];
}
public double[] nextDoubles() {
double[] values = new double[randoms.length];
for (int i = 0; i < randoms.length; i++) {
values[i] = nextDouble(i);
}
return values;
}
public Vector nextVector() {
return new DenseVector(nextDoubles());
}
}

1次元の正規分布に基づく人工データを作りたいときには以下な感じ.

double[] means = new double[1];
double[] stdevs = new double[1];
means[0] = 10; // 平均 10
stdevs[0] = 5; // 標準偏差 5
SyntheticDataGenerator generator = new SyntheticDataGenerator(0, 1, means, stdevs);

あとは,generator.nextDouble() で値を取得していくと指定した分布の乱数が取得できる.そんで,多次元のデータが欲しい場合は,各次元ごとのmeansとstdevsを配列に格納して,generator.nextDoubles() としてやれば配列がとれるし,nextVector()でMahoutのVectorとして取得できる.

Fess 4.1.0リリース

4.0.0から半年以上経過してしまいましたが,ようやく4.1.0をリリースしました.新機能の追加というよりバグなどの対応が主になるかと思います.まぁ,バグと言ってもFess自体のはあまりなくて,Tikaとか,PDFBoxとか,HttpClientとか利用しているものたちに起因するものがほとんどかと思います.そういうこともあって,ここまで来るのに時間がかかった気もします.一応,新機能的なところとしては,Solrの持つファセットも利用できるようになりました.という感じで,4.x系はバグ対応的なリリースしか今後はせずに,基本は5.x系に注力していく予定です.っで,次のFess 5.0では,Tomcat 7とSolr 3.2の採用を考えています.これらがさくっとできれば,すぐに5.0がリリースされると思いますし,そうでなければちょっと時間がかかるかも.そんな感じですが,引き続きよろしくお願いしますー.

http://fess.sourceforge.jp/ja/