<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 33,  comments - 11,  trackbacks - 0
     

    上面的只講了Compass的建立索引也就是存儲對象和加載對象,這里講一下Compass的搜索查詢功能。上面說了CompassHibernate是非常像的。Hibernate查詢的時候用的是CriteriatQueryCompass里用的是CompassQuery具有以上兩個的功能。

    還是拿上面的例子做例子吧:

    在上面的JUnit測試用例里加入:

    public void InsertCompass()

        {

            CompassConfiguration comConfig = new
    CompassConfiguration().configure().addClass(Article.class);

            Compass com = comConfig.buildCompass();

            CompassSession comSession =
    com.openSession();

            CompassTransaction comTx =
    comSession.beginTransaction();

            

            Article article = new Article();

            article.setId((long)0);

            article.setContent("Compass學習文檔");

            article.setTitle("學習Compass查詢");

            article.setPublishDate(new Date());

            comSession.save(article);

            article = new Article();

            article.setId((long)1);

            article.setContent("Compass是第一個基于lucenejava開源框架");

            article.setTitle("學習Compass");

            article.setPublishDate(new Date());

            comSession.save(article);

            comTx.commit();

        }

    就是插入兩個對象數據。

    下面我們就搜搜體驗一下吧:

    public void TestQuery()

        {

    CompassConfiguration comConfig = new
    CompassConfiguration().configure().addClass(Article.class);

            Compass com = comConfig.buildCompass();

            CompassSession session =
    com.openSession();

            CompassTransaction tx =
    session.beginTransaction();

            CompassHits hits =
    session.queryBuilder()

            
    .queryString("titleIndex:
    學習")

            
    .toQuery()

          
    .addSort("title",
    CompassQuery.SortPropertyType.STRING)

          
    .addSort("publishDate",CompassQuery.SortPropertyType.INT)

            
    .hits();

            for(int
    i=0;i<hits.getLength();i++)

            {

                System.out.println(((Article)hits.data(i)).getTitle());

            }

        }

    輸出結果是

    學習Compass查詢

    學習Compass

    其實Compass完全沒畢要那么羅嗦,它就是為了依照Hibernate來的。讓會Hibernate的程序員可以很容易的掌握Compass。搜索的前一部分就不說了,和Hibernate的初始化一樣且前面也講了,從CompassHits開始吧。

    可以看到:搜索就用到CompassHits,QueryCompassQueryBuilder這一點又和lucene很像。

    session.queryBuilder()返回CompassQueryBuilder的對象,再調用queryString來查詢搜索字串。可這個構造字串就有學問了:“titleIndex:學習”表示指明字段名搜索,如果想指明多個字段呢可以用空格和“+”隔開如:“titleIndex:學習 +contentIndex:第”

    注意:查詢字串里的標識不是對象的屬性,而是對象的屬性映射成索引的名字,這個是可以在Article.cmp.xml里看到的。還有就是一定要在兩個搜索內容之間加空格要不然什么都搜不到。

    addSort就是對搜索出的結果按一定的順序排序。

    Hits()呢就是返回hits結果集吧。

    最后用個for循環利用hits.data(i)將結果遍歷輸出。

    上面的例子達到了HibernateQuery的功能。而CompassQuery還有和Criteriat功能一樣的:再看個搜索的例子吧:

    CompassConfiguration comConfig = new
    CompassConfiguration().configure().addClass(Article.class);

            Compass com
    = comConfig.buildCompass();

            CompassSession
    session = com.openSession();

            CompassTransaction
    comTx = session.beginTransaction();

            CompassQueryBuilder
    queryBuilder= session.queryBuilder();

            CompassQuery
    compassQuery = queryBuilder.bool().addMust(queryBuilder.le("titleIndex", "
    學習")).toQuery();

            CompassHits
    hits = compassQuery.addSort("title", CompassQuery.SortPropertyType.STRING).hits();

            for(int
    i=0;i<hits.getLength();i++)

            {

                System.out.println(((Article)hits.data(i)).getTitle());

            }

            comTx.commit();CompassQuery里有lt,le,gt,geCriteriat是一個樣的。不過Compassjar包里沒有eq這個函數,但是在Compass1.1M1的幫助文檔中寫著:

    CompassQueryBuilder queryBuilder = session.createQueryBuilder();
     queryBuilder.bool().addMust(queryBuilder.eq("name", "jack")).addMust(queryBuilder.lt("birthdate", "19500101"))
          .toQuery().hits();

    這個可能是Compass的一個bug

    既然沒有eq我們就用:

    queryBuilder.bool().addMust(queryBuilder.le("titleIndex", "學習")).toQuery();做個演示吧。

    結果理想的。

    具體的用法和Hibernate一樣,也可以查看Compass的幫助文檔。

    posted on 2007-12-18 11:06 方濤升 閱讀(536) 評論(0)  編輯  收藏 所屬分類: lucene

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


    網站導航:
     
    <2007年12月>
    2526272829301
    2345678
    9101112131415
    16171819202122
    23242526272829
    303112345

    常用鏈接

    留言簿(2)

    隨筆分類

    隨筆檔案

    文章分類

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 91精品国产免费| 免费网站看av片| 毛片免费观看的视频在线| 亚洲黄色片免费看| 四虎国产成人永久精品免费| 一个人免费观看日本www视频| 久久久精品2019免费观看| 国产A在亚洲线播放| 亚洲AV日韩AV永久无码色欲| 中文字幕乱码一区二区免费| 亚洲精品无码久久久久sm| 亚洲色精品三区二区一区| 久久精品乱子伦免费| 国产∨亚洲V天堂无码久久久| 大地影院MV在线观看视频免费| 亚洲va久久久噜噜噜久久| 亚洲视频在线观看免费| 中文字幕亚洲免费无线观看日本| 蜜臀AV免费一区二区三区| 中中文字幕亚洲无线码| 国产青草视频免费观看97| 一级毛片一级毛片免费毛片| 国产AV无码专区亚洲Av| 黄色网址免费观看| 亚洲乱码av中文一区二区| 亚洲第一页综合图片自拍| 亚洲国产成人精品无码区二本| 国产免费拔擦拔擦8x| 亚洲爆乳AAA无码专区| 亚洲福利中文字幕在线网址| 国产免费无码一区二区| 亚洲一区二区三区在线| 1000部拍拍拍18勿入免费视频下载| 亚洲AV无码久久久久网站蜜桃 | 免费人成在线观看网站品爱网日本| 精品亚洲成a人片在线观看| 99视频免费在线观看| 亚洲国产高清在线精品一区| 无码国模国产在线观看免费 | 污污网站免费观看| 亚洲高清有码中文字|