今日のcodesearch

今日のcodesearchの更新は、codesearch側には大した変更はないのだが、Fess側に改善系の修正が入れたのでいくつか修正点がある。

内部的なところの話だが、FessとElasticsearchの通信にはcurl4jを使っているのだけど、これが今までgzipしてなかったので、デフォルトで利用されるように変更してみた。

あとは、Fessのビルドでbootstrap.min.cssをminifyしてしまっていたのだけど、これをしたことにより、CSSのcalc(a + b)みたいな関数がcalc(a+b)になってしまい、演算子の周辺にスペースがないからブラウザに認識されない状態になってしまっていた…。なので、数ピクセルズレる箇所があったりと…。

という感じで、codesearchというよりは普通にFessの改善系の話でした。

今日のcodesearch

ソースコード検索のcodesearch.codelibs.orgですが、ちょっとずつ更新はしてきているけど、今日はファセット表示まわりを変更してみた。ファイルの種類のところがクエリーファセットだったので、数が多い順とかの表示ができなかったので、フィールドファセットに変更することで、多い順に表示されるようになった。

検索結果の方でも利用しているファセットが一通り表示されるようにしたり、細かいところだが、githubのorganizationのアイコンも表示されるようにしたりしてみた。

JSP上で、fess_label.propertiesに登録されていたら、そのメッセージを使ってなければデフォルト文字列を表示するというのをできるようにするため、Fess側にはfe:message(key, default)的なものを追加してみた。

課題にいろいろと対応してきているけど、大きめな課題としては、ファイルの種類の判定がおかしいものを調査していく感じだろうか。一度、再クロールすれば、そこそこ解決される可能性もあるが、Tikaの判定ロジックの怪しさが残る部分はある気もする…。

ファイルの種類判定問題は、地道にみていくとして、そろそろ本題の検索としての付加価値を付ける、というところに取り組んでいかねばならない。今考えている一つのネタとしては、意味での検索を実現する、というところかなと。

Fess 13.4.1

いつものメンテナンスリリースだと、特に機能追加とかしていないのだけど、今回はcodesearch.codelibs.orgを作っているというのもあり、いろいろと修正してしまった。主にファセットの表示まわりが今までだと、XMLファイルで指定しないと変えることができなかったのだけど、これだとDockerとかで起動している場合とかにはファセットの表示内容の調整とかが難しいので、fess_config.propertiesに移して、query.facet.*あたりの値で調整しやすくなったと思う。この辺の設定を変えておいた上で、JSP上で表示するように記述すればOK。

これのリリースに合わせて、docker-codesearchもタグを打った。まだまだ調整が必要なところもあるけど、ひとまず、開発現場とかでソースコードの検索とかに使えるように整理した。https-portalを使っているので、パブリックなサイトであれば、SSLも普通に使うことができるはず。イントラのドメインとかで使う場合はhttps-portalの情報を確認してもらえればよいかと。あとは、codesearch.codelibs.orgではAdWordsやTagManagerとかが入っているのだけど、これらはFessの環境変数機能を使っているので、管理画面の全般でfess.gtm_id=…みたいにシステムプロパティを設定しないと表示とかはされません(なので、広告とかは表示されなはず)。

という感じで、今回はいろいろと必要なものを追加した気がするけど、docker-codesearchはソースコード検索に特化した感じだけど、その他、何かのドメインに特化した検索を作りたい場合とかはこれを参考にして作れば、独自の特化型検索サーバとかが作れるのではないかと思います。

という感じのFess 13.4.1でした。

codesearch.codelibs.orgの更新

ソースコード検索のcodesearch.codelibs.orgを地道に更新している感じですが、現在はスター数が多い1000レポジトリくらいを対象にしてインデックスしています。最近、ちょっとレスポンスが悪くなってきていたというのもあり、いろいろと変更を入れたりした。

まず、インデクシングするときのAnalyzerを変更してみたりした。デフォルトのまま使っていたので、englishなstemmingしてたりするのをやめて、ソースコードの検索に合うような感じにちょっと変えてみた。でも、トークンが増えそうな気もするので、もしかしたらレスポンスが落ちて再調整するかも…。

次にトップページがちょっとさみしいので、organizationやrepositoryとかも表示されるようにしたりしてみた。これをするためには、Fess自体の修正も入れたりした。なので、最新のFessではファセットをfess_config.propertiesで指定できるようになっている。

あとは細々とした修正を入れたりした感じではある。GitHubの方に手順をコメントしたので、同じものをローカルに作って試せるようになってきて入ると思う。(クリーンな状態からの構築を試していないから、実際に試すと何かしないと動かない可能性もあるけど…)

Fess 13.4.1をリリースしたら、これもバージョニングしていこうかなとも思っている。

Code Search for Fess

Fessをソースコードの検索に利用している話もよく聞くのだが、Fessは一般的な全文検索向けに作っているので、ソースコード検索観点だとちょっと物足りない部分も出てくる。というわけで、ソースコード検索に特化した設定にするにはどうするのが良いだろうか?ということで、codesearch.codelibs.orgを作りはじめた。

まだ、しばらくはcodesearch.codelibs.orgの改善ベースで進めていくと思うので、これを各開発サイトに導入とかは難しいのだが、このサイト自体の開発のコードはdocker-codesearchでオープンなので、落ち着いてくればDockerで簡単に立ち上げて利用できるようになるはず…。

という感じで、必要な変更自体も Fessにいろいろと入れ始めているが、Tikaのmimetype判定がおかしい部分があったり、ファセットまわりの性能問題や汎用化など、細々とした課題があるので、地道に修正が必要そうではある。