asdtiang的博客 感謝blogjava提供的博客交流平臺

          grails searchable highlight顯示查詢結(jié)果

          Posted on 2010-12-22 17:46 asdtiang 閱讀(747) 評論(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"><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)容了。



          天蒼蒼,野茫茫,風吹草底見牛羊

          posts - 80, comments - 24, trackbacks - 0, articles - 32

          Copyright © asdtiang

          asdtiang的博客 PaidMailz
          點擊廣告網(wǎng)賺A(每天4個廣告,每個0.0025美元,一個搜索廣告0.03美元)
          主站蜘蛛池模板: 蒙山县| 龙海市| 曲水县| 江孜县| 泾川县| 双峰县| 嵊州市| 通榆县| 麟游县| 新营市| 三河市| 孟津县| 容城县| 朝阳县| 永顺县| 商城县| 南木林县| 杭锦后旗| 大兴区| 余姚市| 南陵县| 翁源县| 南靖县| 廊坊市| 大兴区| 临沧市| 射洪县| 莱芜市| 分宜县| 黄平县| 民权县| 长泰县| 霍山县| 明水县| 米脂县| 会泽县| 津市市| 彰化县| 余江县| 伽师县| 含山县|