エラーメッセージを見ると 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
0 件のコメント:
コメントを投稿