<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| 无码国产精品一区二区免费模式 | 色偷偷亚洲第一综合| 亚洲综合精品网站在线观看| 在线观看肉片AV网站免费| 亚洲精品123区在线观看| 亚洲精品国产高清嫩草影院| 99久久久国产精品免费牛牛| 亚洲精品V天堂中文字幕| 亚洲国产精品无码成人片久久 | 日本成人在线免费观看| 中文字幕不卡免费高清视频| 亚洲AV一二三区成人影片| 在线播放亚洲第一字幕| 亚洲人成电影网站免费| 久久成人18免费网站| 亚洲熟妇无码av另类vr影视| 人人狠狠综合久久亚洲88| 国产yw855.c免费视频| 国产精品成人免费福利| 一级成人生活片免费看| 亚洲中文字幕乱码一区| 亚洲AV无码成人精品区在线观看 | 在线免费观看国产| 日本永久免费a∨在线视频| 亚洲不卡影院午夜在线观看| 亚洲国产美国国产综合一区二区| 亚洲av成人一区二区三区在线观看| 亚洲第一网站免费视频| 99久久免费国产精精品| 亚洲乱码日产精品一二三| 亚洲嫩模在线观看| 自拍偷自拍亚洲精品第1页| 国产成人在线观看免费网站| 999久久久免费精品国产 | 免费无码又黄又爽又刺激| 久草视频在线免费看| 韩国免费A级毛片久久| 黄色免费网站在线看|