不做浮躁的人
          正在行走的人...
          posts - 171,  comments - 51,  trackbacks - 0
          通用元數據提供了將元數據名稱和別名定義從osem文件提取到外面的方式。當你的應用程序有大量的域模型時尤其有用。另外一個優勢就是添加額外的信息倒元數據中,不如描述。也能制定元數據定義的格式,這樣就不用在osem?文件中定義了 。
          通過集中話元數據,其它工具也能更好地利用這些信息。
          OSEM文件引用通用元數據的方式是采用${}.

          query syntax:
          jack :缺省的查詢域中包括jack字段。
          jack london:缺省的查詢域中包括 jack?或 london, 或者2者都有。
          +jack +london: 缺省的查詢域中必須包括jack和london。
          name:jack:name字段中包括jack。
          name:jack -city:london :name字段中包括jack但是city字段中不包括london。
          name:"jack london"?:name字段中包括jack london短語。
          name:"jack london"~5 :name字段包括至少5次jack and london短語
          jack* 包含以jack開頭的詞條。
          jack~ 包括以jack結尾的詞條。
          birthday:[1870/01/01 TO 1920/01/01] birthday從1870-01-01到1920-01-01。


          CompassHits, CompassDetachedHits & CompassHitsOperations:
          compassHits:所有的搜索結果都是通過該接口訪問。只能用在事務上下文中。如果脫離上下文,則需要detached。compassHits和compassDetachedHits都共享相同的操作接口:compassHitsOperation。

          getLength() or length() :得到搜索資源的長度
          score(n) 第n個搜索資源的分值。
          resource(n) 第n個搜索資源
          data(n) 第n個對象實例。

          CompassQuery and CompassQueryBuilder:
          CompassQueryBuilder提供了程序創建compassQuery的功能。compassQuery能夠用來添加排序和執行查詢。
          CompassHits hits = session.createQueryBuilder()
          .queryString("+name:jack +familyName:london")
          .setAnalyzer("an1") // use a different analyzer
          .toQuery()
          .addSort("familyName", CompassQuery.SortPropertyType.STRING)
          .addSort("birthdate", CompassQuery.SortPropertyType.INT)
          .hits();

          CompassQueryBuilder queryBuilder = session.createQueryBuilder();
          CompassHits hits = queryBuilder.bool()
          .addMust( queryBuilder.term("name", "jack") )
          .addMustNot( queryBuilder.term("familyName", "london") )
          .toQuery()
          .addSort("familyName", CompassQuery.SortPropertyType.STRING)
          .addSort("birthdate", CompassQuery.SortPropertyType.INT)
          .hits();

          注意排序的屬性必須是un_tokenized。

          OSEM映射文件:
          <class name="eg.A" alias="a">
          <id name="id" />
          <property name="familyName">
          <meta-data>family-name</meta-data>
          </property>
          <property name="date">
          <meta-data converter-param="YYYYMMDD">date-sem</meta-data>
          </property>
          Working with objects
          Compass - Java Search Engine 78
          </class>
          查詢方式:采用compassQueryBuilder,許多查詢可以直接工作在mapping的層次上。
          CompassQueryBuilder queryBuilder = session.createQueryBuilder();
          CompassHits hits = queryBuilder.term("a.familyName.family-name", "london").hits();
          // 采用類屬性的元數據id, 在上面的例子中將采用第一個元數據.
          CompassHits hits = queryBuilder.term("a.familyName", "london").hits();
          //查詢編輯器將會采用相應的轉化器轉換數據。
          CompassHits hits = queryBuilder.term("a.date.date-sem", new Date()).hits();
          CompassHits hits = queryBuilder.bool()
          .addMust( queryBuilder.alias("a") )
          .addMust( queryBuilder.term("a.familyName", "london") )
          .toQuery().hits();

          CompassHighlighter:提供高亮度匹配搜索的文字字段。
          CompassHits hits = session.find("london");
          String fragment = hits.highlighter(0).fragment("description");
          高亮度只能用于CompassHits,只能用在事務上下文中。

          在detachedHits中使用高亮度:
          CompassHits hits = session.find("london");
          //在事務上下文中處理高亮度。
          for (int i = 0.; i < 10; i++) {
          hits.highlighter(i).fragment("description"); // this will cache the highlighted fragment
          }
          CompassHit[] detachedHits = hits.detach(0, 10).getHits();
          // outside of a transaction (maybe in a view technology)
          for (int i = 0; i < detachedHits.length; i++) {
          // this will return the first fragment
          detachedHits[i].getHighlightedText().getHighlightedText();
          // this will return the description fragment, note that the implementation
          // implements the Map interface, which allows it to be used simply in JSTL env and others
          detachedHits[i].getHighlightedText().getHighlightedText("description");
          }
          posted on 2006-12-02 14:54 不做浮躁的人 閱讀(3335) 評論(1)  編輯  收藏

          FeedBack:
          # re: compass學習筆記3
          2007-09-13 03:52 | jlive@live.com
          請問 compass支持cascade嗎

          如果我根據A的某個字段檢索出了A,B會同時被檢索出來嗎

          我在一個應用里做的時候顯示B是 null


            回復  更多評論
            

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           

          <2006年12月>
          262728293012
          3456789
          10111213141516
          17181920212223
          24252627282930
          31123456

          常用鏈接

          留言簿(9)

          隨筆分類(31)

          隨筆檔案(75)

          文章分類(1)

          文章檔案(3)

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 陆良县| 凤翔县| 合水县| 炎陵县| 夏邑县| 满洲里市| 安泽县| 手游| 锡林浩特市| 乌拉特后旗| 普兰县| 镇坪县| 康保县| 西丰县| 镇原县| 毕节市| 陆良县| 方城县| 岱山县| 明溪县| 呼伦贝尔市| 莆田市| 秦皇岛市| 栾城县| 堆龙德庆县| 华蓥市| 平阴县| 花莲市| 绩溪县| 河西区| 兴山县| 曲麻莱县| 临武县| 分宜县| 昭平县| 合作市| 鄂伦春自治旗| 北流市| 湄潭县| 金平| 喀什市|