Posted on 2010-12-22 17:46
asdtiang 閱讀(738)
評論(0) 編輯 收藏 所屬分類:
grails study
查不到中文的結(jié)果,所以這里記一下
以前用lucene時,還比較好控制,用searchable還不太適應(yīng)。

def index =
{

if (!params.q?.trim())
{
return [:]
}

try
{
params.withHighlighter= songHighlighter
return [searchResult: searchableService.search(params.q, params)]

} catch (SearchEngineQueryParseException ex)
{
return [parseException: true]
}
}
// This closure does the per-hit highlighting
// sr is the actual Map returned by search, so use that for storage

def songHighlighter =
{ highlighter, index, sr ->
// lazy-init the storage

if (!sr.highlights)
{
sr.highlights = []
}
//content為domain的屬性
sr.highlights[index] = highlighter.fragment("content")
}// Do the search, passing he highlighter option
頁面更改:
<g:each var="result" in="${searchResult.results}" status="index">
<div class="result">
<g:set var="className" value="${ClassUtils.getShortName(result.getClass())}" />
<g:set var="link" value="${createLink(controller: className[0].toLowerCase() + className[1..-1], action: 'show', id: result.id)}" />
<div class="name"><a href="${link}">${result.title}</a></div>

<div class="desc">${searchResult.highlights[index]}</div>
<div class="displayLink">${link}</div>
</div>
</g:each>
查詢結(jié)果示例,直接輸出的searchResults
{total=3, hits=org.compass.core.impl.DefaultCompassDetachedHits@4eb331, max=10, scores=[0.34462962, 0.34462962, 0.19071755], results=[asdf, asdf, 中國(拼音:Zhōngguó),是中華人民共和國的簡稱。古代華夏族建國于黃河流域一帶,以為居天下之中,故稱。還有一種解釋古代中國人認為天圓地方,中國位于正中,故稱中國,后成為專稱。清朝,作為官方正式稱呼,現(xiàn)代主要指中華人民共和國(英譯為:The People's Republic of China,簡稱China)。 陸地面積960萬平方千米,東部和南部大陸海岸線1.8萬多千米,內(nèi)海和邊海的水域面積約470多萬平方千米。海域分布有大小島嶼7600個。首都北京。中國具有五千年的文明史,是世界四大文明古國之一。因其文化傳播的廣泛性、獨特性和成熟性而對周邊國家和民族的文化產(chǎn)生深遠影響,同時不斷吸收各個民族的文明成果,是世界上少數(shù)最早產(chǎn)生文明并延續(xù)至今的國家之一。 ], offset=0, highlights=[null, null,
中國(拼音:Zhōngguó),是
中華人民共和國的簡稱。古代華夏族建國于黃河流域一帶,以為居天下之
中,故稱。還有一種解釋古代
中國人認為天圓地方,
中國位于正
中,故稱
中國,后成為專稱。清朝,作為官方正式]}
查詢結(jié)果高亮顯示css為b,
只要在css里加上b{color : red;},就顯示為紅色了。
從結(jié)果可以看出,要了highlights就沒有必要要results,信息重復(fù),但each里用了,要下班了,明天研究下吧
剛到公司,想起來了,當時在domain類下重寫了toString()方法,不重寫results里就沒有那么多內(nèi)容了。
天蒼蒼,野茫茫,風吹草底見牛羊