<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)

    隨筆分類

    隨筆檔案

    文章分類

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲欧洲自拍拍偷综合| 亚洲精品伊人久久久久| 久99久精品免费视频热77| 亚洲一级毛片免费在线观看| 国产成人免费高清在线观看| 国内精品免费视频精选在线观看| 亚洲字幕在线观看| 日批日出水久久亚洲精品tv| 久久99热精品免费观看牛牛| 青草久久精品亚洲综合专区| 亚洲av女电影网| 永久久久免费浮力影院| 亚洲免费日韩无码系列| 国产亚洲精aa在线看| 亚洲色欲色欲www在线丝| 男人的好看免费观看在线视频| igao激情在线视频免费| 国产精品亚洲精品青青青| 亚洲自偷自偷在线制服| 午夜爱爱免费视频| 97在线视频免费| 久久嫩草影院免费看夜色| 亚洲 欧洲 视频 伦小说| 亚洲成在人线av| 日韩精品成人亚洲专区| 成年在线观看网站免费| 亚洲精品免费视频| 一级片在线免费看| 亚洲Aⅴ在线无码播放毛片一线天| 亚洲日本在线观看| 国产亚洲精品影视在线产品 | 免费网站看av片| 免费人成动漫在线播放r18| 亚洲不卡中文字幕| 亚洲成人中文字幕| 亚洲中文字幕久久精品无码喷水 | 免费国产真实迷j在线观看| 57PAO成人国产永久免费视频| 国产午夜免费高清久久影院| 永久免费精品影视网站| 亚洲AV无码资源在线观看|