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

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

          Posted on 2010-12-22 17:46 asdtiang 閱讀(746) 評論(0)  編輯  收藏 所屬分類: grails study
          查不到中文的結(jié)果,所以這里記一下
          以前用lucene時(shí),還比較好控制,用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ó),是中華人民共和國的簡稱。古代華夏族建國于黃河流域一帶,以為居天下之中,故稱。還有一種解釋古代中國人認(rèn)為天圓地方,中國位于正中,故稱中國,后成為專稱。清朝,作為官方正式稱呼,現(xiàn)代主要指中華人民共和國(英譯為:The People's Republic of China,簡稱China)。 陸地面積960萬平方千米,東部和南部大陸海岸線1.8萬多千米,內(nèi)海和邊海的水域面積約470多萬平方千米。海域分布有大小島嶼7600個(gè)。首都北京。中國具有五千年的文明史,是世界四大文明古國之一。因其文化傳播的廣泛性、獨(dú)特性和成熟性而對周邊國家和民族的文化產(chǎn)生深遠(yuǎn)影響,同時(shí)不斷吸收各個(gè)民族的文明成果,是世界上少數(shù)最早產(chǎn)生文明并延續(xù)至今的國家之一。 ], offset=0, highlights=[null, null, 國(拼音:Zhōngguó),是華人民共和國的簡稱。古代華夏族建國于黃河流域一帶,以為居天下之,故稱。還有一種解釋古代國人認(rèn)為天圓地方,國位于正,故稱國,后成為專稱。清朝,作為官方正式]}


          查詢結(jié)果高亮顯示css為b,
          只要在css里加上b{color : red;},就顯示為紅色了。

          從結(jié)果可以看出,要了highlights就沒有必要要results,信息重復(fù),但each里用了,要下班了,明天研究下吧

          剛到公司,想起來了,當(dāng)時(shí)在domain類下重寫了toString()方法,不重寫results里就沒有那么多內(nèi)容了。



          天蒼蒼,野茫茫,風(fēng)吹草底見牛羊

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

          Copyright © asdtiang

          asdtiang的博客 PaidMailz
          點(diǎn)擊廣告網(wǎng)賺A(每天4個(gè)廣告,每個(gè)0.0025美元,一個(gè)搜索廣告0.03美元)
          主站蜘蛛池模板: 长乐市| 微山县| 通许县| 兴山县| 阳江市| 顺平县| 桑日县| 阳信县| 博罗县| 丹寨县| 涞水县| 沛县| 昌邑市| 上林县| 舞钢市| 邹城市| 新安县| 六安市| 无为县| 竹北市| 曲周县| 六盘水市| 定安县| 湘乡市| 瑞安市| 罗甸县| 徐州市| 山丹县| 蒙山县| 新竹市| 双柏县| 杭锦后旗| 百色市| 高碑店市| 郯城县| 长葛市| 嵩明县| 米脂县| 彝良县| 类乌齐县| 曲靖市|