カスタム検索
ラベル confluence の投稿を表示しています。 すべての投稿を表示
ラベル confluence の投稿を表示しています。 すべての投稿を表示

2008年12月18日木曜日

覚えておくと便利なConfluenceのウラワザ

Confluenceの2.9.2を入れて数日、日本語で検索をした時にエラーが出ます。

エラーメッセージを見ると StringIndexOutOfBounds エラーが出ているもよう。

・英語での検索はエラーが出ない
・前のバージョンと比べて、検索結果でハイライトされるようになった

以上の結果から検索結果の文字をハイライトする時の文字数計算が2バイト考慮されてなくてエラーが出てるのではないかと推測

まずは検索結果の decorators/components/search-results.vmd を見てみる
該当部分は以下

<ul class="search-results">
#foreach($searchResult in $results)
<li>
#searchResult($searchResult $showExcerpts $queryString)
</li>
#end
</ul>


searchResultを消してしまうと検索結果がでないので、この searchResultがどこにあるかを探っていくと、以下にたどりついた
template/includes/macros.vm
該当部分は以下

#set ($summary = $generalUtil.makeSummary($contentBody, $queryString))
#elseif ($searchResult.type == "attachment" && $contentBody)
#set ($summary = $generalUtil.makeSummary($contentBody, $queryString))
#elseif ($searchResult.type == "attachment" && $searchResult.comment)
#set ($summary = $generalUtil.makeSummary($searchResult.comment, $queryString))


GeneralUtilクラスのmakeSummaryがダメダメっぽい

APIを見てみる > http://docs.atlassian.com/com/atlassian/confluence/atlassian-confluence/latest/com/atlassian/confluence/util/GeneralUtil.html

Summary型を返さないといけないので、ここをはぶいてしまうと検索は出来るけど、検索結果がページタイトルしかでなくなってしまう
makeSummaryを見てみると、 content だけをうけとるのと、 contentとqueryを受け取るメソッドがあるのがわかる。
queryのハイライトが問題なんで、contentだけを渡すメソッドに書き換えてみる。


#set ($summary = $generalUtil.makeSummary($contentBody))
#elseif ($searchResult.type == "attachment" && $contentBody)
#set ($summary = $generalUtil.makeSummary($contentBody))
#elseif ($searchResult.type == "attachment" && $searchResult.comment)
#set ($summary = $generalUtil.makeSummary($searchResult.comment))


ここのテンプレートは再起動しないと反映されないので、confluenceを再起動。
検索してみると、無事検索がとおり、検索結果にページタイトルと中身の一部が表示された! :D

2008年12月10日水曜日

報道されないConfluenceの裏側

Confluenceの移行をしていてハマったのでめもめも

・Confluenceはメジャーバージョンが変わると復元が出来ない
・フルバックアップが2GBを超える場合は処理出来ない(おいおい)

さて困った

とりえあずスペースでバックアップして復元してみると、メジャーバージョンが違うからだめだよ。と・・・
バックアップファイルを解凍して中を覗いてみると、exportDescriptor.properties の buildNumber というそれっぽいものを発見
とりあえずこれを新しいバージョンのbuildNumberにかえてインポートしてみる・・・できた! :D

ユーザとかはDBから直接もってきたりしたけどNGだった :(
同じユーザIDでユーザを作ってやると履歴とかはちゃんと表示されたので、ちょっと安心

しかし無理矢理感がいなめない・・・なんか正しい移行方法があるのかぁ

2008年12月9日火曜日

いとしさと切なさとCnetOS on Confluence 

CentOSにGlassFishのせてConfluenceしてみよう

まずjdk5インスコ

jdk-1_5_0_16-linux-i586-rpm.bin
を落としてくれば実行するだけでおk

デフォのjava1.4をリプレイスしとく
mv /usr/bin/java /usr/bin/java_14
ln -s /usr/java/jdk1.5.0_16/bin/java /usr/bin/java

JAVA_HOMEの設定も忘れずに

お次にGlassFishインスコ
http://download.java.net/glassfish/v3-prelude/release/glassfish-v3-prelude-ml.zip
をダウンロードしてきて、適当な場所に解凍
解凍したフォルダ/bin/asadmin start-domain
で起動

でもってConfluenceインスコ
最新版は2.10ですが、日本語環境は2.9なので、2.9をダウンロードします
http://www.atlassian.com/software/confluence/downloads/binary/confluence-2.9.1.tar.gz
日本語化パッケージ
http://www.atlassian.co.jp/software/confluence/confluence-ja-2.9.0.jar

解凍したら confluence/WEB-INF/lib に上記日本語パッケージをコピーします

confluence/WEB-INF/classes/confluence-init.properties
で、データ保存場所を指定
sh build.sh
を実行すると dist/confluence-2.9.war が作成される。

作成されたファイルを glassfish へデプロイする
cp dist/confluence.war /usr/local/glassfish/glassfish/domains/domain1/autodeploy
この時 war の名前がコンテキスト名になるので、好きな名前に変えておくよろし

http://server:8080/confluence
にアクセスするとConfluenceのセットアップウィザードが立ち上がれば後は煮るなり焼くなり!