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美元)
          主站蜘蛛池模板: 化德县| 雅江县| 嫩江县| 安康市| 崇信县| 灵山县| 太仓市| 田东县| 康乐县| 海淀区| 鸡泽县| 拜泉县| 九台市| 宁乡县| 衡阳市| 云安县| 龙陵县| 曲松县| 灌阳县| 辉县市| 垦利县| 金湖县| 清原| 湛江市| 西乌珠穆沁旗| 祁阳县| 宁波市| 昭通市| 龙泉市| 札达县| 宁海县| 越西县| 博客| 霍邱县| 广安市| 改则县| 呼图壁县| 双鸭山市| 鱼台县| 滨州市| 青阳县|