2018年7月1日日曜日

知禅(旧Nyafoo!)が1周年を迎えました

こんばんは。
知禅(旧Nyafoo!)を公開して、1年が経ちました。

当初、30万件程度だったインデックスは、現在2000万件前後に増えています。
サーバーも増えまして、当初2台構成だったクラスタは、現在19台が稼働しています。
構成を多重化しているため、無停止メンテナスできるようになりました。

サービス当初は、インデックス200万件ぐらいで実用的になると思っていましたが、まだまだですね。
この調子だと、1億件ぐらい溜めないと「だいたいのキーワードで使える結果が出てくる検索エンジン」になれないようです。

実用的な汎用検索エンジンになるためには、対象のページを持っていること、持っているページを適切なランクで表示することが必要です。
現在は、まだページが足りていないようです。

2年目も、こつこつホワイトリストを更新しつつ、効率的なインデックス構築に励みたいと思います。

2年目の知禅もよろしくお願いいたします。

2018年4月7日土曜日

FESS11.4.10 crawlerのfileTypeHelperの置き場が変わっていました

結論から言うと、ここです。

/usr/share/fess/app/WEB-INF/env/crawler/resources

env/が増えました。
FESSは時々ディレクトリ構成が変わるため、僕はaptでインストールするとき--reinstallを付けています。

2018年3月7日水曜日

日記。「省く」

今から20年ほど前になります。
エヴァンゲリオンが放映された頃に、アニメ雑誌の創刊バブルが起きました。

その頃、僕は編集プロダクションでバイトしていたのですが、なぜかエロ本の出版社がアニメ雑誌を作りたいと言い出しました。
ふむふむ。
雑誌の方向性なんかを考えたのですが、出て来た結論がぶっとんでいましてね。

「エロとアニメを載せれば、両方の読者が取れる」

こうして、AVとアニメのハイブリッド雑誌が人知れず創刊され、人知れず無くなって行きました。

あれは一体、どういう理屈でああなったのかと思っていましたが、どうも理由らしきものを感じたんですよ。
高度成長期後に生まれた世代と、その前や成長期中とでは大きく「モノ」に対する考え方が違うようなのです。

モノが無い時代は、「1つ買ったら、いっぱい付いてくる」事に価値があったんですね。
一番の成功例はラジカセだと思います。
高度成長期後に生まれた世代は逆で、中途半端なものは要らない。
むしろ、省く事にセンスと価値がある。

日本の会社から、使い物にならない中途半端な物が出続けるのは、決済者がラジカセの成功体験を引きずっているからなんだろうなぁ、と思った次第です。

2018年1月28日日曜日

Fessを動かすサーバーの妥当なスペックは

おはようございます。Nyafooです。
今日はFessを動かすサーバーの目安を書きたいと思います。
僕はAWSを使っているので、AWSのインスタンスで書きます。

●巡回先が20から30サイトのFess
目安として、インデックスが数万件のFessです。
t2.mediumで一応動きます。
すぐにクレジットを使い切るので、巡回先のURLを正規表現で細かく指定する必要があります。
ストレージは数GBで収まるでしょう。

●巡回先が100サイトぐらいのFess
インデックスが10万件を超えるぐらいの規模感です。
m5.largeが1台でまかなえる範囲ですが、制限が増えてきます。
クローリングに掛かる時間が伸びるので、クロール中にメンテナスができなくなります。
FessやElasticsearch、Linuxの設定はデフォルトでも大丈夫でしょう。

●巡回先が1000サイトを超えるFess
インデックスが100万件を超える辺りです。
この辺りからクラスタ構成が必須になります。
Fess、Elasticsearch、Linuxはデフォルト設定で大丈夫でしょう。
まだインスタンスの力押しで行ける範囲でしょう。

●巡回先が1万サイトを超えるFess
インデックスが1000万件を超えます。
本格的なクラスタ構成が必要です。
Fess、Elasticsearch、Linuxもチューニングが必要です。
大規模クラスタ運営の知識を学び、ノードの通信を抑える必要があります。
インデックスは、何もしないと400GBを超えてきます。
インデックスの圧縮やバックアップ方法も考慮しなければなりません。

AWSはスケールさせるときに便利ですが、小規模だと割高になります。
インスタンス1台で運用するなら、国内のクラウドの方が安いかもしれません。
m5.largeのリザーブドインスタンスと比較して決めると良いと思います。

2018年1月20日土曜日

Fess 11.4.7がリリースされたので勝手に解説

Fess11系の新バージョンがリリースされました。
今回はバグフィックス中心のようです。

変更点を勝手に解説します。
※勝手に解説なので、あやふやなところがあります。

#1440
canonicalタグの処理の微調整。

#1437
webクローラーにDefaultLangageを設定可能に。
古いWebサイトだと、lang宣言していないところがあるので助かります。
fess_config.propertiesに、「crawler.document.html.default.lang=」が追加されました。

#1435
ScoreUpdaterが機能追加されました。
Google Analyticsの結果をスコアに反映するようです。

#1432
エラー表示のバグフィックスのようです。

#1431
デフォルト値の変更。

#1430
検索結果のスニペット(抜粋部)のデフォルト値の変更。
スニペットが短くなるようです。

#1425
APIの仕様変更のようですが、詳しいことはわかりませんでした(すいません

#1421
管理者がログを取得する機能のバグフィックスのようです。

#1412
fess-ss.jsからfunction文が取り除かれました。

2017年12月19日火曜日

FESSインデックスと圧縮

FESSのメインインデックスは、油断すると数百GBになってきます。
SSDを増やすにも限度があるので、圧縮することにしました。

fess.yyyymmddインデックスを新しく作るときに、"index"以下に下記の設定を加えました。

    "codec": "best_compression"

低速ですが高圧縮なアルゴリズムに切り替わります。

古いelasticsearchのドキュメントだと、「elasticsearch.ymlに記述する」と書いてありますが、今のelasticsearchではインデックスの設定で記述します。

staticな要素のため、インデックスの作成時か、クローズしたインデックスで指定しなさい、と公式ドキュメントにありますね。

僕は1か月ごとぐらいに_reindexで内容を詰めなおすので、新しく作ったfess.yyyymmddに指定しました。

2017年12月18日月曜日

サムネールを一度断念します

FESSにはサイトのサムネールを表示する機能があります。

サムネールはローカルのファイルシステム上に保存されますが、これが予想以上で…。
まず、サムネールの総容量が100GBを超えてきます。
それから、膨大な数のディレクトリと画像ファイルが生成されます。

サムネールなので「そういうもの」なのですが、今はWebインデックスに注力することにします。

1TBのSSDが楽々アサインできるぐらい儲かったら、再挑戦します。

知禅(旧Nyafoo!)が1周年を迎えました

こんばんは。 知禅(旧Nyafoo!)を公開して、1年が経ちました。 当初、30万件程度だったインデックスは、現在2000万件前後に増えています。 サーバーも増えまして、当初2台構成だったクラスタは、現在19台が稼働しています。 構成を多重化しているため、無停止メンテナ...