<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 官方網站: http://www.springside.org.cn

    網站: http://www.compassframework.org/

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

    2.Object/Search Engine Mapping - 配置XML

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

    2.1 XML配置

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

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

     <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 自動替換OSEM對應的原數據(Common meta-data)標簽的值. ${...} 很像ant.
    簡單的可以理解為alias對應為表,meta-data為column.具體闡述,請見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集成的實現

    4.1 hibernate 配置

    配置通透的pojo,class所應對的hibernate配置hbm.xml,這里就不在熬述.具體可見springside源碼.

    4.2 spring配置

    hiberante中的sessionFactory,transactionManager相比大家也是輕車熟路了.這里還是代過(因為不牽扯稿費的問題嗎^_^ ).compass已經對對spring集成做了很好的封裝,讓我們的使用更加簡單,我們可以不為compass編寫一行代碼,就可以做完搜索引擎的檢索.下面談一下compass在spring中的簡明配置.

    <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: 就是索引做存放的本機文件的路徑.搜索引擎也是根據本機文件索引,進行查詢.
    hibernateGpsDevice: 注入sessionFactory.

    The Hibernate Gps Device:用Hibernate 3 事件系統,提高支持Real Time Data Mirroring.經Hiberante的數據改變自動被反射到索引里面.

    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>

    調用到indexBookController,完成索引重建,調用到searchBookController,完成搜索.

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

    搜索結果:

    <div class="left"><c:if test="${! empty searchResults}">
    耗時: <c:out value="${searchResults.searchTime}" />ms
    <c:if test="${empty searchResults.hits}">
    ,沒有找到符合條件的圖書,請確保已在管理后臺建立索引。
    </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>

    ...

    posted on 2006-05-31 17:49 地獄男爵(hellboys) 閱讀(5419) 評論(18)  編輯  收藏 所屬分類: 編程語言(c/c++ java python sql ......)

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

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

    我現在寫了個圖書搜索的功能,可是檢索出的compent是null;

      回復  更多評論
      
    # re: Compass - springside 中的應用
    2007-09-16 14:51 | 沈先生
    我看到compass支持 all field的搜索,可是我用Luke查看索引,發現all字段對應的Text和alias的的Text一樣?不知道如何才能讓all代表所有的字段?  回復  更多評論
      
    <2006年5月>
    30123456
    78910111213
    14151617181920
    21222324252627
    28293031123
    45678910

    常用鏈接

    隨筆分類

    隨筆檔案

    文章檔案

    相冊

    連接

    最新隨筆

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲三区在线观看无套内射| 九九免费久久这里有精品23| 久久国产精品亚洲综合 | 免费国产黄线在线观看| 国产成人一区二区三区免费视频| 四虎影视在线永久免费看黄| 国产亚洲成AV人片在线观黄桃| 亚洲色大成网站WWW久久九九 | 久久久无码精品亚洲日韩蜜臀浪潮 | 女人18毛片特级一级免费视频 | 亚洲精品无码专区2| 免费少妇a级毛片| 亚洲AV综合色区无码另类小说 | 亚洲精品无码午夜福利中文字幕| 久久久久久亚洲精品成人| 亚洲熟妇AV一区二区三区浪潮 | 香蕉97超级碰碰碰免费公| 国产一区在线观看免费| 亚洲av日韩综合一区在线观看| 亚洲 暴爽 AV人人爽日日碰| 中文字幕乱码亚洲无线三区| 九九免费观看全部免费视频| 91免费国产自产地址入| 成年女人视频网站免费m| 日本免费一区二区三区最新| 亚洲国产午夜中文字幕精品黄网站 | 亚洲国产成人精品女人久久久| 国产性爱在线观看亚洲黄色一级片| 亚洲综合国产一区二区三区| 久久久久亚洲AV成人无码| 亚洲精品动漫免费二区| 日本视频免费高清一本18| 黄色成人免费网站| 国产成人毛片亚洲精品| 亚洲香蕉久久一区二区三区四区| 久久免费国产精品| 亚洲精品视频免费看| 亚洲国产精品一区二区三区久久| 亚洲成人网在线观看| 无码天堂va亚洲va在线va| 中文字幕乱码系列免费|