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

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

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

    OMG,到底在尋找什么..................
    (構(gòu)造一個(gè)完美的J2EE系統(tǒng)所需要的完整知識(shí)體系)
    posts - 198,  comments - 37,  trackbacks - 0
    原貼地址:
    ? 已加入OpensymphonyCompass 是對(duì)Lucene搜索引擎在企業(yè)應(yīng)用(數(shù)據(jù)庫應(yīng)用)中的增強(qiáng)。 Lucene本身的API已經(jīng)非常簡(jiǎn)單,看看IBM DW上的Beef up Web search apps with Lucene已經(jīng)大概了解,那Compass還能做什么樣的增強(qiáng)呢?

    ???? 1.在我的項(xiàng)目里,最實(shí)際的增強(qiáng)就是Data Mirror功能。

    ????? DataMirror會(huì)把數(shù)據(jù)庫的增刪改變化實(shí)時(shí)映射到索引文件中。如果你采用Hibernate等ORM方案,你只須在POJO中進(jìn)行annotation注釋,Compass就會(huì)與Hibernate的event機(jī)制結(jié)合,或者使用AOP的方式,自動(dòng)在數(shù)據(jù)庫增刪改時(shí)變更索引;如果你只是采用JDBC,也可以在XML文件配置Table Mapping或ResultSet Mapping,指定version列,Compasss定時(shí)進(jìn)行索引更新。而且,Compass還支持事務(wù),在查詢數(shù)據(jù)庫遍歷結(jié)果集的過程中如果出現(xiàn)異常,會(huì)在Index Segments 文件一級(jí)進(jìn)行事務(wù)控制。

    ??? 如果沒有Compass,我們一般會(huì)在每天深夜重建一次索引。相比Compass的做法,
    ??? 一來反應(yīng)遲緩,平均延時(shí)半天;
    ??? 二來效率沒有Compass高。如果采用完全重建索引,效率就不用說了。如果進(jìn)行增量索引,就要增加一個(gè)字段,在數(shù)據(jù)更新時(shí)進(jìn)行特殊的處理,刪除時(shí)也不能直接刪除數(shù)據(jù),要等lucene刪完索引它才能刪除,這樣Lucene對(duì)應(yīng)用就非常不透明了。
    ??? 三來不支持事務(wù),如果建立索引過程中出現(xiàn)異常,索引文件的狀態(tài)是不可控的。

    ??? 2.Compass對(duì)查詢的API也作了一定簡(jiǎn)化,可以考慮使用。

    ??? 詳見參考文檔 10.5 Searching, 簡(jiǎn)單直接用session find,如

    CompassHits?hits?=?session.find("name:jack");

    ???加入排序,改分詞Analyzer,用QueryBuilder()

    CompassHits?hits?=?session.createQueryBuilder()
    ??.queryString(
    "+name:jack?+familyName:london")
    ????.setAnalyzer(
    "an1")?//?use?a?different?analyzer
    ??.toQuery()
    ????.addSort(
    "familyName",?CompassQuery.SortPropertyType.STRING)
    ??.hits();


    3. Compass的其他功能,用不用的上要看緣份了:?

    ?? 將Lucene的索引文件放入數(shù)據(jù)庫或內(nèi)存。
    ?? 對(duì)索引文件根據(jù)不同的主題分開subIndex。
    ???對(duì)XML數(shù)據(jù)進(jìn)行映射和索引....

    4.一段Pragmatic的Compass 搜索程序是這樣寫的:

    1.用annotation將pojo映射為searchable。(詳細(xì)請(qǐng)看參考文檔,如果沒有JDK5,可以參考XML式的配置)

    public?class?Product??{??
    ?@SearchableId
    ?
    private?Integer?id;
    ?
    private?String?name;
    ?@SearchableProperty(name?
    =?"name")
    ????
    public?String?getName()?{
    ????????
    return?this.name;
    ????}
    }

    2.用Compass提供的Spring2 Schema 來配置Compass與Hibernate,Spring的結(jié)合。
    ???SchemaBase的配置是Spring 2.0的新特征,相比原來的配置代碼要少一些。

    3.編寫搜索結(jié)果顯示頁,將Hits,Command,Page三個(gè)變量顯示出來。
    ?? Compass的代碼重用已經(jīng)到了Controller一級(jí),只要給Controller 配上compass bean和結(jié)果顯示的jsp就可以了。Controller提供足夠的配置參數(shù),使它完全可以被配置重用,這是個(gè)值得SpringSide學(xué)習(xí)的地方。
    ? ?即使你的web應(yīng)用不是采用Spring MVC,如果沒有大規(guī)模改寫的需求,也可以直接使用,讓Struts與Spring MVC并存。

    ?5.Controller默認(rèn)的查詢需要擴(kuò)展時(shí)

    ??? Contrller默認(rèn)的查詢是在所有fileld里查詢關(guān)鍵字,如果需要限定field,加入排序,加入and ,exclude,模糊查詢等就不適用了。高級(jí)搜索頁一般會(huì)提供比較多的過濾條件輸入框讓用戶輸入,然后在Controller對(duì)這些輸入條件進(jìn)行重新組合。

    ??? 組合的方式既可以按

    ??? 也可以用類似Hibernate Criteria API的方式,如:

    CompassHits?hits?=??session.createQueryBuilder().bool()
    ????.addMust(?queryBuilder.term(
    "name",?"jack")?)
    ????.addMustNot(?queryBuilder.term(
    "familyName",?"london")?)
    ??.toQuery()?.hits();


    ??? 因此,如果你的Lucene應(yīng)用是面向數(shù)據(jù)庫的,就不妨用一下Compass。
    ???? Compass另一個(gè)讓我學(xué)習(xí)的地方是它充分考慮用戶客戶化的需要,enough thing can be configure ,從而連Controller也可以重用的做法。?


    <2006年11月>
    2930311234
    567891011
    12131415161718
    19202122232425
    262728293012
    3456789

    常用鏈接

    留言簿(1)

    隨筆分類

    隨筆檔案

    IT風(fēng)云人物

    文檔

    朋友

    相冊(cè)

    經(jīng)典網(wǎng)站

    搜索

    •  

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 欧洲亚洲综合一区二区三区| 毛片免费在线观看| 亚洲性日韩精品国产一区二区| 国产在线播放线91免费| 亚洲宅男天堂a在线| 国产三级电影免费观看| 最近免费mv在线观看动漫| 亚洲看片无码在线视频| 久久亚洲欧洲国产综合| 99热在线精品免费全部my| 成av免费大片黄在线观看| 男人天堂2018亚洲男人天堂| 亚洲色精品vr一区二区三区| 久久不见久久见免费影院| 国产在线精品一区免费香蕉 | 亚洲福利一区二区精品秒拍| 成人永久免费福利视频网站| 午夜免费福利片观看| 国产亚洲综合精品一区二区三区| 亚洲AV日韩AV永久无码绿巨人| 国产网站免费观看| 在线观看永久免费| 久久性生大片免费观看性| 午夜在线a亚洲v天堂网2019| 亚洲av无码一区二区三区网站 | 免费观看激色视频网站(性色)| aa午夜免费剧场| 亚洲第一成年网站视频| 亚洲自偷自拍另类图片二区| 亚洲中文字幕无码中文字在线| 尤物永久免费AV无码网站| 久草免费在线观看视频| 成全视频高清免费观看电视剧| 深夜福利在线免费观看| 亚洲毛片基地4455ww| 亚洲经典在线观看| 亚洲男人的天堂在线播放| 亚洲热线99精品视频| 亚洲中文字幕无码爆乳av中文| 日韩一品在线播放视频一品免费| 日韩不卡免费视频|