FessでFunctionQueryの値を表示する

次のバージョンのFessでは(8.2以降)、SolrのFunctionQueryの値を表示できるようにしてみた。実行したいFunctionQueryとかは、app.diconのQueryHelperImplで指定する。

<component name="queryHelper"   class="jp.sf.fess.helper.impl.QueryHelperImpl">
...
<initMethod name="addQueryParam">
<arg>"word"</arg>
<arg>new String[]{"$query"}</arg>
</initMethod>
<property name="responseFields">new String[]{"id", "score", "boost",
"contentLength", "host", "site", "lastModified", "mimetype",
"tstamp", "title", "digest", "url", "clickCount_i", "favoriteCount_i",
"screenshot_s_s", "wordcount:wordfreq(content,$word)"}</property>
...

上記では、wordfreq(field,word)というFess独自のFunctionQueryをwordcountというフィールドとして扱えるようにしている。Solrの利用可能なFunctionQueryについては、ここに書いてある。wordfreqの第一引数はフィールド名だが、第二引数はリクエストパラメータのqueryから取得したいので、addQueryParamでwordcount:wordfreq(content,$word)の$wordをリクエストパラメータのqueryに置き換えを行う。つまり、addQueryParamのところで$queryとすれば、リクエストパラメータに置き換わる想定。
あとはsearchResults.jspとかで、${doc.wordcount}とすればFunctionQueryの値が表示される感じ。xmlやjsonのレスポンスにもwordcountとして値を取得可能です。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です