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

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

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

    posts - 33,  comments - 70,  trackbacks - 0

    Compass

    作者: 地獄男爵

    1.概述

    springside 官方網(wǎng)站: http://www.springside.org.cn

    網(wǎng)站: http://www.compassframework.org/

    Compass是一流的開(kāi)放源碼JAVA搜索引擎框架,對(duì)于你的應(yīng)用修飾,搜索引擎語(yǔ)義更具有能力。依靠頂級(jí)的Lucene搜索引擎,Compass 結(jié)合了,像 Hibernate和 Sprin的流行的框架,為你的應(yīng)用提供了從數(shù)據(jù)模型和數(shù)據(jù)源同步改變的搜索力.并且添加了2方面的特征,事物管理和快速更新優(yōu)化. Compass的目標(biāo)是:把java應(yīng)用簡(jiǎn)單集成到搜索引擎中.編碼更少,查找數(shù)據(jù)更便捷 .

    2.Object/Search Engine Mapping - 配置XML

    OSEM: 對(duì)象搜索引擎影影射(Object Search Engine Mapping),通過(guò)xml配置文件,提供了POJO's (Plain Old Java Objects)到搜索引擎.

    2.1 XML配置

    一般都是 *.cpm.xml 形式 .

    1) package指定了對(duì)應(yīng)java類的包名,
    2)class為pojo類名.contract為公共部分, 子類被可以extends.Property 對(duì) java類的屬性。
    3)資源的Property引用的Search Engine meta-data.
    注意: id為類標(biāo)識(shí).

     <compass-core-mapping package="org.springside.bookstore.domain">  

    <contract alias="product"> <id name="id"/> <property name="name"> <meta-data>${springside.name}</meta-data> </property> <property name="descn"> <meta-data>${springside.descn}</meta-data> </property> </contract>

    <class name="Book" alias="${springside.book}" extends="product"> <property name="author"> <meta-data>${springside.author}</meta-data> </property>
    <property name="publisher"> <meta-data>${springside.publisher}</meta-data> </property> </class>

    </compass-core-mapping>

    3.Common Meta Data

    定義Compass配置文件(*.cfg.xml). Compass 自動(dòng)替換OSEM對(duì)應(yīng)的原數(shù)據(jù)(Common meta-data)標(biāo)簽的值. ${...} 很像ant.
    簡(jiǎn)單的可以理解為alias對(duì)應(yīng)為表,meta-data為column.具體闡述,請(qǐng)見(jiàn)compass reference(Chapter 3. Search Engine)

    <compass-core-meta-data>  

    <meta-data-group id="springside" displayName="SpringSide Book Meta Data">
    <description>SpringSide Meta Data</description> <uri>http://compass/springside</uri>

    <alias id="book" displayName="Book"> <description>Book alias</description> <uri>http://compass/springside/alias/book</uri> <name>book</name> </alias>

    <meta-data id="name" displayName="Name"> <uri>http://compass/springside/name</uri> <name>descn</name> </meta-data>

    <meta-data id="descn" displayName="Description"> <uri>http://compass/springside/descn</uri> <name>descn</name> </meta-data>

    <meta-data id="author" displayName="Author"> <description>The author of a book</description> <uri>http://compass/springside/author</uri> <name>author</name> </meta-data>

    <meta-data id="publisher" displayName="Publisher"> <description>The publisher of a book</description> <uri>http://compass/springside/publisher</uri> <name>publisher</name> </meta-data> </meta-data-group>

    </compass-core-meta-data>?

    4. 與spring,hibernate集成的實(shí)現(xiàn)

    4.1 hibernate 配置

    配置通透的pojo,class所應(yīng)對(duì)的hibernate配置hbm.xml,這里就不在熬述.具體可見(jiàn)springside源碼.

    4.2 spring配置

    hiberante中的sessionFactory,transactionManager相比大家也是輕車(chē)熟路了.這里還是代過(guò)(因?yàn)椴粻砍陡遒M(fèi)的問(wèn)題嗎^_^ ).compass已經(jīng)對(duì)對(duì)spring集成做了很好的封裝,讓我們的使用更加簡(jiǎn)單,我們可以不為compass編寫(xiě)一行代碼,就可以做完搜索引擎的檢索.下面談一下compass在spring中的簡(jiǎn)明配置.

    <beans>
    <bean id="compass" class="org.compass.spring.LocalCompassBean"> <property name="resourceLocations"> <list> <value>classpath:compass-springside.cmd.xml</value> <value>classpath:compass-springside.cpm.xml</value> </list>
    </property> <property name="compassSettings"> <props> <prop key="compass.engine.connection">file://${user.home}/springside/compass</prop> <prop key="compass.transaction.factory">org.compass.spring.transaction.SpringSyncTransactionFactory</prop> </props> </property>
    <property name="transactionManager" ref="transactionManager"/> </bean>

    <bean id="hibernateGpsDevice" class="org.compass.spring.device.hibernate.SpringHibernate3GpsDevice">
    <property name="name"> <value>hibernateDevice</value> </property> <property name="sessionFactory" ref="sessionFactory"/> </bean>

    <bean id="compassGps" class="org.compass.gps.impl.SingleCompassGps" init-method="start" destroy-method="stop">
    <property name="compass" ref="compass"/> <property name="gpsDevices"> <list> <ref local="hibernateGpsDevice"/> </list> </property> </bean> </beans>

    resourceLocations: 裝入compass的配置文件 *.cmd.xml,*.cpm.xml
    compass.engine.connection: 就是索引做存放的本機(jī)文件的路徑.搜索引擎也是根據(jù)本機(jī)文件索引,進(jìn)行查詢.
    hibernateGpsDevice: 注入sessionFactory.

    The Hibernate Gps Device:用Hibernate 3 事件系統(tǒng),提高支持Real Time Data Mirroring.經(jīng)Hiberante的數(shù)據(jù)改變自動(dòng)被反射到索引里面.

    4.3 web中的配置

    <bean id="indexBookController" class="org.compass.spring.web.mvc.CompassIndexController">
    <property name="compassGps"><ref bean="compassGps"/></property>
    <property name="indexView"><value>/admin/indexBook.jsp</value></property>
    <property name="indexResultsView"><value>/admin/indexBook.jsp</value></property>
    </bean>

    <bean id="searchBookController" class="org.compass.spring.web.mvc.CompassSearchController">
    <property name="compass"><ref bean="compass"/></property>
    <property name="searchView"><value>/home/top.jsp</value></property>
    <property name="searchResultsView"><value>/home/searchBook.jsp</value></property>
    <property name="pageSize"><value>3</value></property>
    </bean>

    調(diào)用到indexBookController,完成索引重建,調(diào)用到searchBookController,完成搜索.

    搜索頁(yè)面 :
    <INPUT type="text" size="20" name="query" class="search" value=""> 

    搜索結(jié)果:

    <div class="left"><c:if test="${! empty searchResults}">
    耗時(shí): <c:out value="${searchResults.searchTime}" />ms
    <c:if test="${empty searchResults.hits}">
    ,沒(méi)有找到符合條件的圖書(shū),請(qǐng)確保已在管理后臺(tái)建立索引。
    </c:if>
    <c:forEach var="hit" items="${searchResults.hits}">
    <c:choose>
    <c:when test="${hit.alias == 'book'}">
    <p><a
    href="<c:url value="/bookstore.do?action=bookDetail&id=${hit.data.id}"/>">
    《<c:out value="${hit.data.name}" />》 </a> <br />
    作者:<c:out value="${hit.data.author}" /> &nbsp; 出版社: <c:out
    value="${hit.data.publisher}" /></p>
    </c:when>
    </c:choose>
    </c:forEach>

    ...


    FeedBack:
    # re: Compass - springside 中的應(yīng)用
    2006-06-01 11:49 | 差沙
    哈哈,行呀,寫(xiě)得不錯(cuò)呀~~~~  回復(fù)  更多評(píng)論
      
    # re: Compass - springside 中的應(yīng)用
    2006-06-01 16:19 | 江南白衣
    再加個(gè)springside的連接就更妙了:)  回復(fù)  更多評(píng)論
      
    # re: Compass - springside 中的應(yīng)用
    2006-06-06 09:20 | Tin
    酷,compass關(guān)注很久了,看了很多教程,這個(gè)寫(xiě)的最親近。謝謝hellboys。  回復(fù)  更多評(píng)論
      
    # re: Compass - springside 中的應(yīng)用
    2006-06-07 14:53 | Compass
    詳細(xì)介紹一下cpm.xml和cmd.xml的配置就更更妙了  回復(fù)  更多評(píng)論
      
    # re: Compass - springside 中的應(yīng)用
    2006-06-27 21:47 | 小天蝎
    同意——“詳細(xì)介紹一下cpm.xml和cmd.xml的配置就更更妙了”,看了手冊(cè)還是不太明白,搜索了介紹也不多。  回復(fù)  更多評(píng)論
      
    # re: Compass - springside 中的應(yīng)用
    2006-07-04 18:34 | 老頭
    呵呵,不錯(cuò)啊,如果能夠給一個(gè)例子程序,那就棒極了,等你好消息啊,  回復(fù)  更多評(píng)論
      
    # re: Compass - springside 中的應(yīng)用
    2006-07-05 10:07 | 老頭
    你好,能不能把這個(gè)DEMO的源碼,給我一份,,我現(xiàn)在也在做搜索這塊,,有這么好的東西,想研究一下..謝謝了.我的郵箱地址為;jsrmade@126.com  回復(fù)  更多評(píng)論
      
    # re: Compass - springside 中的應(yīng)用
    2006-07-05 18:51 | 老頭
    大俠,,請(qǐng)解釋一下cpm.xml和cmd.xml的配置嘛,謝謝  回復(fù)  更多評(píng)論
      
    # re: Compass - springside 中的應(yīng)用
    2006-07-06 09:29 | 地獄男爵(hellboys)
    http://www.springside.org.cn
    國(guó)內(nèi)開(kāi)源項(xiàng)目,有完整的源碼和annotation和xml的配置和應(yīng)用  回復(fù)  更多評(píng)論
      
    # re: Compass - springside 中的應(yīng)用
    2006-09-11 10:41 | bidu go die
    正在看compass,麻煩問(wèn)
    <alias id="book" displayName="Book">
    <description>Book alias</description>
    <uri>http://compass/sample/library/alias/book</uri>
    <name>book</name>
    </alias>

    中的“uri”表示什么?為什么要這么寫(xiě)?  回復(fù)  更多評(píng)論
      
    # re: Compass - springside 中的應(yīng)用
    2006-09-23 16:12 | 下一道彩虹
    我用compass自己做過(guò)自動(dòng)建索引的.但最近,我想到手動(dòng)做索引.因?yàn)槲乙治鰁ntity.我可以拿到我想做索引的List<enitiy>而不是數(shù)據(jù)庫(kù)里的全部...此時(shí),我可以怎么做呢?拿到session之后.一個(gè)一個(gè)的add進(jìn)去么,然后compassGps.index()呢?可不可以貼點(diǎn)關(guān)于此的幾句code呢?不勝感激...  回復(fù)  更多評(píng)論
      
    # re: Compass - springside 中的應(yīng)用
    2006-09-29 16:17 | 下一道彩虹
    怎么說(shuō)呢?其實(shí)我的意思是.在entity上加標(biāo)注也好.為pojo寫(xiě)mapping文件也好.就一句compassGps.index()就完成索引的建立不是我想要的.因?yàn)槲业臄?shù)據(jù)非常多.有400萬(wàn)條記錄左右.于是我不知道.它為我索引到了什么地方.我想讓它建索引如我計(jì)劃的.每次索引1000條,不然.再好的機(jī)器也會(huì)out of mem?  回復(fù)  更多評(píng)論
      
    # re: Compass - springside 中的應(yīng)用
    2006-10-17 09:29 | 小白
    能把JAVA代碼全寫(xiě)出來(lái)就更好了
      回復(fù)  更多評(píng)論
      
    # re: Compass - springside 中的應(yīng)用[未登錄](méi)
    2007-03-12 14:06 | dawei
    寫(xiě)的好  回復(fù)  更多評(píng)論
      
    # re: Compass - springside 中的應(yīng)用
    2007-06-15 14:13 | 風(fēng)焰莊主
    搞什么啊,全部都是抄Springside上面的,還不注明出處  回復(fù)  更多評(píng)論
      
    # re: Compass - springside 中的應(yīng)用
    2007-08-01 20:28 | liuxiaolin425@163.com
    如果想深入研究,可以先研究一下lucene,compass只是一個(gè)java搜索引擎的framework,可能還有很多不能滿足我們的j2ee開(kāi)發(fā)的需要,其實(shí)lucene很易用,也易學(xué),因?yàn)槲覀儾挥藐P(guān)心起底層的數(shù)據(jù)結(jié)構(gòu),只要明白上層的實(shí)現(xiàn)機(jī)制,以及如何使用其提供的API就可以了,推薦大家看一下《lucene in Action》這本書(shū),目前已經(jīng)有中文版出版了。  回復(fù)  更多評(píng)論
      
    # re: Compass - springside 中的應(yīng)用
    2007-09-13 03:42 | jlive@live.com
    請(qǐng)教下copass支持cascade 嗎

    我現(xiàn)在寫(xiě)了個(gè)圖書(shū)搜索的功能,可是檢索出的compent是null;

      回復(fù)  更多評(píng)論
      
    # re: Compass - springside 中的應(yīng)用
    2007-09-16 14:51 | 沈先生
    我看到compass支持 all field的搜索,可是我用Luke查看索引,發(fā)現(xiàn)all字段對(duì)應(yīng)的Text和alias的的Text一樣?不知道如何才能讓all代表所有的字段?  回復(fù)  更多評(píng)論
      
    <2006年7月>
    2526272829301
    2345678
    9101112131415
    16171819202122
    23242526272829
    303112345

    常用鏈接

    隨筆分類

    隨筆檔案

    文章檔案

    相冊(cè)

    連接

    最新隨筆

    搜索

    •  

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 成人精品一区二区三区不卡免费看| 亚洲国产精品无码久久久久久曰 | 一区二区三区福利视频免费观看| 亚洲欧美国产精品专区久久| 亚洲精品GV天堂无码男同| 成人毛片免费观看视频大全| 国产免费一区二区三区不卡| 欧洲乱码伦视频免费国产| 亚洲综合无码一区二区痴汉| 亚洲人成在线影院| 亚洲香蕉网久久综合影视| 野花香高清视频在线观看免费| 深夜久久AAAAA级毛片免费看| 亚洲精品456人成在线| 精品无码一区二区三区亚洲桃色| 亚洲综合国产一区二区三区| 中文字幕免费在线观看| a级毛片免费全部播放| 和老外3p爽粗大免费视频| 91亚洲一区二区在线观看不卡 | 日韩欧美亚洲中文乱码| 国产亚洲视频在线播放| 国产精品国产午夜免费福利看 | 亚洲一区二区在线免费观看| 亚洲午夜福利AV一区二区无码| 亚洲av无码专区在线观看素人| 性感美女视频在线观看免费精品| 男女做羞羞的事视频免费观看无遮挡| 久久成人a毛片免费观看网站| 亚洲大码熟女在线观看| 久久亚洲国产成人影院| 亚洲熟妇AV日韩熟妇在线| 亚洲精品国产摄像头| 亚洲妇女无套内射精| 免费无码国产V片在线观看| 美女被免费视频网站| 日韩大片在线永久免费观看网站| 免费无码又爽又黄又刺激网站| 免费一级毛片在线播放放视频 | 国产免费观看网站| 亚洲视频在线免费看|