Fessにsmb1://〜を追加

cifsのファイル群をjcifsでクロールしているのだけど、sambaが提供しているjcifsだとSMB1しかアクセスできず、Fess 12.2からjcifs-ngベースのものに移行したのだけど、世の中にはNASとかWindows以外にSMBを話すファイルサーバとかあって、jcifs-ngだと動かないケースがあったりして、なかなかのつらさがある…。

問題が出るファイルサーバとかだと、昔のjcifsベースのものだと動くらしいので、Fessとしてはどうしたものかと考えて、回避策を用意した。普通はsmb://〜で指定するけど、昔のjcifsのSMB1で良いなら、smb1://〜という指定にすれば、昔のjcifsベースの処理で動くようにしてみた。

という感じで、Fess 12.5.2からsmb1://〜を使えるようになる予定。

TikaのLanguageDetector

Tikaには文字列を渡すと、その言語を渡してくれる機能がある。使うためにはまずpom.xmlに以下の依存関係を追加する。

                <dependency>
                        <groupId>org.apache.tika</groupId>
                        <artifactId>tika-langdetect</artifactId>
                        <version>1.20</version>
                </dependency>

あとは、LanguageDetectorを生成して利用する。

import java.io.IOException;

import org.apache.tika.langdetect.OptimaizeLangDetector;
import org.apache.tika.language.detect.LanguageDetector;
import org.apache.tika.language.detect.LanguageResult;

public class LanguageDetectorExample {

    public String detectLanguage(String text) throws IOException {
        LanguageDetector detector = new OptimaizeLangDetector().loadModels();
        LanguageResult result = detector.detect(text);
        return result.getLanguage();
    }
}

上記はTikaにあるexampleコードだが、OptimaizeLangDetectorをnewして、loadModels()でLanguageDetectorを取得する。あとはLanguageDetectorに言語判定したいテキストを渡せば言語情報が返ってくる。

まぁ、とはいえ、そこそこ判定が外れる気もする…。